diff --git a/Projects/Foundations/Plugins/Data-Mines/Quasar.json b/Projects/Foundations/Plugins/Data-Mines/Quasar.json index 4d7c0e772..aeb4df05f 100644 --- a/Projects/Foundations/Plugins/Data-Mines/Quasar.json +++ b/Projects/Foundations/Plugins/Data-Mines/Quasar.json @@ -26,7 +26,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market Super Trend 14-3", "project": "Foundations", - "id": "e627c127-4205-4a8c-be47-3eca65ebee98", + "id": "88612b18-5907-44f2-81ea-1cc084223b01", "savedPayload": { "position": { "x": 19351.36460208024, @@ -48,13 +48,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "bb36f915-5eff-4135-8391-d135779455b7" + "id": "d4f7c5dd-ecd3-425f-9448-b9a8cacae38a" } } } ], "outputDatasetFolders": [], - "id": "5ceaa3d0-e47a-4ab9-9a1e-5b26dcd55e6f", + "id": "bffd7874-935a-49e5-8866-4ec9a1998cf8", "savedPayload": { "position": { "x": 19390.18745884562, @@ -87,7 +87,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "fb88d962-9f35-4659-8511-c68e508b43fb", + "id": "823aab90-e1f7-4ec1-a546-f1766b711c3d", "savedPayload": { "position": { "x": 19356.656029141755, @@ -109,7 +109,7 @@ "referenceParent": { "type": "Status Report", "name": "New Status Report", - "id": "3baf30da-dd2c-4578-be32-fcb5f42ee327" + "id": "58d50340-488e-410b-bb96-ab7a93feaa95" } } }, @@ -118,7 +118,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{ \n\"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "32eb21b9-8c0d-403f-9a23-ef46da72947e", + "id": "cad939ef-e22b-422c-a724-9011c511899e", "savedPayload": { "position": { "x": 19584.301742672513, @@ -150,7 +150,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "19014567-05f0-47c6-8d7b-cb269c984678", + "id": "dfd00c2d-455b-4fe1-aa14-7f3bee5cea43", "savedPayload": { "position": { "x": 19766.463650277088, @@ -178,7 +178,7 @@ } ], "dataMineDataDependencies": [], - "id": "c3070035-af81-4125-8eb0-7735616b7db3", + "id": "e6b1bf5a-3622-487e-ba8d-01646ca10040", "savedPayload": { "position": { "x": 19506.656029141755, @@ -205,7 +205,7 @@ "type": "Status Report", "name": "New Status Report", "project": "Foundations", - "id": "3baf30da-dd2c-4578-be32-fcb5f42ee327", + "id": "58d50340-488e-410b-bb96-ab7a93feaa95", "savedPayload": { "position": { "x": 19641.14234996696, @@ -230,7 +230,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "3c35db22-6288-400b-a0e1-1b6819ffa74c", + "id": "f3ca46e3-4685-41d1-8160-59522ea6e1f5", "savedPayload": { "position": { "x": 19718.78806349772, @@ -260,7 +260,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "7154ea0d-1d63-430c-b58f-3ba3025ef7b6", + "id": "b4d553e6-c81a-4e47-b4c4-76ff649b0904", "savedPayload": { "position": { "x": 19718.78806349772, @@ -281,7 +281,7 @@ "uiObject": {} } }, - "id": "14339df9-bda9-49b7-b393-58f50232b46c", + "id": "c1472e25-f68d-4699-a78e-f29c4d757029", "savedPayload": { "position": { "x": 19429.010315610998, @@ -318,7 +318,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily Super Trend 14-3", "project": "Foundations", - "id": "58ece60c-1c7b-4b7d-9cdb-d222852343ca", + "id": "76e06760-66cd-4480-aae6-1f4843018c20", "savedPayload": { "position": { "x": 19816.878281255034, @@ -340,13 +340,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "730efa3f-8cdd-4143-bc9a-99cc1292dd39" + "id": "a3f0fe17-3ec1-4e78-82da-72e21fd8d0a7" } } } ], "outputDatasetFolders": [], - "id": "d36594d3-494e-4cfc-94fd-86cb005858e6", + "id": "3d1c8557-a126-4d85-b38f-34107f59ed5e", "savedPayload": { "position": { "x": 19666.878281255034, @@ -379,7 +379,7 @@ "name": "", "config": "{ \n\"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "0d897404-79ba-42a8-8c2e-7ecc920f48e3", + "id": "5adeb6a3-786c-4823-9378-fa950c1212b7", "savedPayload": { "position": { "x": 19940.077612894875, @@ -401,7 +401,7 @@ "referenceParent": { "type": "Status Report", "name": "New Status Report", - "id": "7a7b481e-0dd6-45c8-a3cf-11710b6ead39" + "id": "f94097ad-b481-4e81-8642-fc7da1722137" } } }, @@ -410,7 +410,7 @@ "name": "", "config": "{ \n\"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "081bcc56-f973-428a-a269-023f366cd4a7", + "id": "6b9698a1-9c13-4ee0-9fe8-75880c69cbcf", "savedPayload": { "position": { "x": 20009.829690827457, @@ -441,7 +441,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{ \n\"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "e6d5c02b-a88a-4e38-ad3a-fd95dc4afd2a", + "id": "33155d68-ef53-4bd9-af6a-7f05151827a9", "savedPayload": { "position": { "x": 20056.760030339527, @@ -473,7 +473,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "1360702a-d26c-4d5e-a72d-e7419132f236", + "id": "73ee43bf-4118-401c-b147-60b4c1e1c329", "savedPayload": { "position": { "x": 20076.274762816738, @@ -501,7 +501,7 @@ } ], "dataMineDataDependencies": [], - "id": "0c165d2c-b089-4814-a5ac-663a55fc8164", + "id": "4bbd52d0-46bb-4377-8a45-324eb9e25b8c", "savedPayload": { "position": { "x": 19776.685902390367, @@ -528,7 +528,7 @@ "type": "Status Report", "name": "New Status Report", "project": "Foundations", - "id": "7a7b481e-0dd6-45c8-a3cf-11710b6ead39", + "id": "f94097ad-b481-4e81-8642-fc7da1722137", "savedPayload": { "position": { "x": 19666.878281255034, @@ -553,7 +553,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "df34f3c7-677c-4c08-b461-67d74a5923c4", + "id": "b2fe0251-11c4-4a9c-ae57-6c9807fd031f", "savedPayload": { "position": { "x": 19646.7820918227, @@ -583,7 +583,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "3f35a3cc-5020-4041-951e-1f9661be1e16", + "id": "09209761-188f-4306-a6bb-eae9b97eb536", "savedPayload": { "position": { "x": 19591.878281255034, @@ -604,7 +604,7 @@ "uiObject": {} } }, - "id": "6aaf165a-75cc-4687-a95e-7f7af8d0fbd2", + "id": "e685e7b5-f2b5-40c8-b52b-10f5b5e666d0", "savedPayload": { "position": { "x": 19516.878281255034, @@ -640,7 +640,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "bb36f915-5eff-4135-8391-d135779455b7", + "id": "d4f7c5dd-ecd3-425f-9448-b9a8cacae38a", "savedPayload": { "position": { "x": 19979.536086056793, @@ -666,7 +666,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "730efa3f-8cdd-4143-bc9a-99cc1292dd39", + "id": "a3f0fe17-3ec1-4e78-82da-72e21fd8d0a7", "savedPayload": { "position": { "x": 19936.029268673745, @@ -703,7 +703,7 @@ "name": "New Formula", "code": "record.current.begin", "project": "Foundations", - "id": "422dea88-b637-4151-89d6-080274a85f00", + "id": "312641ee-5d91-4a40-a63a-ae23e019ffd7", "savedPayload": { "position": { "x": 20616.586982824432, @@ -724,7 +724,7 @@ "uiObject": {} } }, - "id": "cb196c89-c068-4145-88a5-915934fe9ee0", + "id": "525a0851-d908-4513-a3af-4b1500faa31b", "savedPayload": { "position": { "x": 20392.28058273448, @@ -757,7 +757,7 @@ "name": "New Formula", "code": "record.current.end", "project": "Foundations", - "id": "8e3065bd-774a-4fec-be7f-226fa46bc348", + "id": "5b119809-249d-494b-91e9-e30148776ef2", "savedPayload": { "position": { "x": 20585.630931053798, @@ -778,7 +778,7 @@ "uiObject": {} } }, - "id": "cbc68e54-9502-4652-8a15-b261a05363e3", + "id": "0cc3307e-f363-40ae-8335-6544cd7f93c0", "savedPayload": { "position": { "x": 20371.64321488739, @@ -811,7 +811,7 @@ "name": "New Formula", "code": "variable.trueRange", "project": "Foundations", - "id": "39c1e96c-625e-47a2-a565-4837bb1a3ad3", + "id": "1368c193-74e1-4669-a0cc-05fa8907b74a", "savedPayload": { "position": { "x": 20456.94180933459, @@ -832,7 +832,7 @@ "uiObject": {} } }, - "id": "9d72f949-1f00-4590-bf88-d51bf7ad17d2", + "id": "2ccf582d-b373-4d16-b129-d9d7471dd611", "savedPayload": { "position": { "x": 20285.850467074582, @@ -865,7 +865,7 @@ "name": "New Formula", "code": "variable.atrNPeriod", "project": "Foundations", - "id": "9710cbaa-752e-4740-a225-a150b83c68b5", + "id": "405ff722-8da4-4e10-865f-d1c6deec1403", "savedPayload": { "position": { "x": 20250.111369878763, @@ -886,7 +886,7 @@ "uiObject": {} } }, - "id": "3020fe29-2530-4c58-be16-dac617044a8f", + "id": "f52176ca-2dcf-4a03-9d17-ec354277cfd8", "savedPayload": { "position": { "x": 20147.963507437365, @@ -919,7 +919,7 @@ "name": "New Formula", "code": "variable.uptrend", "project": "Foundations", - "id": "31477c47-0005-4a71-a9c0-47b0a1fb7169", + "id": "b438cda6-4be0-46c1-a5e0-44182cb13e4a", "savedPayload": { "position": { "x": 19996.627672170867, @@ -940,7 +940,7 @@ "uiObject": {} } }, - "id": "8a0ae089-1941-41c7-997d-6de133d6d6f6", + "id": "12cb954f-b63d-43bd-accc-bff7e7d7aca1", "savedPayload": { "position": { "x": 19978.9743756321, @@ -973,7 +973,7 @@ "name": "New Formula", "code": "variable.downtrend", "project": "Foundations", - "id": "4a0e7dcb-d8c2-40b5-a228-611aaa3686c8", + "id": "fcc1e74d-a738-4339-903c-0fafbd231b0a", "savedPayload": { "position": { "x": 19735.08131135148, @@ -994,7 +994,7 @@ "uiObject": {} } }, - "id": "dc6b5dbc-10df-441b-9d9a-74d69fcb9be7", + "id": "d1919365-778b-41eb-b491-710fb1d4f696", "savedPayload": { "position": { "x": 19804.610135085844, @@ -1027,7 +1027,7 @@ "name": "New Formula", "code": "variable.trend", "project": "Foundations", - "id": "834b0cef-070e-4e10-a54b-728e27c28d3c", + "id": "34e7b347-2bf1-432a-afe5-8c3d726eb07b", "savedPayload": { "position": { "x": 19505.290349931696, @@ -1048,7 +1048,7 @@ "uiObject": {} } }, - "id": "d8249de1-23ab-44de-928d-7da62ab26879", + "id": "e3130b87-448f-4f3f-aed4-59f45e888871", "savedPayload": { "position": { "x": 19651.416160805988, @@ -1072,7 +1072,7 @@ } } ], - "id": "4e8636c3-340a-456b-9c6d-bd9e000b5f9b", + "id": "254c64ff-9fa3-44f8-a0e8-232bda2f5b72", "savedPayload": { "position": { "x": 19943.66778255457, @@ -1108,7 +1108,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\n/* Big thanks to @rico4dev for providing the base start for ATR calcs\nI made some tweaks so now the way ATR is calculated matches TradingView :-)\n */\n\n// Set parameters to be used for ATR Period and Multiplier\nlet Nperiod = 14 // ATR Period\nlet multiplier = 3 // ATR Multiplier\n\n// Get Current and Previous Candle Data\nlet currCandle = record.current \nlet prevCandle = record.previous \n\n/* We need to build the price source\nFor current price there is no problem, we have data\nFor previous price we must check if exist\nSource price is defined as OHCL4*/\n\n// OHCL4 Source for current price\nvariable.currClose = currCandle.close\nvariable.ohcl4 = (currCandle.max + currCandle.min + currCandle.close + currCandle.open)/4\n\n// OHCL4 Source for previous candle price - make sure data exists\nif (prevCandle === undefined) {\n variable.prevClose = currCandle.close\n variable.prev_ohcl4 = 0 \n} else {\n variable.prevClose = prevCandle.close\n variable.prev_ohcl4 = (prevCandle.max + prevCandle.min + prevCandle.close + prevCandle.open)/4\n}\n\n/* Define variables we need and build functions */\n/* True Range and ATR - Average True Range */\n\nvariable.trueRange = calculateTR()\nvariable.atrNPeriod = calculateATR(Nperiod)\nvariable.prevAtrNperiod = variable.atrNPeriod // Store ATR value for calcs in RMA\n\n/* To keep lastNperiodTR array to a fixed length\nwe remove the first element of the array if length is > Nperiod */\n\nvariable.lastNPeriodTR.push(calculateTR())\nif (variable.lastNPeriodTR.length > Nperiod) {\n variable.lastNPeriodTR.splice(0, 1)\n}\n\n/* Calculate ATR */\nfunction calculateATR(length) {\n return calculateRMA(variable.trueRange, length)\n}\n\n/* Calculate True Range */\nfunction calculateTR() {\n let hl = currCandle.max - currCandle.min \n if (variable.prevClose === 0) { return hl } // Return High-Low when previous Close is 0 \n let hcp = Math.abs(currCandle.max - variable.prevClose)\n let lcp = Math.abs(currCandle.min - variable.prevClose) \n return Math.max(hl, hcp, lcp)\n}\n\n/* Calculate RMA */\nfunction calculateRMA(src, length) { \n if (src.length < length) { return 0 } // We check we have enough values to make the calcs. If not, set value to zero \n let alpha=1/length // It's a constant\n if (isNaN(variable.prevAtrNperiod)) {\n return 0 \n } else {\n return alpha * src + (1 - alpha) * variable.prevAtrNperiod \n } \n \n}\n\n// Build Up Trend function\n\nvariable.up = variable.ohcl4 - (multiplier * variable.atrNPeriod)\n\nif (variable.last2uptrend.length > 2) {\n variable.last2uptrend.splice(0, 1)\n}\n\nvariable.up1 = variable.last2uptrend[variable.last2uptrend.length - 1] // Previous Up Trend \n\nvariable.uptrend = calculateUpTrend()\n\nvariable.last2uptrend.push(variable.uptrend) \n\nfunction calculateUpTrend() {\n if (variable.prevClose > variable.up1) {\n return Math.max(variable.up, variable.up1)\n } else {\n return variable.up\n }\n}\n\n// Build Down Trend function\n\nvariable.dn = variable.ohcl4 + (multiplier * variable.atrNPeriod)\n\nif (variable.last2downtrend.length > 2) {\n variable.last2downtrend.splice(0, 1)\n}\n\nvariable.dn1 = variable.last2downtrend[variable.last2downtrend.length - 1] // Previous Down Trend\n\nvariable.downtrend = calculateDnTrend()\n\nvariable.last2downtrend.push(variable.downtrend) \n\nfunction calculateDnTrend() {\n if (variable.prevClose < variable.dn1) {\n return Math.min(variable.dn, variable.dn1)\n } else {\n return variable.dn\n }\n}\n\n\n// Build Trend function\n\nif (variable.last2Trend.length > 2) {\n variable.last2Trend.splice(0, 1)\n}\n\nvariable.prevTrend = variable.last2Trend[variable.last2Trend.length - 1]\n\nvariable.trend = calculateTrend()\n\nvariable.last2Trend.push(variable.trend)\n\nfunction calculateTrend() {\n\n if (variable.trend = -1 && variable.currClose > variable.dn1) {\n return 1\n }\n else if (variable.trend = 1 && variable.currClose < variable.up1) {\n return -1\n } \n else {\n return variable.prevTrend\n }\n}\n\n// End of code :-)", "project": "Foundations", - "id": "b4e1e365-b126-4eaa-8678-5b39760c72e7", + "id": "9650e427-6515-4892-9057-ed956a43dbb1", "savedPayload": { "position": { "x": 19499.95917987371, @@ -1129,7 +1129,7 @@ "uiObject": {} } }, - "id": "84d5c27c-fb3b-4711-8061-2c9ae1651013", + "id": "cdd0668f-a629-4d50-8256-f78e0fc38615", "savedPayload": { "position": { "x": 19488.1997277561, @@ -1161,7 +1161,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\n//// Arrays to store past data\nvariable.lastNPeriodTR = []\nvariable.last2uptrend = [0]\nvariable.last2downtrend = [0]\nvariable.last2Trend = [0]\n\n// Initialize trend\nvariable.trend = 1", "project": "Foundations", - "id": "53edd418-b761-4850-a131-5380c7a88a67", + "id": "1865c101-f53d-412e-b80b-0994fd04a266", "savedPayload": { "position": { "x": 19327.407206482792, @@ -1182,7 +1182,7 @@ "uiObject": {} } }, - "id": "499b842f-5c35-4a59-97ea-d950b6c9d3d1", + "id": "4b8aeaaf-9312-484f-91a1-05c729f7369b", "savedPayload": { "position": { "x": 19373.16507882882, @@ -1205,7 +1205,7 @@ } } }, - "id": "f1ff299c-0fb3-4f8f-a4d6-0c9aa687ca77", + "id": "271d5ac8-15db-4cbc-9cb0-d1be90208724", "savedPayload": { "position": { "x": 19464.680823520877, @@ -1228,7 +1228,7 @@ } } }, - "id": "97e7cee1-6331-4e55-83aa-19939c0cfa0b", + "id": "f37cf9b8-0e5e-482d-8d36-288a3d63e1a9", "savedPayload": { "position": { "x": 19535.07633278898, @@ -1252,20 +1252,20 @@ "referenceParent": { "type": "Plotter Module", "name": "Super Trend 14-3", - "id": "a9f2ed29-63d6-4cb9-829b-b58f1a2122ec" + "id": "d6113b66-22af-4567-ba02-ccc525f658c3" } } } ], - "id": "6f8b8e69-e0a0-4675-9c29-959857affa1a", + "id": "b35975d0-e7f0-4a24-bc5c-343a32bcae0e", "savedPayload": { "position": { - "x": 19366.878281255034, - "y": 9742.802375894946 + "x": 18651.878281255034, + "y": 9765.802375894946 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -1300,7 +1300,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market Super Trend 9-2", "project": "Foundations", - "id": "6cf57e9e-3b4f-4716-b239-f59f8cd88024", + "id": "bcb6885c-f42c-409e-807a-4432865580b7", "savedPayload": { "position": { "x": 19572.33550214046, @@ -1322,13 +1322,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "43372466-cde7-4f2c-9c7b-f2318e41aab6" + "id": "dab0142c-3057-4c79-af83-4edd25bded49" } } } ], "outputDatasetFolders": [], - "id": "49d4a473-7386-40d1-9556-b9c05a6cf585", + "id": "4341ccd7-7412-41c6-9df9-fb96e40241a1", "savedPayload": { "position": { "x": 19508.942762879356, @@ -1361,7 +1361,7 @@ "name": "", "config": "{ \n\"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "aaa1dfc4-ca1f-4386-a664-9f8efa7a99bc", + "id": "c5790593-9c93-4b75-ac81-9d501d362106", "savedPayload": { "position": { "x": 19743.39009020503, @@ -1383,7 +1383,7 @@ "referenceParent": { "type": "Status Report", "name": "New Status Report", - "id": "bba6d494-bec8-4ed4-9189-ae64a63013af" + "id": "c04d82d5-0392-49c0-954a-899c7bd3090c" } } }, @@ -1392,7 +1392,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{ \n\"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "c1d0f7cf-7cac-41c6-9277-a2406b269d09", + "id": "0cc9a1b8-157e-43fb-80a5-bdef711f3f33", "savedPayload": { "position": { "x": 19937.041250191647, @@ -1424,7 +1424,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "78ba6af1-164a-4613-9f29-faf213ada1bf", + "id": "ad23d7dd-6307-4b48-9d97-99918b958a48", "savedPayload": { "position": { "x": 19986.737962808613, @@ -1452,7 +1452,7 @@ } ], "dataMineDataDependencies": [], - "id": "045d569b-c241-4e00-92fb-a3facb93ce24", + "id": "651a7910-47f5-4866-980c-2c701397aa2b", "savedPayload": { "position": { "x": 19691.29563690495, @@ -1479,7 +1479,7 @@ "type": "Status Report", "name": "New Status Report", "project": "Foundations", - "id": "bba6d494-bec8-4ed4-9189-ae64a63013af", + "id": "c04d82d5-0392-49c0-954a-899c7bd3090c", "savedPayload": { "position": { "x": 19744.408433045777, @@ -1504,7 +1504,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "e5ff703f-2084-4606-a408-8132125b2525", + "id": "9f453cd5-033d-4ad0-8569-100a3d339858", "savedPayload": { "position": { "x": 19717.442359729248, @@ -1534,7 +1534,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "dde996b8-514b-45d4-a91b-56dbb23df1f5", + "id": "3bbb040b-32ed-48d4-bf41-43638fa7b447", "savedPayload": { "position": { "x": 19617.622954523566, @@ -1555,7 +1555,7 @@ "uiObject": {} } }, - "id": "ac2f1f79-13e4-458e-b754-b11196e9f764", + "id": "72da9dd9-d651-427b-b9c5-7a85af8e3425", "savedPayload": { "position": { "x": 19471.206000761806, @@ -1592,7 +1592,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily Super Trend 9-2", "project": "Foundations", - "id": "146d912f-521f-4967-a2ed-073a8b844506", + "id": "97cd0673-e1e5-4984-8f40-5e8d2f89b9e1", "savedPayload": { "position": { "x": 19956.108765796365, @@ -1614,13 +1614,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "bf3247b9-0a7e-479d-812c-b600933eb906" + "id": "e9ccf3a0-75e3-4bec-a6b2-83fadad44087" } } } ], "outputDatasetFolders": [], - "id": "7bd87617-f1fd-4605-b593-170a74665502", + "id": "9f5103ce-5a70-4b6a-95d0-cde3fb8197ea", "savedPayload": { "position": { "x": 19709.212002849177, @@ -1653,7 +1653,7 @@ "name": "", "config": "{ \n\"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "fad906db-47e3-415b-b3c8-4c5eb958b953", + "id": "44fac5ca-8670-4654-a75e-73f90786907f", "savedPayload": { "position": { "x": 20015.877315760554, @@ -1675,7 +1675,7 @@ "referenceParent": { "type": "Status Report", "name": "New Status Report", - "id": "ef2c12ae-e942-4e56-bd46-1547ea9d7487" + "id": "420d4f55-6a53-4447-a543-16c1eb4892e0" } } }, @@ -1684,7 +1684,7 @@ "name": "", "config": "{ \n\"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "c5c51793-181c-43be-a57c-0ffaa2f34df6", + "id": "584b2730-d980-4146-9041-1fc33c174ffc", "savedPayload": { "position": { "x": 20056.285379634406, @@ -1715,7 +1715,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{ \n\"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "835d9841-0104-44b6-b708-4d03046df9d0", + "id": "e3630860-fb3e-45d9-a720-468d3dd2e9fb", "savedPayload": { "position": { "x": 20068.536656666616, @@ -1747,7 +1747,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "39db08c0-c591-4c4b-a579-1f6769fb3de7", + "id": "7ac5ec41-ea4e-4952-8f2e-7ff8f52e62ed", "savedPayload": { "position": { "x": 20051.431906501602, @@ -1775,7 +1775,7 @@ } ], "dataMineDataDependencies": [], - "id": "21152189-8c09-44b6-a37d-ec715ff03bb2", + "id": "d4676566-2e12-4126-8080-d25d0ffa4dd1", "savedPayload": { "position": { "x": 19768.639459173948, @@ -1802,7 +1802,7 @@ "type": "Status Report", "name": "New Status Report", "project": "Foundations", - "id": "ef2c12ae-e942-4e56-bd46-1547ea9d7487", + "id": "420d4f55-6a53-4447-a543-16c1eb4892e0", "savedPayload": { "position": { "x": 19609.7879306385, @@ -1827,7 +1827,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "9277ce6d-966d-4674-b757-da4dadb46b0f", + "id": "f137a3de-9aab-418b-b1b1-0a7d36d9b345", "savedPayload": { "position": { "x": 19562.520215113112, @@ -1857,7 +1857,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "f30344f8-0baf-497a-88d4-abb1339b2603", + "id": "946c44ad-68d7-410c-b347-89a5690ba1e9", "savedPayload": { "position": { "x": 19490.784929594814, @@ -1878,7 +1878,7 @@ "uiObject": {} } }, - "id": "979dd3e5-b38c-499d-9923-86ace39c3cf5", + "id": "177d99c2-8c72-4f3a-babd-b8744056af60", "savedPayload": { "position": { "x": 19471.206000761806, @@ -1914,7 +1914,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n }", "project": "Foundations", - "id": "43372466-cde7-4f2c-9c7b-f2318e41aab6", + "id": "dab0142c-3057-4c79-af83-4edd25bded49", "savedPayload": { "position": { "x": 19803.816149751667, @@ -1940,7 +1940,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n }", "project": "Foundations", - "id": "bf3247b9-0a7e-479d-812c-b600933eb906", + "id": "e9ccf3a0-75e3-4bec-a6b2-83fadad44087", "savedPayload": { "position": { "x": 19658.501307321294, @@ -1977,7 +1977,7 @@ "name": "New Formula", "code": "record.current.begin", "project": "Foundations", - "id": "0f1ee380-ef45-4903-b86c-61f0b839978a", + "id": "dd665e54-db9f-4a84-a5fa-d53112e2ae56", "savedPayload": { "position": { "x": 19855.29717900401, @@ -1998,7 +1998,7 @@ "uiObject": {} } }, - "id": "dcf76de8-7fdd-4d26-9c52-75899b33e5d4", + "id": "44c3b73e-5e9d-4200-a40d-df95ba1d6f2e", "savedPayload": { "position": { "x": 19652.21549002529, @@ -2031,7 +2031,7 @@ "name": "New Formula", "code": "record.current.end", "project": "Foundations", - "id": "89d881ce-e72a-448d-bf99-d72afba77b21", + "id": "16aa1ed0-f296-49b6-bd61-74c96d751571", "savedPayload": { "position": { "x": 19697.715271360084, @@ -2052,7 +2052,7 @@ "uiObject": {} } }, - "id": "20cffcb1-3642-4929-b019-8f9abd4c83f0", + "id": "28c2199f-8403-4753-80f2-bf255eb08fc4", "savedPayload": { "position": { "x": 19547.16088492934, @@ -2085,7 +2085,7 @@ "name": "New Formula", "code": "variable.trueRange", "project": "Foundations", - "id": "aa04a3bd-dd75-4d2d-a43e-79bc38f84644", + "id": "95c4c96c-7093-40b9-bbc5-9802119586fc", "savedPayload": { "position": { "x": 19471.371742050647, @@ -2106,7 +2106,7 @@ "uiObject": {} } }, - "id": "de4b8fb0-13ca-47b2-b3f5-9b8475bdf5a5", + "id": "f8c4bb54-2b8c-4efd-a03f-443888154e5a", "savedPayload": { "position": { "x": 19396.26519872305, @@ -2139,7 +2139,7 @@ "name": "New Formula", "code": "variable.atrNPeriod", "project": "Foundations", - "id": "edeb705b-5072-4ff7-9b31-b34d2f3ee7a0", + "id": "d8408c2a-ca91-4e4a-9b0a-fcef57663ced", "savedPayload": { "position": { "x": 19210.725341603866, @@ -2160,7 +2160,7 @@ "uiObject": {} } }, - "id": "a2332bf6-4bb5-4e67-af56-44d5ac042bcb", + "id": "bc683c9d-d714-4b1f-a1f8-5a63f19b13b0", "savedPayload": { "position": { "x": 19222.500931758528, @@ -2193,7 +2193,7 @@ "name": "New Formula", "code": "variable.uptrend", "project": "Foundations", - "id": "f7efb46f-fa89-41fc-98a2-c09ca34a0e72", + "id": "786fbcee-416b-4f86-80f1-3aca8e6aff0a", "savedPayload": { "position": { "x": 18955.457121722255, @@ -2214,7 +2214,7 @@ "uiObject": {} } }, - "id": "b5d3fe1a-7ff7-4149-a211-e8287717f532", + "id": "c5b51b67-d9c7-4444-822e-8a74b8fd3218", "savedPayload": { "position": { "x": 19052.322118504122, @@ -2247,7 +2247,7 @@ "name": "New Formula", "code": "variable.downtrend", "project": "Foundations", - "id": "653b0eb4-b39c-4675-8f1d-c8dfd72725a3", + "id": "d031601f-315d-47e7-9498-84d6bcfd05ff", "savedPayload": { "position": { "x": 18744.429354870612, @@ -2268,7 +2268,7 @@ "uiObject": {} } }, - "id": "e549d9c4-0050-4ec5-bbf3-9495bdf5d254", + "id": "7589eea4-f433-4c07-9d10-f8f9dc901f32", "savedPayload": { "position": { "x": 18911.636940603024, @@ -2301,7 +2301,7 @@ "name": "New Formula", "code": "variable.trend", "project": "Foundations", - "id": "42443972-1014-4e6e-b013-511eb64ddbfd", + "id": "2f4b5e78-5f36-4dbd-8b0b-2649c630f65b", "savedPayload": { "position": { "x": 18609.76910558063, @@ -2322,7 +2322,7 @@ "uiObject": {} } }, - "id": "4fbdeb8f-0151-4fb0-aadd-4ae4f5d99c54", + "id": "c780d315-37a2-4ddb-83ce-b67c0c3b35c0", "savedPayload": { "position": { "x": 18821.863441076373, @@ -2346,7 +2346,7 @@ } } ], - "id": "e8968aca-d3fd-4fac-84f1-49635065708a", + "id": "879a21c3-9844-4207-a21b-c2a052da09eb", "savedPayload": { "position": { "x": 19436.86287172777, @@ -2382,7 +2382,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\n/* Big thanks to @rico4dev for providing the base start for ATR calcs\nI made some tweaks so now the way ATR is calculated matches TradingView :-)\n */\n\n// Set parameters to be used for ATR Period and Multiplier\nlet Nperiod = 9 // ATR Period\nlet multiplier = 2 // ATR Multiplier\n\n// Get Current and Previous Candle Data\nlet currCandle = record.current \nlet prevCandle = record.previous \n\n/* We need to build the price source\nFor current price there is no problem, we have data\nFor previous price we must check if exist\nSource price is defined as OHCL4*/\n\n// OHCL4 Source for current price\nvariable.currClose = currCandle.close\nvariable.ohcl4 = (currCandle.max + currCandle.min + currCandle.close + currCandle.open)/4\n\n// OHCL4 Source for previous candle price - make sure data exists\nif (prevCandle === undefined) {\n variable.prevClose = currCandle.close\n variable.prev_ohcl4 = 0 \n} else {\n variable.prevClose = prevCandle.close\n variable.prev_ohcl4 = (prevCandle.max + prevCandle.min + prevCandle.close + prevCandle.open)/4\n}\n\n/* Define variables we need and build functions */\n/* True Range and ATR - Average True Range */\n\nvariable.trueRange = calculateTR()\nvariable.atrNPeriod = calculateATR(Nperiod)\nvariable.prevAtrNperiod = variable.atrNPeriod // Store ATR value for calcs in RMA\n\n/* To keep lastNperiodTR array to a fixed length\nwe remove the first element of the array if length is > Nperiod */\n\nvariable.lastNPeriodTR.push(calculateTR())\nif (variable.lastNPeriodTR.length > Nperiod) {\n variable.lastNPeriodTR.splice(0, 1)\n}\n\n/* Calculate ATR */\nfunction calculateATR(length) {\n return calculateRMA(variable.trueRange, length)\n}\n\n/* Calculate True Range */\nfunction calculateTR() {\n let hl = currCandle.max - currCandle.min \n if (variable.prevClose === 0) { return hl } // Return High-Low when previous Close is 0 \n let hcp = Math.abs(currCandle.max - variable.prevClose)\n let lcp = Math.abs(currCandle.min - variable.prevClose) \n return Math.max(hl, hcp, lcp)\n}\n\n/* Calculate RMA */\nfunction calculateRMA(src, length) { \n if (src.length < length) { return 0 } // We check we have enough values to make the calcs. If not, set value to zero \n let alpha=1/length // It's a constant\n if (isNaN(variable.prevAtrNperiod)) {\n return 0 \n } else {\n return alpha * src + (1 - alpha) * variable.prevAtrNperiod \n } \n \n}\n\n// Build Up Trend function\n\nvariable.up = variable.ohcl4 - (multiplier * variable.atrNPeriod)\n\nif (variable.last2uptrend.length > 2) {\n variable.last2uptrend.splice(0, 1)\n}\n\nvariable.up1 = variable.last2uptrend[variable.last2uptrend.length - 1] // Previous Up Trend \n\nvariable.uptrend = calculateUpTrend()\n\nvariable.last2uptrend.push(variable.uptrend) \n\nfunction calculateUpTrend() {\n if (variable.prevClose > variable.up1) {\n return Math.max(variable.up, variable.up1)\n } else {\n return variable.up\n }\n}\n\n// Build Down Trend function\n\nvariable.dn = variable.ohcl4 + (multiplier * variable.atrNPeriod)\n\nif (variable.last2downtrend.length > 2) {\n variable.last2downtrend.splice(0, 1)\n}\n\nvariable.dn1 = variable.last2downtrend[variable.last2downtrend.length - 1] // Previous Down Trend\n\nvariable.downtrend = calculateDnTrend()\n\nvariable.last2downtrend.push(variable.downtrend) \n\nfunction calculateDnTrend() {\n if (variable.prevClose < variable.dn1) {\n return Math.min(variable.dn, variable.dn1)\n } else {\n return variable.dn\n }\n}\n\n\n// Build Trend function\n\nif (variable.last2Trend.length > 2) {\n variable.last2Trend.splice(0, 1)\n}\n\nvariable.prevTrend = variable.last2Trend[variable.last2Trend.length - 1]\n\nvariable.trend = calculateTrend()\n\nvariable.last2Trend.push(variable.trend)\n\nfunction calculateTrend() {\n\n if (variable.trend = -1 && variable.currClose > variable.dn1) {\n return 1\n }\n else if (variable.trend = 1 && variable.currClose < variable.up1) {\n return -1\n } \n else {\n return variable.prevTrend\n }\n}\n\n// End of code :-)", "project": "Foundations", - "id": "ecc6a50c-a5cb-4442-8407-63f233336ecf", + "id": "1304a212-3682-4373-b31a-3e317e015788", "savedPayload": { "position": { "x": 19035.27015261296, @@ -2403,7 +2403,7 @@ "uiObject": {} } }, - "id": "87ebf525-c7e6-4e2a-9cbd-a08b665e6f14", + "id": "4b6f3dd9-a9cd-4f64-9d7b-fdd3dc0ff073", "savedPayload": { "position": { "x": 19067.221878892153, @@ -2435,7 +2435,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\n//// Arrays to store past data\nvariable.lastNPeriodTR = []\nvariable.last2uptrend = [0]\nvariable.last2downtrend = [0]\nvariable.last2Trend = [0]\n\n// Initialize trend\nvariable.trend = 1", "project": "Foundations", - "id": "4a619440-a9cb-4cce-85bf-1b1450fd8c8f", + "id": "e5425de7-2945-47f8-81a4-58d50fcf0d00", "savedPayload": { "position": { "x": 18886.311481233886, @@ -2456,7 +2456,7 @@ "uiObject": {} } }, - "id": "064d96f0-8975-4ece-911c-8197be9556f7", + "id": "a456a5eb-6abf-401c-8b0a-ab6fb6d50dc9", "savedPayload": { "position": { "x": 18967.916097972768, @@ -2479,7 +2479,7 @@ } } }, - "id": "01d178e3-21b5-4e12-971c-d391ea41bad4", + "id": "27b07add-afd3-459b-94d3-f837370dd86c", "savedPayload": { "position": { "x": 19131.125331450534, @@ -2502,7 +2502,7 @@ } } }, - "id": "cfb3d176-9abb-447b-a5c0-618a36fed0d8", + "id": "00f3935a-79f1-4a88-990e-8d7ed8adb3ea", "savedPayload": { "position": { "x": 19366.24968557271, @@ -2526,20 +2526,20 @@ "referenceParent": { "type": "Plotter Module", "name": "Super Trend 9-2", - "id": "ad100396-8326-4202-ab7c-0904a44bdb91" + "id": "4244b21b-7d89-4e21-badf-91fa1d04cf83" } } } ], - "id": "a654b9b3-97e0-456f-9f65-8b6468d4cc31", + "id": "f83adb79-2d3b-4dbb-8477-1ad5a7e0e46b", "savedPayload": { "position": { - "x": 19348.650119381557, - "y": 9869.582026473588 + "x": 18635.705203602927, + "y": 9904.17189834041 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -2574,7 +2574,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market FastTrend", "project": "Foundations", - "id": "ff15fc06-05f9-4aac-af39-66f202be472d", + "id": "9b209440-ec7d-4864-9728-eacd9867e3d7", "savedPayload": { "position": { "x": 19780.08767759128, @@ -2596,13 +2596,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "b06f176d-9070-40d0-9bf0-9ad00d542818" + "id": "a84f43c6-bcfc-40bd-a775-3a2d1a7f33f0" } } } ], "outputDatasetFolders": [], - "id": "b1d5a6b6-a454-4ce9-be9b-28aa2743f15f", + "id": "f83024cb-d86a-4746-8eb0-539f656559f5", "savedPayload": { "position": { "x": 19528.486507207654, @@ -2635,7 +2635,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "414288ec-7202-464a-a55f-3af7af302177", + "id": "ac90a04d-f374-40d1-bbb8-e6a68936ecc3", "savedPayload": { "position": { "x": 20007.725961386637, @@ -2666,7 +2666,7 @@ "name": "FastTrend Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "e7edbc2d-16fc-44e0-8d34-1e0d76cbda98", + "id": "e05eba3c-00fc-4110-95a7-dfe9554a97e8", "savedPayload": { "position": { "x": 19887.14976905374, @@ -2688,7 +2688,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-FastTrend", - "id": "55cd0320-914e-4d4b-ba37-b20db77557f2" + "id": "53347cd4-877d-40d9-8b57-5943577c7435" } } } @@ -2698,7 +2698,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "c9aea2a5-0be1-42fd-acfb-468b8b6bf3c6", + "id": "8c0121a0-c0cc-431e-bd77-03c7cff4a984", "savedPayload": { "position": { "x": 19807.63317416257, @@ -2726,7 +2726,7 @@ } ], "dataMineDataDependencies": [], - "id": "d7d4ceab-8ca9-4d6b-9b2c-55e11a5d3039", + "id": "8bc6a348-f560-4df6-8ab4-c29f01758042", "savedPayload": { "position": { "x": 19726.268627463585, @@ -2753,7 +2753,7 @@ "type": "Status Report", "name": "Market-FastTrend", "project": "Foundations", - "id": "55cd0320-914e-4d4b-ba37-b20db77557f2", + "id": "53347cd4-877d-40d9-8b57-5943577c7435", "savedPayload": { "position": { "x": 19544.187294080537, @@ -2778,7 +2778,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "694842d2-44f7-41c9-9b75-dd855641dc82", + "id": "a42cfd09-36fb-44cf-a064-c35f33e2b147", "savedPayload": { "position": { "x": 19358.581192076283, @@ -2808,7 +2808,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "9c346b3d-6d5d-43ef-85b8-64d869f77c56", + "id": "c60a7d43-cd52-4320-92a4-f728779f3b20", "savedPayload": { "position": { "x": 19284.73573026047, @@ -2829,15 +2829,15 @@ "uiObject": {} } }, - "id": "83b53a1c-4805-455b-a1fb-4827affb6774", + "id": "0a79d0c3-77fa-4ce5-8f34-434b4d522ac2", "savedPayload": { "position": { - "x": 19429.010315610998, - "y": 9954.93441025091 + "x": 19735.158460716088, + "y": 9890.436363451125 }, "targetPosition": { - "x": 19129.010315610998, - "y": 9954.93441025091 + "x": 19295.442371029065, + "y": 9986.090743749965 }, "floatingObject": { "isPinned": false, @@ -2866,7 +2866,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily FastTrend", "project": "Foundations", - "id": "1658278d-302c-4a15-9456-3528df277643", + "id": "a37f0a33-3d9c-43e7-ab9b-1a4612f776a5", "savedPayload": { "position": { "x": 19584.882760326742, @@ -2888,13 +2888,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "20c75e6f-7ff9-49a7-9cc3-92871c4545c5" + "id": "52f838cc-982f-454e-9739-24c1b3cfb7a5" } } } ], "outputDatasetFolders": [], - "id": "481dec4f-d026-48af-a6bb-5d5fa5bb3353", + "id": "40b7f1d4-41e5-4e32-abd8-9139572f9311", "savedPayload": { "position": { "x": 19302.97497409097, @@ -2927,7 +2927,7 @@ "name": "FastTrend Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "665bcb1e-862c-4a5e-a8f7-1ba810d0121f", + "id": "7e827a95-833f-4ece-a3cd-07987e58ffc2", "savedPayload": { "position": { "x": 19490.05492679689, @@ -2949,7 +2949,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "3b69b4d1-ccf0-411f-80c4-a13efed53823" + "id": "12373ba2-40cb-40f1-b832-58d0b5fa70e2" } } }, @@ -2958,7 +2958,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "b18d03c0-8415-401b-ba7d-fb1c3e05027a", + "id": "8606490c-223b-4682-bc67-460186930804", "savedPayload": { "position": { "x": 19440.31634482799, @@ -2989,7 +2989,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "04aec22e-05b5-41a7-b718-67b3c57c08ca", + "id": "b9d5f2f7-062d-40cb-8737-b67e4d8d3697", "savedPayload": { "position": { "x": 19368.414893234174, @@ -3021,7 +3021,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "8be6e91d-0f88-4617-b85a-2701c7badb0e", + "id": "c0cdffca-b371-484c-9244-c29f3a25bce7", "savedPayload": { "position": { "x": 19281.388787064316, @@ -3049,7 +3049,7 @@ } ], "dataMineDataDependencies": [], - "id": "c5422876-ae0c-4338-b99d-070c8f1b8f1d", + "id": "2cba2356-3f03-4348-9e2e-b1cdd83fc61b", "savedPayload": { "position": { "x": 19213.903470761157, @@ -3076,7 +3076,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "3b69b4d1-ccf0-411f-80c4-a13efed53823", + "id": "12373ba2-40cb-40f1-b832-58d0b5fa70e2", "savedPayload": { "position": { "x": 19047.114414505235, @@ -3101,7 +3101,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "0fc8a15d-327c-43de-a991-9252e67f3576", + "id": "c1159abd-8495-4416-93f1-756406ad56e2", "savedPayload": { "position": { "x": 18969.764166356345, @@ -3131,7 +3131,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "e21156c8-815a-4cc1-baf7-a51c2d0af1a9", + "id": "a58eed44-4aa1-445d-a99f-b1208643a822", "savedPayload": { "position": { "x": 18906.160521387348, @@ -3152,15 +3152,15 @@ "uiObject": {} } }, - "id": "6bb51be1-568e-4f3f-8103-5cb37405af1a", + "id": "a499beda-f0d2-41a4-b9bb-79933677dc95", "savedPayload": { "position": { - "x": 19341.14234996696, - "y": 10167.066444606873 + "x": 19674.006460803095, + "y": 10229.379111604983 }, "targetPosition": { - "x": 19129.010315610998, - "y": 9954.93441025091 + "x": 19295.442371029065, + "y": 9986.090743749965 }, "floatingObject": { "isPinned": false, @@ -3188,15 +3188,15 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "b06f176d-9070-40d0-9bf0-9ad00d542818", + "id": "a84f43c6-bcfc-40bd-a775-3a2d1a7f33f0", "savedPayload": { "position": { - "x": 19556.985747943818, - "y": 10265.876762782184 + "x": 20021.877976454205, + "y": 10305.386179117335 }, "targetPosition": { - "x": 19129.010315610998, - "y": 10404.93441025091 + "x": 19438.923941477326, + "y": 10645.664878280497 }, "floatingObject": { "isPinned": false, @@ -3214,15 +3214,15 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "20c75e6f-7ff9-49a7-9cc3-92871c4545c5", + "id": "52f838cc-982f-454e-9739-24c1b3cfb7a5", "savedPayload": { "position": { - "x": 19393.513679142612, - "y": 10768.992057719635 + "x": 19942.69091942019, + "y": 11094.935211080596 }, "targetPosition": { - "x": 19129.010315610998, - "y": 10404.93441025091 + "x": 19438.923941477326, + "y": 10645.664878280497 }, "floatingObject": { "isPinned": false, @@ -3251,7 +3251,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "8a976a50-bab9-4670-a310-fb7751b4b8e0", + "id": "59bd9449-81a2-4369-9888-b09225ce2f7c", "savedPayload": { "position": { "x": 19237.99551025012, @@ -3272,7 +3272,7 @@ "uiObject": {} } }, - "id": "e6cf2c31-3df2-4e5f-9479-60cb4a32220f", + "id": "7e373673-32c9-4be2-9a75-9fbad9aed1f9", "savedPayload": { "position": { "x": 19069.41543027127, @@ -3305,7 +3305,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "ff8c3bd4-bb06-438e-b2cf-bdc9ed8a2459", + "id": "8c8c5b8e-75cd-49e3-ad54-26d2aa69931f", "savedPayload": { "position": { "x": 19065.336750320555, @@ -3326,7 +3326,7 @@ "uiObject": {} } }, - "id": "725e9d87-819a-4850-8d3f-2c1029067f99", + "id": "a37c6b8b-0f75-4415-ac1a-3b94b8406a7d", "savedPayload": { "position": { "x": 18954.30959031823, @@ -3359,7 +3359,7 @@ "name": "New Formula", "code": "variable.PositiveDisorder", "project": "Foundations", - "id": "d41b9d83-45ea-42b5-9a07-8b77c1c26829", + "id": "660a0ee4-c1af-49c4-90c8-c64be682c50e", "savedPayload": { "position": { "x": 18641.860842321767, @@ -3380,7 +3380,7 @@ "uiObject": {} } }, - "id": "432c9fdb-7d14-40e7-99e7-21a5a77f1977", + "id": "320b6cb1-e207-4a16-9dcf-c208e2d76006", "savedPayload": { "position": { "x": 18671.992318319037, @@ -3413,7 +3413,7 @@ "name": "New Formula", "code": "variable.NegativeDisorder", "project": "Foundations", - "id": "96763b3b-65e7-4705-9764-c2dfed7ab401", + "id": "c5386142-a059-4594-a02c-9aed999df838", "savedPayload": { "position": { "x": 18286.453782311102, @@ -3434,7 +3434,7 @@ "uiObject": {} } }, - "id": "39ecfa3a-9a3b-4b3e-a16d-5ee8b34eca23", + "id": "56239b25-701b-4917-8ef4-4c5a680a1881", "savedPayload": { "position": { "x": 18435.054278311927, @@ -3467,7 +3467,7 @@ "name": "New Formula", "code": "variable.FastTrend", "project": "Foundations", - "id": "97293bc7-15bd-47a5-bee4-c487cbe51e8c", + "id": "2e89863c-4d29-43d1-b0c4-1ca71458bcc9", "savedPayload": { "position": { "x": 18266.744335459403, @@ -3488,7 +3488,7 @@ "uiObject": {} } }, - "id": "83e0d3c5-4a62-477f-8b43-5daa3fffd069", + "id": "3f465891-22b0-4958-8609-846a9a3576fe", "savedPayload": { "position": { "x": 18421.91464707746, @@ -3521,7 +3521,7 @@ "name": "New Record Formula", "code": "variable.interTrend", "project": "Foundations", - "id": "c7cc1c1f-4e8f-442d-92cb-5bc711f9996c", + "id": "225f89d4-f551-473f-ad41-f3323d56ed69", "savedPayload": { "position": { "x": 18597.574117245447, @@ -3542,7 +3542,7 @@ "uiObject": {} } }, - "id": "690ec7ea-e602-4433-a8f0-8e22f4ff5bb6", + "id": "d3403a3b-83a2-4e9e-921b-cffef32d68f0", "savedPayload": { "position": { "x": 18642.467834934825, @@ -3566,15 +3566,15 @@ } } ], - "id": "0ccf7e17-88ea-4f67-9192-debc765102c8", + "id": "7990edae-dd0c-4f35-8aaa-80de12ad6ea9", "savedPayload": { "position": { - "x": 18732.255270313577, - "y": 10951.020881453998 + "x": 19031.51056117977, + "y": 11572.579430736396 }, "targetPosition": { - "x": 19129.010315610998, - "y": 10404.93441025091 + "x": 19438.923941477326, + "y": 10645.664878280497 }, "floatingObject": { "isPinned": false, @@ -3602,15 +3602,15 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\nlet FTLen = 10 // Channel length\nlet candle = record.current\nlet BIAS = 0.35 // biased limit value for Math.log2 (0)\n\n\nif (variable.previousEma5 === undefined) {\nvariable.previousEma5 = candle.close\n}\n\n// Calculate EMA5\nvariable.Ema5 = calculateEMA(5, candle.close, variable.previousEma5)\nvariable.previousEma5 = variable.Ema5\n\n\n// Build arrays Max, Min, Close, Open\n\nvariable.lastMax.push(candle.max) \nvariable.lastMin.push(candle.min)\nvariable.lastOpens.push(candle.open)\nvariable.lastCloses.push(candle.close)\nvariable.lastEMA5s.push(variable.Ema5)\n\n\n\n// Keep the array the correct size\n\nif (variable.lastMax.length > FTLen) {\n variable.lastMax.splice(0, 1)\n}\n\nif (variable.lastMin.length > FTLen) {\n variable.lastMin.splice(0, 1)\n}\n\nif (variable.lastOpens.length > FTLen) {\n variable.lastOpens.splice(0, 1)\n}\n\nif (variable.lastCloses.length > FTLen) {\n variable.lastCloses.splice(0, 1)\n}\n\nif (variable.lastEMA5s.length > FTLen) {\n variable.lastEMA5s.splice(0, 1)\n}\n// Calculate indicator values\n\n\n\n\nvariable.PositiveDisorder = CalPosEntropy () // Positive disorder\nvariable.NegativeDisorder = CalNegEntropy () // Negative disorder\nif(variable.PositiveDisorder === 0 && variable.NegativeDisorder === 0){\n\tvariable.FastTrend = 0\n}\nelse {\n\tvariable.FastTrend = ( variable.NegativeDisorder - variable.PositiveDisorder ) / ( variable.NegativeDisorder + variable.PositiveDisorder)\n}//calculation of the fast trend indicator\n\nvariable.lastFastTrend.push(variable.FastTrend)\nif(variable.lastFastTrend.length > 2 ) {\n\tvariable.lastFastTrend.splice(0,1)\n}\n\n//Determine the intermediate trend i.e. pullbacks\nif(variable.lastMax.length < FTLen) {\n\tvariable.interTrend = 0\n}\nelse {\n\tif(variable.lastFastTrend.length === 2){\n\t\tvariable.Slope = variable.lastFastTrend[1] - variable.lastFastTrend[0]\n\t\tif(variable.Slope > 0) {\n\t\t\t\tvariable.interTrend = 1\n\t\t}\n\t\t\tif(variable.Slope < 0) {\n\t\t\t\tvariable.interTrend = -1\n\t\t}\n\t\t\tif(variable.Slope = 0) {\n\t\t\t\tvariable.interTrend = 0\n\t\t}\n\t}\n\telse {\n\t\tvariable.interTrend = 0\n\t}\n}\n//functions\n//EMA5 calculation\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\nfunction CalPosEntropy ()\n\n\n{variable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\n\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var i = 0 ; i < FTLen ; i++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMax = variable.PosMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMin = variable.PosMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosOpen = variable.PosOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosClose = variable.PosClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.PosMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMax = (variable.PosMax / FTLen) * Math.log2(1/(variable.PosMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMax = BIAS\n\t}\n\tif (variable.PosMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMin = (variable.PosMin / FTLen) * Math.log2(1/(variable.PosMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMin = BIAS\n\t}\n\tif (variable.PosOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosOpen = (variable.PosOpen / FTLen) * Math.log2(1/(variable.PosOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosOpen = BIAS\n\t}\n\tif (variable.PosClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosClose = (variable.PosClose / FTLen) * Math.log2(1/(variable.PosClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosClose = BIAS\n\t}\n\t\n\tvariable.PosEnt = variable.EntPosClose + variable.EntPosMax + variable.EntPosMin + variable.EntPosOpen //sum on 4 entropies\n\t\n\treturn variable.PosEnt\n}\n\nfunction CalNegEntropy ()\n\n{variable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var j = 0 ; j < FTLen ; j++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMax = variable.NegMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMin = variable.NegMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegOpen = variable.NegOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegClose = variable.NegClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.NegMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMax = (variable.NegMax / FTLen) * Math.log2(1/(variable.NegMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMax = BIAS\n\t}\n\tif (variable.NegMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMin = (variable.NegMin / FTLen) * Math.log2(1/(variable.NegMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMin = BIAS\n\t}\n\tif (variable.NegOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegOpen = (variable.NegOpen / FTLen) * Math.log2(1/(variable.NegOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegOpen = BIAS\n\t}\n\tif (variable.NegClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegClose = (variable.NegClose / FTLen) * Math.log2(1/(variable.NegClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegClose = BIAS\n\t}\n\t\n\tvariable.NegEnt = variable.EntNegClose + variable.EntNegMax + variable.EntNegMin + variable.EntNegOpen //sum on 4 entropies\n\t\n\treturn variable.NegEnt\n}\n\n// End of code :-)", "project": "Foundations", - "id": "3c572d19-7e59-4e8d-875a-c7d553924184", + "id": "12a6a413-9290-4bcd-b207-0eec7d19366a", "savedPayload": { "position": { - "x": 18150.826857865413, - "y": 10382.827088867172 + "x": 17998.131717599168, + "y": 10925.153503470228 }, "targetPosition": { - "x": 18480.95167311307, - "y": 10312.656893216179 + "x": 18459.62873856219, + "y": 10717.044007910188 }, "floatingObject": { "isPinned": false, @@ -3623,15 +3623,15 @@ "uiObject": {} } }, - "id": "7d8508c0-13be-416c-b192-29b5e1c5fe9a", + "id": "6394adc2-50c2-4dd8-9ed2-c0762aba2fbc", "savedPayload": { "position": { - "x": 18480.95167311307, - "y": 10312.656893216179 + "x": 18459.62873856219, + "y": 10717.044007910188 }, "targetPosition": { - "x": 18701.03488327818, - "y": 10265.876762782184 + "x": 18767.29341920421, + "y": 10578.304344203494 }, "floatingObject": { "isPinned": false, @@ -3655,15 +3655,15 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.lastMax = []\nvariable.lastMin = []\nvariable.lastOpens = []\nvariable.lastCloses = []\nvariable.lastEMA5s = []\nvariable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\nvariable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\nvariable.lastFastTrend = []", "project": "Foundations", - "id": "fa8575a5-9402-4cf5-b656-2c5571ecba47", + "id": "06c819e6-723d-4818-96ee-486ca37d7144", "savedPayload": { "position": { - "x": 18324.64891720132, - "y": 9847.857798451148 + "x": 18082.332385195423, + "y": 10085.61535062883 }, "targetPosition": { - "x": 18550.480496847435, - "y": 10098.66917704977 + "x": 18493.309005600695, + "y": 10381.228746773628 }, "floatingObject": { "isPinned": false, @@ -3676,15 +3676,15 @@ "uiObject": {} } }, - "id": "53b9cc30-5643-412a-b62a-e9a87006a535", + "id": "059fc91c-904b-46fb-8e33-d4152d638fa6", "savedPayload": { "position": { - "x": 18550.480496847435, - "y": 10098.66917704977 + "x": 18493.309005600695, + "y": 10381.228746773628 }, "targetPosition": { - "x": 18701.03488327818, - "y": 10265.876762782184 + "x": 18767.29341920421, + "y": 10578.304344203494 }, "floatingObject": { "isPinned": false, @@ -3699,15 +3699,15 @@ } } }, - "id": "f567aaaa-4ceb-4bad-bc5d-e5dcb3ee7db1", + "id": "4cda259c-9058-45b9-ba26-cbaef4c45059", "savedPayload": { "position": { - "x": 18701.03488327818, - "y": 10265.876762782184 + "x": 18767.29341920421, + "y": 10578.304344203494 }, "targetPosition": { - "x": 19129.010315610998, - "y": 10404.93441025091 + "x": 19438.923941477326, + "y": 10645.664878280497 }, "floatingObject": { "isPinned": false, @@ -3722,15 +3722,15 @@ } } }, - "id": "c6a8b224-a78d-4ae1-a0f4-4128fab78cd1", + "id": "133164af-5c3e-404a-b082-da75722ec559", "savedPayload": { "position": { - "x": 19129.010315610998, - "y": 10404.93441025091 + "x": 19438.923941477326, + "y": 10645.664878280497 }, "targetPosition": { - "x": 19129.010315610998, - "y": 9954.93441025091 + "x": 19295.442371029065, + "y": 9986.090743749965 }, "floatingObject": { "isPinned": false, @@ -3746,20 +3746,20 @@ "referenceParent": { "type": "Plotter Module", "name": "FastTrend", - "id": "52606005-41a0-4a5d-8e95-869ccc898ab8" + "id": "b77e7f2c-9c08-42c1-951c-abc2cd7f051e" } } } ], - "id": "0b717c43-06cc-4312-89ec-542d5fb5e4ce", + "id": "5cd98813-5bf7-4081-a6ef-d84c4331c585", "savedPayload": { "position": { - "x": 19295.442371029065, - "y": 9986.090743749965 + "x": 18588.057865449082, + "y": 10035.081884015222 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -3794,7 +3794,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market Volume Energy", "project": "Foundations", - "id": "de7660ac-a14a-4db5-b9f7-0c3465e71d98", + "id": "be099fc2-a818-4b4e-a279-7376e8346706", "savedPayload": { "position": { "x": 19784.859174892692, @@ -3816,13 +3816,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "79a81c2a-f802-4c3e-835c-1604e633a903" + "id": "8ca976a6-053d-4655-84bf-9247daa740ea" } } } ], "outputDatasetFolders": [], - "id": "650c3d23-2245-4dc0-ab14-2fd779a263ba", + "id": "b00b73ba-37c1-48b9-bb2a-b0abdd2e925a", "savedPayload": { "position": { "x": 19546.85317280532, @@ -3855,7 +3855,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "a11ed6e3-df42-4afc-b6ca-db12485e462d", + "id": "7812b817-ab2e-4682-a92f-0aa32a7bee2f", "savedPayload": { "position": { "x": 19969.71880045299, @@ -3886,7 +3886,7 @@ "name": "Volume Energy Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "9c08d5b8-f4a3-4194-beee-171eb6b98212", + "id": "88de1afa-206b-485a-ae49-1cd7dc27a5b4", "savedPayload": { "position": { "x": 19958.079047314885, @@ -3908,7 +3908,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-Volume-Energy", - "id": "bfe166e7-6284-4a2b-9815-19cd5abbc186" + "id": "2757bbb0-23fd-4416-a79e-8e81c4545763" } } } @@ -3918,7 +3918,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "4abf67d7-0e05-497b-b8d0-019f1160c6b4", + "id": "d31895d3-8957-4bc7-b678-bf2dbff3c559", "savedPayload": { "position": { "x": 19976.229712538054, @@ -3948,7 +3948,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Market", "project": "Foundations", - "id": "e9640bb1-a31f-4ebf-a9d2-afb156f34852", + "id": "b1893630-de31-45b5-afad-10f61bae5f21", "savedPayload": { "position": { "x": 19909.877137867257, @@ -3976,7 +3976,7 @@ } ], "dataMineDataDependencies": [], - "id": "fb95a11b-70ce-4a5e-bfa3-014b6e5f6f7a", + "id": "ce474f50-25b6-44f2-9d7d-b5b107330625", "savedPayload": { "position": { "x": 19754.997358336164, @@ -4003,7 +4003,7 @@ "type": "Status Report", "name": "Market-Volume-Energy", "project": "Foundations", - "id": "bfe166e7-6284-4a2b-9815-19cd5abbc186", + "id": "2757bbb0-23fd-4416-a79e-8e81c4545763", "savedPayload": { "position": { "x": 19586.011030471334, @@ -4028,7 +4028,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "4e2aed83-a410-4010-982e-4a0f7e66661b", + "id": "e17cc215-d34f-4596-8988-e71bc6b5c761", "savedPayload": { "position": { "x": 19400.161385069256, @@ -4058,7 +4058,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "557ef814-fa54-4bc7-8297-8b6ecd428b10", + "id": "1045fc84-ea58-4bd4-8107-48f416abc53b", "savedPayload": { "position": { "x": 19328.426099550958, @@ -4079,7 +4079,7 @@ "uiObject": {} } }, - "id": "673598a3-591d-43e8-b8c0-c59b0a334da9", + "id": "38440679-ac5c-43c8-854d-0c65d412c229", "savedPayload": { "position": { "x": 19308.84717071795, @@ -4116,7 +4116,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily Volume Energy", "project": "Foundations", - "id": "12be6809-f36e-4cbe-a8f3-242d89f65009", + "id": "84fdbbb7-15ff-468d-a7bd-f4da1c1ceb07", "savedPayload": { "position": { "x": 19436.4935235257, @@ -4138,13 +4138,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "289ab327-3a3c-4b32-a952-2a5d29ab0df2" + "id": "209f033b-7675-4cc9-8643-c03c2be85d1d" } } } ], "outputDatasetFolders": [], - "id": "57ff99b0-4880-4b18-a3a6-5cff27e3b647", + "id": "4988c04d-e941-417a-8512-8b4bfa7eaf66", "savedPayload": { "position": { "x": 19176.685902390367, @@ -4177,7 +4177,7 @@ "name": "Volume Energy Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "092aac25-28d7-4d8b-9f0e-21a4f83a9eeb", + "id": "079b44ed-dd98-4cc1-84ed-f27659c328b2", "savedPayload": { "position": { "x": 19326.685902390367, @@ -4199,7 +4199,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "c4a06bca-8cc4-4f29-abd5-7cc223545940" + "id": "5690c882-fbc0-474b-bba4-3c81315211f8" } } }, @@ -4208,7 +4208,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "5516119f-001e-491b-ab6f-0bd08f635b88", + "id": "39f16ffc-6dcf-467b-9138-c69890d7243c", "savedPayload": { "position": { "x": 19279.010315610998, @@ -4239,7 +4239,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "cf2eb29c-7671-4285-a4b8-8bdbe1a3ce39", + "id": "27d35cf0-14d5-479e-ab23-6e57dd3b7171", "savedPayload": { "position": { "x": 19216.878281255034, @@ -4271,7 +4271,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "69504d93-599f-455e-a3a9-c8a651279aa9", + "id": "8760fd9b-b720-429c-93bd-50bb7d9faf4b", "savedPayload": { "position": { "x": 19144.52399478579, @@ -4301,7 +4301,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Daily", "project": "Foundations", - "id": "a6958fbb-89a1-49f7-bfca-97bcd1c5c979", + "id": "ca5adc45-5566-4bcc-83a0-68ac9bc3b283", "savedPayload": { "position": { "x": 19066.878281255034, @@ -4329,7 +4329,7 @@ } ], "dataMineDataDependencies": [], - "id": "9beda155-e65f-4762-8896-ca1acb9b7219", + "id": "010f8dda-c58e-4faa-9406-dc9e1f86ca95", "savedPayload": { "position": { "x": 19066.878281255034, @@ -4356,7 +4356,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "c4a06bca-8cc4-4f29-abd5-7cc223545940", + "id": "5690c882-fbc0-474b-bba4-3c81315211f8", "savedPayload": { "position": { "x": 18916.878281255034, @@ -4381,7 +4381,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "74b7108f-8faf-4d81-87a3-b4a62c3c2af3", + "id": "667c0fb9-3b47-4955-bd80-0ab41416ce40", "savedPayload": { "position": { "x": 18841.878281255034, @@ -4411,7 +4411,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "cb3bd21d-348e-4152-9d11-25fb9b4c7398", + "id": "87949417-44c4-4fe4-94cc-fc54a5d4d7d4", "savedPayload": { "position": { "x": 18786.974470687368, @@ -4432,7 +4432,7 @@ "uiObject": {} } }, - "id": "c78e46c9-739f-4ae7-a0ef-e73330ad921c", + "id": "f8b8a2be-4be0-47e4-ac5a-ec17279723b4", "savedPayload": { "position": { "x": 19146.488340674092, @@ -4468,7 +4468,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "79a81c2a-f802-4c3e-835c-1604e633a903", + "id": "8ca976a6-053d-4655-84bf-9247daa740ea", "savedPayload": { "position": { "x": 19308.08856658018, @@ -4494,7 +4494,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "289ab327-3a3c-4b32-a952-2a5d29ab0df2", + "id": "209f033b-7675-4cc9-8643-c03c2be85d1d", "savedPayload": { "position": { "x": 18964.526180135428, @@ -4531,7 +4531,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "9b8e73a5-2fb2-4864-9f96-9e0214a08702", + "id": "34d0cce2-43bc-484b-95c0-04cb4de8b8d7", "savedPayload": { "position": { "x": 18610.138000542327, @@ -4552,7 +4552,7 @@ "uiObject": {} } }, - "id": "c7b2407b-3eaf-465e-8648-e86139ac1c68", + "id": "04046533-0283-4d7b-b7c1-b3ffe655597b", "savedPayload": { "position": { "x": 18303.694413218134, @@ -4585,7 +4585,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "4349c9e6-e591-4787-859e-a17433e01a02", + "id": "288ed70e-f716-4709-9e67-1a1eb2df1a0b", "savedPayload": { "position": { "x": 16794.392018239647, @@ -4606,7 +4606,7 @@ "uiObject": {} } }, - "id": "d21b31a1-a038-4bbb-861c-fa16dbe35162", + "id": "864ad296-5236-4010-be95-50b25beaeccc", "savedPayload": { "position": { "x": 17395.821422066794, @@ -4639,7 +4639,7 @@ "name": "New Record Formula", "code": "variable.VolumeEnergy", "project": "Foundations", - "id": "e2df2579-d833-4f88-8710-9043de46d860", + "id": "85210e94-a87f-4968-8cf1-ffe602b441a2", "savedPayload": { "position": { "x": 17384.363651245556, @@ -4660,7 +4660,7 @@ "uiObject": {} } }, - "id": "7fa4f4af-659e-43ad-bd47-3411ffbeed86", + "id": "940f6a46-7843-4554-8770-255d1208bf82", "savedPayload": { "position": { "x": 17690.80723856975, @@ -4684,7 +4684,7 @@ } } ], - "id": "1a5d1533-f0c8-4f83-9e87-fe83741442db", + "id": "37374083-c7df-4b72-b4c8-49ad4eeb0657", "savedPayload": { "position": { "x": 18421.098333777398, @@ -4720,7 +4720,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\nlet candle = record.current\nlet volume = getElement('volumes', candle)\nlet Vl = 28 //period for slow moving average\nlet Vs = 14 //period for fast moving average\nlet m = 1 //kinetic weight\nlet k = 8 //potential weight\n\n//Array building\nvariable.VolShort.push(volume.sell + volume.buy)\nvariable.VolLong.push(volume.sell + volume.buy)\n\n// Keep the array the correct size\n\nif (variable.VolShort.length > Vs) {\n variable.VolShort.splice(0, 1)\n}\n\nif (variable.VolLong.length > Vl) {\n variable.VolLong.splice(0, 1)\n}\n\n//calculate volume mobile average\n\nvariable.VolAs = calVolAv(Vs, variable.VolShort) //fast\nvariable.VolAl = calVolAv(Vl, variable.VolLong) //slow\n\n//calculate volume oscillator and put it in an array prior to velocity calculation\nvariable.VOsc = (variable.VolAs - variable.VolAl) / variable.VolAl\nvariable.VOscA.push(variable.VOsc)\nif (variable.VOscA.length > 2) {\n variable.VOscA.splice(0, 1)\n}\n//calculate kinetic energy\n\nvariable.Speed = variable.VOscA[1] - variable.VOscA[0]\nvariable.Kinetic = kinetic()\n\n//calculate potential energy\nvariable.Potential = 1/2 * k * Math.pow(variable.VOsc,2)\n\n//calculate volume differential energy\nvariable.VDE = ((Math.pow(variable.Kinetic,2) - Math.pow(variable.Potential,2))/(Math.pow(variable.Kinetic,2) + Math.pow(variable.Potential,2)))\nif (isNaN(variable.VDE)) {\nvariable.VolumeEnergy = 0\n}\nelse\n{ \nvariable.VolumeEnergy = variable.VDE\n}//functions\n//Volume average\nfunction calVolAv(periods, array) {\n\tvariable.S = 0\n for(var i = 0 ; i < periods ; i++) {\n\t\tvariable.S = variable.S + array[i]\n\t}\n\treturn variable.S/periods\n}\n//kinetic energy\nfunction kinetic() {\n\tif (variable.VOscA.length < 2) { return 0 }\n\tvariable.Kin = 1/2 * m * Math.pow(variable.Speed,2)\n\treturn variable.Kin\n}\n// End of code :-)", "project": "Foundations", - "id": "58b60d03-f4b7-40b8-85a0-98c86b273238", + "id": "f5d5d35b-221e-46e5-9498-89c70dd43d34", "savedPayload": { "position": { "x": 17494.71513760907, @@ -4741,7 +4741,7 @@ "uiObject": {} } }, - "id": "d52486aa-d731-4f61-8bc1-6345b4be69a9", + "id": "eceb0950-89c4-4ed0-a6fa-2176dfde0130", "savedPayload": { "position": { "x": 17657.924371086836, @@ -4773,7 +4773,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.VolShort = []\nvariable.VolLong = []\nvariable.VolLong = []\nvariable.VOscA = []\n", "project": "Foundations", - "id": "ea55238d-baf8-43b8-b876-1593ea5c4e16", + "id": "8c119d0d-f05c-4a9c-b011-7dc1ff61ae3b", "savedPayload": { "position": { "x": 17672.726424210203, @@ -4794,7 +4794,7 @@ "uiObject": {} } }, - "id": "dd922c3e-7b5a-4a59-9ecc-b3dadce7f8a2", + "id": "08b75bb1-07b3-4144-99ef-cce7774cd33c", "savedPayload": { "position": { "x": 17768.608397697022, @@ -4817,7 +4817,7 @@ } } }, - "id": "9ba862c4-e76c-492a-ae22-ea03df5ed72a", + "id": "0fe4ca64-d483-4ba1-b70c-46e1eeba0054", "savedPayload": { "position": { "x": 17984.342838042365, @@ -4840,7 +4840,7 @@ } } }, - "id": "cca8acb7-3143-413b-9df5-835e751f2e2b", + "id": "cb180f87-f6d5-4e7d-870a-9e91fe25889e", "savedPayload": { "position": { "x": 18859.475766400272, @@ -4864,20 +4864,20 @@ "referenceParent": { "type": "Plotter Module", "name": "Volume Energy", - "id": "aabc483d-9f5d-4d2a-8412-38fd4ee0839a" + "id": "67560b6a-1e78-4d72-a52f-02f188a740fe" } } } ], - "id": "12d8797f-a2ca-4553-86a2-3b0a48ece2b5", + "id": "9eda88d6-543e-44d3-8480-3713e675703b", "savedPayload": { "position": { - "x": 19211.565611530412, - "y": 10082.889684354363 + "x": 18511.50494712642, + "y": 10151.474941706869 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -4912,7 +4912,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market Volume Buy Energy", "project": "Foundations", - "id": "26d983c9-c593-4804-9cba-c94c3c6fa59e", + "id": "ea173cc1-59c1-4819-8100-889baba2f438", "savedPayload": { "position": { "x": 18351.448073772845, @@ -4934,13 +4934,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "48396d44-c675-4aa0-b907-e40288ff4cc6" + "id": "57bfb473-8806-4eeb-9cb8-171229414eec" } } } ], "outputDatasetFolders": [], - "id": "b5c5c62b-d5ea-4973-bd68-f8cf14b78a1f", + "id": "d39f12a1-48d8-4228-a02b-82137d04b6e1", "savedPayload": { "position": { "x": 18358.587383036676, @@ -4973,7 +4973,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "31b9dd25-1710-4e0a-98b9-512a5b2f29cd", + "id": "c498aeda-02d0-4659-8ae1-35edef349f1e", "savedPayload": { "position": { "x": 18304.712707284598, @@ -5004,7 +5004,7 @@ "name": "Volume Energy BUY Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "fa1df741-2019-42c0-a591-0fbbc79d1c20", + "id": "8ceda683-f401-4400-a316-439adec8731c", "savedPayload": { "position": { "x": 18079.51182298934, @@ -5026,7 +5026,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-Volume-Energy", - "id": "5e5d8c01-e8b3-4db5-a28f-dd5b7e59123b" + "id": "90e237cb-0956-4718-9b0d-2c369e72425f" } } } @@ -5036,7 +5036,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "fb7f5f58-a900-4ead-a022-1becffb8e59a", + "id": "b30f2f4b-3338-44e2-8a2a-e1d0d42651a8", "savedPayload": { "position": { "x": 17960.773099303322, @@ -5066,7 +5066,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Market", "project": "Foundations", - "id": "89433933-d924-4925-a81d-7701351df8b4", + "id": "b6455949-6cb4-4a9e-9527-cc5ec2ea22bf", "savedPayload": { "position": { "x": 17907.252428607837, @@ -5094,7 +5094,7 @@ } ], "dataMineDataDependencies": [], - "id": "41dc4b4f-e6a0-4c55-86d3-6f68f235963b", + "id": "c8e78c30-a5ea-415d-8c90-e14c769453c5", "savedPayload": { "position": { "x": 18131.516178712627, @@ -5121,7 +5121,7 @@ "type": "Status Report", "name": "Market-Volume-Energy", "project": "Foundations", - "id": "5e5d8c01-e8b3-4db5-a28f-dd5b7e59123b", + "id": "90e237cb-0956-4718-9b0d-2c369e72425f", "savedPayload": { "position": { "x": 18102.42299543033, @@ -5146,7 +5146,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "3b65a500-cccc-4770-8c1c-ca663cc8a469", + "id": "057a3258-952f-443d-be06-268243cebc82", "savedPayload": { "position": { "x": 18215.769173096538, @@ -5176,7 +5176,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "c309f23c-f0ef-447b-88bb-aa0ef7f656b9", + "id": "27409f04-77bc-489a-b2eb-a877bcfc5b06", "savedPayload": { "position": { "x": 18237.644498497335, @@ -5197,7 +5197,7 @@ "uiObject": {} } }, - "id": "12de6488-7c82-40ed-b47b-61e32d8a68bd", + "id": "63372e98-c73c-477f-a7a5-60987cfb3010", "savedPayload": { "position": { "x": 18404.74624689907, @@ -5234,7 +5234,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily Volume Buy Energy", "project": "Foundations", - "id": "ec227bbb-a831-4a0b-95bd-4b460bef89b5", + "id": "aa9de0db-1434-49fb-b54a-6cecf818c4bb", "savedPayload": { "position": { "x": 17906.942074223298, @@ -5256,13 +5256,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "574b2c3e-b789-458d-b642-a83df592f923" + "id": "1997b60b-6b3a-4e39-acb5-5e05a4e24f42" } } } ], "outputDatasetFolders": [], - "id": "c79283d3-6c02-4e8a-b40f-1e09aed252c2", + "id": "22a81255-1efb-4d11-9ebe-cccabe95796f", "savedPayload": { "position": { "x": 18124.062285654818, @@ -5295,7 +5295,7 @@ "name": "Volume Energy BUY Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "a9a2a3f9-c924-426b-a403-bffd91d87e58", + "id": "6195c600-45bb-44b2-a5ec-53880e8e8d5d", "savedPayload": { "position": { "x": 31156.833379567517, @@ -5317,7 +5317,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "75bb36d2-641d-4321-b4d6-b3bb9b7d1c63" + "id": "af5a43e7-34d4-4be3-9335-4b8e9b9e1034" } } }, @@ -5326,7 +5326,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "61496135-4d4d-46b8-b215-d81e1177bd4b", + "id": "acfe39e6-002a-44df-9f08-70d453a17b68", "savedPayload": { "position": { "x": 31084.479093098274, @@ -5357,7 +5357,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "f4a5ce75-42d5-41ee-b519-997110d0f4f7", + "id": "28d6332e-dcd9-4671-90ca-149a65675cc0", "savedPayload": { "position": { "x": 31006.833379567517, @@ -5389,7 +5389,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "88d46e4f-068b-4be8-9a87-8f7734e8c654", + "id": "6f81072a-e3e3-4f4d-a6f4-163761ded01a", "savedPayload": { "position": { "x": 30929.18766603676, @@ -5419,7 +5419,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Daily", "project": "Foundations", - "id": "4edcce7b-c987-4859-ba38-a95520c4ec74", + "id": "312c9a9c-35d1-44ce-8c50-9d20bc9efd54", "savedPayload": { "position": { "x": 30856.833379567517, @@ -5447,7 +5447,7 @@ } ], "dataMineDataDependencies": [], - "id": "a7be7419-ba41-487e-8eaa-ae4acd864353", + "id": "dd953512-30da-49c3-a7dd-2e6337aee9f9", "savedPayload": { "position": { "x": 18049.639026589277, @@ -5474,7 +5474,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "75bb36d2-641d-4321-b4d6-b3bb9b7d1c63", + "id": "af5a43e7-34d4-4be3-9335-4b8e9b9e1034", "savedPayload": { "position": { "x": 18197.258551044164, @@ -5499,7 +5499,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "0c589bd5-7fad-474d-841f-5b86f008c138", + "id": "ba5501cc-ba7b-479b-aa07-3cf0a3819548", "savedPayload": { "position": { "x": 18237.67064536402, @@ -5529,7 +5529,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "02c1d1c4-dcda-4d72-9b01-42958a4a7c4b", + "id": "401e630d-3431-4554-8797-6685186dcd22", "savedPayload": { "position": { "x": 18305.818656759922, @@ -5550,7 +5550,7 @@ "uiObject": {} } }, - "id": "4150dc5b-1090-418a-9063-e166bd36d864", + "id": "54d12c1c-2601-4d74-9ce4-d6a44fd5504e", "savedPayload": { "position": { "x": 18316.878281255034, @@ -5586,7 +5586,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "48396d44-c675-4aa0-b907-e40288ff4cc6", + "id": "57bfb473-8806-4eeb-9cb8-171229414eec", "savedPayload": { "position": { "x": 18094.384504838294, @@ -5612,7 +5612,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "574b2c3e-b789-458d-b642-a83df592f923", + "id": "1997b60b-6b3a-4e39-acb5-5e05a4e24f42", "savedPayload": { "position": { "x": 17854.220476453276, @@ -5649,7 +5649,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "f04cff56-c982-48fe-8393-efc05d0a8959", + "id": "34737231-c9e1-450d-9f70-7a45fa728966", "savedPayload": { "position": { "x": 17256.97394512661, @@ -5670,7 +5670,7 @@ "uiObject": {} } }, - "id": "ac5abab1-4fcf-4ae4-b5a6-0e1e4bf8cfbb", + "id": "521ef338-b12e-4452-9f4a-2b34539bb0ab", "savedPayload": { "position": { "x": 17624.605293761753, @@ -5703,7 +5703,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "0ead6f5e-f70e-4b7d-b5ad-37310efe5ab9", + "id": "d889df82-3ee1-4fd8-a267-34c1a99e1c41", "savedPayload": { "position": { "x": 16644.08677047822, @@ -5724,7 +5724,7 @@ "uiObject": {} } }, - "id": "3490021f-262c-40ee-ba46-5a43cdad6dc2", + "id": "4291f5d9-8c1a-49aa-9044-bd99e233b9b1", "savedPayload": { "position": { "x": 17318.16170643756, @@ -5757,7 +5757,7 @@ "name": "New Record Formula", "code": "variable.VolumeEnergyB", "project": "Foundations", - "id": "6a361d21-90e8-4ef4-9e34-e23d58f40e42", + "id": "9ff42cbc-bc95-45dc-b592-4b811297d1d1", "savedPayload": { "position": { "x": 17379.34946774851, @@ -5778,7 +5778,7 @@ "uiObject": {} } }, - "id": "c9b454e2-9a79-4c4e-92e0-53e6c64b9657", + "id": "19dba934-a654-424c-8731-5d9d102ece66", "savedPayload": { "position": { "x": 17685.793055072703, @@ -5811,7 +5811,7 @@ "name": "New Record Formula", "code": "variable.TmpB", "project": "Foundations", - "id": "ccc52512-75f7-4015-940d-edf085aa92d5", + "id": "2a6b8609-7194-4858-a296-f07682bcbff2", "savedPayload": { "position": { "x": 19325.61590220033, @@ -5832,7 +5832,7 @@ "uiObject": {} } }, - "id": "9d9172b6-72c2-41a7-ae8d-d7d756da3fc8", + "id": "647e945b-80c4-4d8c-8004-26369bff5c4e", "savedPayload": { "position": { "x": 18359.86799103204, @@ -5865,7 +5865,7 @@ "name": "New Record Formula", "code": "variable.RelativeAgitation", "project": "Foundations", - "id": "83e6b6fa-3745-4ab9-871a-fc97bd3a70c8", + "id": "c9bc1f2c-befc-4dae-9b6c-1f6b03466705", "savedPayload": { "position": { "x": 19340.38651431557, @@ -5886,7 +5886,7 @@ "uiObject": {} } }, - "id": "6b8acd66-fe55-44d2-9b67-454fee4c6733", + "id": "c3d89526-bdd4-4f47-a9e7-a76ffed5d22a", "savedPayload": { "position": { "x": 18666.31157835623, @@ -5910,7 +5910,7 @@ } } ], - "id": "0c6d3d13-36c2-410b-9416-5e6049c2123e", + "id": "d3530bef-7072-4811-9a85-e05f55c6959c", "savedPayload": { "position": { "x": 17992.236642396896, @@ -5946,7 +5946,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\nlet candle = record.current\nlet volume = getElement('volumes', candle)\nlet Vl = 28 //period for slow moving average\nlet Vs = 14 //period for fast moving average\nlet m = 1 //kinetic weight\nlet k = 8 //potential weight\n\n//evaluation of sell and buy volume as per indicated in the master data mine\nlet totalVolume = volume.buy + volume.sell\nlet distanceOpenMax = candle.max - candle.open\nlet distanceOpenMin = candle.open - candle.min\nlet distanceMaxMin = candle.max - candle.min\n\nvariable.buyVolume = totalVolume * distanceOpenMax * 100 / distanceMaxMin\nvariable.sellVolume = totalVolume * distanceOpenMin * 100 / distanceMaxMin\n\n\n//Array building\nvariable.VolShort.push(volume.sell + volume.buy)\nvariable.VolLong.push(volume.sell + volume.buy)\nvariable.VolShortB.push(variable.buyVolume)\nvariable.VolLongB.push(variable.buyVolume)\nvariable.VolShortS.push(variable.sellVolume)\nvariable.VolLongS.push(variable.sellVolume)\n\n// Keep the array the correct size\n\nif (variable.VolShort.length > Vs) {\n variable.VolShort.splice(0, 1)\n}\n\nif (variable.VolLong.length > Vl) {\n variable.VolLong.splice(0, 1)\n}\n\nif (variable.VolShortB.length > Vs) {\n variable.VolShortB.splice(0, 1)\n}\n\nif (variable.VolLongB.length > Vl) {\n variable.VolLongB.splice(0, 1)\n}\n\nif (variable.VolShortS.length > Vs) {\n variable.VolShortS.splice(0, 1)\n}\n\nif (variable.VolLongS.length > Vl) {\n variable.VolLongS.splice(0, 1)\n}\n\n//calculate volume mobile average\n\nvariable.VolAsB = calVolAv(Vs, variable.VolShortB) //fast volume mobile average BUY\nvariable.VolAlB = calVolAv(Vl, variable.VolLongB) //slow\nvariable.VolAsS = calVolAv(Vs, variable.VolShortS) //fast volume mobile average SELL\nvariable.VolAlS = calVolAv(Vl, variable.VolLongS) //slow\n\n//calculate volume oscillator and put it in an array prior to velocity calculation\nvariable.VOscAB = (variable.VolAsB - variable.VolAlB) / variable.VolAlB\nvariable.VOscB.push(variable.VOscAB)\nif (variable.VOscB.length > 2) {\n variable.VOscB.splice(0, 1)\n}\n\nvariable.VOscAS = (variable.VolAsS - variable.VolAlS) / variable.VolAlS\nvariable.VOscS.push(variable.VOscAS)\nif (variable.VOscS.length > 2) {\n variable.VOscS.splice(0, 1)\n}\n\n//calculate kinetic energy\n\nvariable.SpeedS = variable.VOscS[1] - variable.VOscS[0]\nvariable.KineticS = kinetic(variable.VOscS,variable.SpeedS)\n\nvariable.SpeedB = variable.VOscB[1] - variable.VOscB[0]\nvariable.KineticB = kinetic(variable.VOscB,variable.SpeedB)\n\n//calculate potential energy\nvariable.PotentialB = 1/2 * k * Math.pow(variable.VOscAB,2)\nvariable.PotentialS = 1/2 * k * Math.pow(variable.VOscAS,2)\n\n//calculate volume differential energy\nvariable.VDEB = ((Math.pow(variable.KineticB,2) - Math.pow(variable.PotentialB,2))/(Math.pow(variable.KineticB,2) + Math.pow(variable.PotentialB,2)))\nif (isNaN(variable.VDEB)) {\nvariable.VolumeEnergyB = 0\n}\nelse\n{ \nvariable.VolumeEnergyB = variable.VDEB\n}\n//calculate Boltzman Temperature\nvariable.TEB = variable.PotentialB + variable.KineticB // total energy BUY\nvariable.TES = variable.PotentialS + variable.KineticS // total energy SELL\n\nvariable.BoltzmanTemperatureB = (variable.TEB - variable.TES) / (Math.log(variable.sellVolume / variable.buyVolume))\n\nif (typeof variable.TEB === \"undefined\" || typeof variable.TES === \"undefined\") {\nvariable.BTmp = 0\n}\nelse \n{\t\nvariable.BTmp = variable.BoltzmanTemperatureB \n}\n\nif (isNaN(variable.BTmp)) {\nvariable.TmpB = 0\n}\nelse \n{\n\tif (isFinite(variable.BTmp) === false) {\n\t\tvariable.TmpB = 25\n\t}\n\telse\n\t{\nvariable.TmpB = variable.BoltzmanTemperatureB\n}\n}\n\nvariable.BoltzmanTemperatureS = (variable.TES - variable.TEB) / (Math.log(variable.buyVolume / variable.sellVolume))\n\nif (typeof variable.TEB === \"undefined\" || typeof variable.TES === \"undefined\") {\nvariable.STmp = 0\n}\nelse \n{\t\nvariable.STmp = variable.BoltzmanTemperatureS \n}\n\nif (isNaN(variable.STmp)) {\nvariable.TmpS = 0\n}\nelse \n{\n\tif (isFinite(variable.STmp) === false) {\n\t\tvariable.TmpS = 25\n\t}\n\telse\n\t{\nvariable.TmpS = variable.BoltzmanTemperatureS\n}\n}\n\n//variable.RelativeAgitation = (Math.pow(10,18) * Math.sqrt(1/2 * (Math.pow(variable.TmpS-(variable.TmpS + variable.TmpB)/2,2) + Math.pow(variable.TmpB-(variable.TmpS + variable.TmpB)/2,2))))\nif(variable.TmpS > variable.TmpB) {\n\tvariable.RelativeAgitation = -1\n}\n\nif(variable.TmpS < variable.TmpB) {\n\tvariable.RelativeAgitation = 1\n}\n\nif(variable.TmpS === variable.TmpB) {\n\tvariable.RelativeAgitation = 0\n}\n//functions\n//Volume average\nfunction calVolAv(periods, array) {\n\tvariable.S = 0\n for(var i = 0 ; i < periods ; i++) {\n\t\tvariable.S = variable.S + array[i]\n\t}\n\treturn variable.S/periods\n}\n//kinetic energy\nfunction kinetic(VOSC,SPEED) {\n\tif (VOSC.length < 2) { return 0 }\n\tvariable.Kin = 1/2 * m * Math.pow(SPEED,2)\n\treturn variable.Kin\n}\n// End of code :-)", "project": "Foundations", - "id": "0a819586-1834-43e0-9dd8-4af94add36c8", + "id": "2cdbde6c-4cc1-4197-904c-3284df245098", "savedPayload": { "position": { "x": 18257.724795076763, @@ -5967,7 +5967,7 @@ "uiObject": {} } }, - "id": "f46afb2f-3ec8-42d1-9fe2-7fefbc225d70", + "id": "871ecd5f-72c2-4bac-94b4-ccc74b5aff07", "savedPayload": { "position": { "x": 18293.561590031295, @@ -5999,7 +5999,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.VolShort = []\nvariable.VolLong = []\nvariable.VOscA = []\nvariable.VolShortB = []\nvariable.VolLongB = []\nvariable.VolShortS = []\nvariable.VolLongS = []\nvariable.VOscB = []\nvariable.VOscS = []", "project": "Foundations", - "id": "7b6a55da-ebe3-40a1-b77d-e153c818795a", + "id": "26956ac8-3b71-49db-b370-456030b5311a", "savedPayload": { "position": { "x": 18459.74206256511, @@ -6020,7 +6020,7 @@ "uiObject": {} } }, - "id": "8ffb86eb-fe1e-4d0e-acd1-845765e7027a", + "id": "2548d532-7776-4ce9-b377-b1561e7a3694", "savedPayload": { "position": { "x": 18396.810023460126, @@ -6043,7 +6043,7 @@ } } }, - "id": "a95d9e05-a6b6-4e1c-a3d4-b4f594d4e000", + "id": "ea831d29-d23b-40f9-8dfb-4720361aa063", "savedPayload": { "position": { "x": 18333.877984355142, @@ -6066,7 +6066,7 @@ } } }, - "id": "bc31801c-ca9b-4ba4-b94f-ee882b74b7df", + "id": "e1b5459a-9f54-44d1-b741-6b4caf51f42b", "savedPayload": { "position": { "x": 18298.68022972109, @@ -6090,20 +6090,20 @@ "referenceParent": { "type": "Plotter Module", "name": "Volume Energy BUY", - "id": "5043a2c3-6e41-4fc4-8602-53f9b0c12f66" + "id": "8c029029-b2f1-443b-95d9-f79ac4ab9816" } } } ], - "id": "9fc3cb6b-64bb-442e-b1db-f8690d359911", + "id": "a04132ee-7e9d-4e99-948d-661dc30334eb", "savedPayload": { "position": { - "x": 19103.815037105884, - "y": 10152.13677380448 + "x": 18410.173436276706, + "y": 10247.076291547972 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -6138,7 +6138,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market On-Balance-Volume", "project": "Foundations", - "id": "e7a21053-75ab-43fb-88b3-1c4578665151", + "id": "c67edbe9-5f93-42fa-8e63-e030201cafa3", "savedPayload": { "position": { "x": 18560.037673960585, @@ -6160,13 +6160,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "1c35628c-8884-4ad4-ad1c-2f8cd90a577f" + "id": "b5942827-db5b-45d9-bc4c-56fbeffefa53" } } } ], "outputDatasetFolders": [], - "id": "9f746b05-70ac-4a78-9f25-9806c474d888", + "id": "515e06a6-65f9-4d11-a6ee-006ffb6b27e8", "savedPayload": { "position": { "x": 18482.391960429828, @@ -6199,7 +6199,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "91d413f7-1a84-41cb-b109-61e091a9f0dc", + "id": "0908911f-626b-478a-bc7f-a624c63fbaff", "savedPayload": { "position": { "x": 18571.471852575363, @@ -6230,7 +6230,7 @@ "name": "On-Balance-Volume Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "7477f4b8-4346-4cc3-8fb5-2780148d3c62", + "id": "5fcb11f8-9861-476e-8710-87ba87380798", "savedPayload": { "position": { "x": 18300.053266757597, @@ -6252,7 +6252,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-Volume-Energy", - "id": "0712f93b-7d3f-424b-88de-aedc65bffdfb" + "id": "47f7ee95-6229-4341-8af1-2e3bcfaea039" } } } @@ -6262,7 +6262,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "da18ef81-d27f-435e-9c84-7679e0b54b8c", + "id": "2611004d-a5b9-4d7a-8c2d-64275e6df640", "savedPayload": { "position": { "x": 18165.733893724555, @@ -6292,7 +6292,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Market", "project": "Foundations", - "id": "17ba7d35-815b-4cca-b09e-894f8993548a", + "id": "0563c629-c029-4001-8fb3-104a84c55f19", "savedPayload": { "position": { "x": 18078.222080641066, @@ -6320,7 +6320,7 @@ } ], "dataMineDataDependencies": [], - "id": "663dbdd0-dd82-494b-a496-3b39313fcebf", + "id": "72fd4b93-51d0-4b1f-8c04-f2127e455593", "savedPayload": { "position": { "x": 18288.277676602935, @@ -6347,7 +6347,7 @@ "type": "Status Report", "name": "Market-Volume-Energy", "project": "Foundations", - "id": "0712f93b-7d3f-424b-88de-aedc65bffdfb", + "id": "47f7ee95-6229-4341-8af1-2e3bcfaea039", "savedPayload": { "position": { "x": 18192.614212543107, @@ -6372,7 +6372,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "31943f5b-e6f7-4c67-8741-ebe8cb55ec53", + "id": "b4aa8390-c3de-497a-a540-80d5d31a4dd8", "savedPayload": { "position": { "x": 18259.85737295571, @@ -6402,7 +6402,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "edf63aea-733a-4606-a7d7-27bbd991555c", + "id": "ae9b383d-afde-4773-a81f-ed70ac2e2efa", "savedPayload": { "position": { "x": 18259.85737295571, @@ -6423,7 +6423,7 @@ "uiObject": {} } }, - "id": "15818da2-fb05-4cff-9218-088bf554ef7d", + "id": "ed7583d4-8739-4008-a019-354f0849b8c9", "savedPayload": { "position": { "x": 18916.878281255038, @@ -6460,7 +6460,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily On-Balance-Volume", "project": "Foundations", - "id": "1ca6b11b-a801-49eb-8dbf-cb5d1086a377", + "id": "cf3d3d2f-d779-45d6-865b-a2c692e5b6a6", "savedPayload": { "position": { "x": 18016.878281255034, @@ -6482,13 +6482,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "bfb1e9cb-dccc-49a8-be8a-a9dea2fb2f05" + "id": "198ac5c5-9739-42b8-90f2-9319e4091063" } } } ], "outputDatasetFolders": [], - "id": "ac4b782d-658d-410f-9beb-7f56f7efa759", + "id": "6906299f-fc46-40c8-a20e-b9df8b90d795", "savedPayload": { "position": { "x": 18166.878281255034, @@ -6521,7 +6521,7 @@ "name": "On-Balance-Volume Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "d96b8012-73b4-4a1d-978f-d4b3c553f52f", + "id": "8628f7a3-553b-490a-b813-589c2530d2ff", "savedPayload": { "position": { "x": 17907.0706601197, @@ -6543,7 +6543,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "59087782-80cc-4d50-b429-6dd11acdcfdb" + "id": "04102d7b-55fc-4490-93b0-9db02e60d0cd" } } }, @@ -6552,7 +6552,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "902ca167-ee50-42f8-8013-43aa6947df2e", + "id": "9c5a2045-e476-400e-bc01-9a5d887337dd", "savedPayload": { "position": { "x": 17844.938625763738, @@ -6583,7 +6583,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "b43dd623-1617-4fc4-860d-11b557743937", + "id": "32b1e308-39d7-4f4f-aca8-e46106c63d0e", "savedPayload": { "position": { "x": 17797.26303898437, @@ -6615,7 +6615,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "9c61b43b-d878-49cc-99ca-20688f7b8c56", + "id": "9062f8f2-45eb-49e5-8ad6-22e5b5c40222", "savedPayload": { "position": { "x": 17767.29291223298, @@ -6645,7 +6645,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Daily", "project": "Foundations", - "id": "b6c18783-80c0-4cec-bb5b-e39802f43407", + "id": "18fb5de6-ab83-4dec-883c-2f5b51185754", "savedPayload": { "position": { "x": 17757.0706601197, @@ -6673,7 +6673,7 @@ } ], "dataMineDataDependencies": [], - "id": "ef762303-5a56-4c2d-a91e-53c4891e8d0f", + "id": "b1c0f120-6541-48e2-85a5-b954c1eaff74", "savedPayload": { "position": { "x": 18057.0706601197, @@ -6700,7 +6700,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "59087782-80cc-4d50-b429-6dd11acdcfdb", + "id": "04102d7b-55fc-4490-93b0-9db02e60d0cd", "savedPayload": { "position": { "x": 18166.878281255034, @@ -6725,7 +6725,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "f1139c18-3d91-4e75-aa3a-6b1fd270b650", + "id": "34861e24-786d-4af0-8f61-6f9f8d8f923e", "savedPayload": { "position": { "x": 18186.974470687368, @@ -6755,7 +6755,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "902f1c34-870b-405a-b4ac-74c522b855e4", + "id": "cc530d85-2419-4a60-b068-97ab1b94b4c9", "savedPayload": { "position": { "x": 18241.878281255034, @@ -6776,7 +6776,7 @@ "uiObject": {} } }, - "id": "bb5ba9ca-4edd-4fad-87ed-4e6121a974f4", + "id": "bc3dd2ac-754f-4140-ad91-c5319b2a8553", "savedPayload": { "position": { "x": 18687.268221835984, @@ -6812,7 +6812,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "1c35628c-8884-4ad4-ad1c-2f8cd90a577f", + "id": "b5942827-db5b-45d9-bc4c-56fbeffefa53", "savedPayload": { "position": { "x": 18678.57908366401, @@ -6838,7 +6838,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "bfb1e9cb-dccc-49a8-be8a-a9dea2fb2f05", + "id": "198ac5c5-9739-42b8-90f2-9319e4091063", "savedPayload": { "position": { "x": 18151.20310779325, @@ -6875,7 +6875,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "3c6d873c-3ef2-4060-91b7-c973d1a17424", + "id": "c7f09f77-f9f3-4031-a107-067465a9bdd7", "savedPayload": { "position": { "x": 18739.95631520561, @@ -6896,7 +6896,7 @@ "uiObject": {} } }, - "id": "29c3a0b0-7bcf-40ab-89ca-5d98f6f2412b", + "id": "afa5d580-4c6e-4815-8ff9-bf005dfbc061", "savedPayload": { "position": { "x": 18226.68228842559, @@ -6929,7 +6929,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "67057e20-ea42-4143-925b-182607da2ee3", + "id": "ede0528d-8334-48c5-9a80-7c75a5e2f544", "savedPayload": { "position": { "x": 17819.32804087816, @@ -6950,7 +6950,7 @@ "uiObject": {} } }, - "id": "ddda40ad-00fa-40dc-8fbd-a86cf86316b6", + "id": "492bafa5-a91d-41ff-8060-f3ab2cc8b28f", "savedPayload": { "position": { "x": 17766.368151261864, @@ -6983,7 +6983,7 @@ "name": "New Record Formula", "code": "variable.OBV", "project": "Foundations", - "id": "8d72d68d-0ea7-41a8-bee7-aca6442b0ad2", + "id": "c7da6cc0-dbbe-4f87-b31a-622b58b78fae", "savedPayload": { "position": { "x": 16836.65339639982, @@ -7004,7 +7004,7 @@ "uiObject": {} } }, - "id": "bbb0eb00-8630-4c75-a2b2-b429ee18c820", + "id": "aef0bd48-d744-4f29-a995-7d83ae7e77cf", "savedPayload": { "position": { "x": 17275.030829022693, @@ -7037,7 +7037,7 @@ "name": "New Record Formula", "code": "variable.VEma20", "project": "Foundations", - "id": "796ff9d7-793a-46cb-944b-853587b1d829", + "id": "8bdbfdf9-cab9-495c-8ee4-e086099ae859", "savedPayload": { "position": { "x": 16367.569861105843, @@ -7058,7 +7058,7 @@ "uiObject": {} } }, - "id": "07615f03-4039-4e99-9fce-35756046fa24", + "id": "fd16c293-203d-43e0-98fb-67b3ab0be226", "savedPayload": { "position": { "x": 17040.489061375705, @@ -7091,7 +7091,7 @@ "name": "New Record Formula", "code": "variable.VEma10", "project": "Foundations", - "id": "4e19d953-8aaa-45f4-9315-a9325e6b4e1e", + "id": "0c869db5-fe39-4f82-a1c3-1babc420b693", "savedPayload": { "position": { "x": 16686.860208085523, @@ -7112,7 +7112,7 @@ "uiObject": {} } }, - "id": "03649e53-949c-439f-8588-7df94bd8886e", + "id": "699a49c7-0f8e-42b2-8d1f-570f0fd4ce2a", "savedPayload": { "position": { "x": 17200.134234865545, @@ -7145,7 +7145,7 @@ "name": "New Record Formula", "code": "variable.VEma5", "project": "Foundations", - "id": "cdaec430-3309-45df-b37f-cebe56c994b4", + "id": "8c478412-b308-4a26-866b-153c82021ba5", "savedPayload": { "position": { "x": 17607.48848241298, @@ -7166,7 +7166,7 @@ "uiObject": {} } }, - "id": "dc49218d-7027-428f-88ef-a3fc7cd27831", + "id": "9bf19d24-00fe-4a32-9ca2-d43affd292e9", "savedPayload": { "position": { "x": 17660.448372029274, @@ -7199,7 +7199,7 @@ "name": "New Record Formula", "code": "variable.VEma3", "project": "Foundations", - "id": "950d1854-95aa-47f7-b58f-a134b99e2d0a", + "id": "bc5c2c6f-9ce8-47bc-8723-dd8789970d67", "savedPayload": { "position": { "x": 18590.163126891315, @@ -7220,7 +7220,7 @@ "uiObject": {} } }, - "id": "8c05ed6c-0fa6-44b6-a8fd-8b8b3f7d040c", + "id": "ed25e455-9f5a-4b1a-b152-946e3b905a9e", "savedPayload": { "position": { "x": 18151.78569426844, @@ -7244,7 +7244,7 @@ } } ], - "id": "c1a87d64-d49c-4300-98c8-31ed1001d46f", + "id": "b11d91c2-5420-41d1-bc5f-51ec31bd9f7e", "savedPayload": { "position": { "x": 17713.408261645567, @@ -7280,7 +7280,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\nlet candle = record.current\nlet volume = getElement('volumes', candle)\nlet K = 2\n\nvariable.CDL = candle.close\n\nif (variable.previousVEma20 === undefined) {\nvariable.previousVEma20 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma3 === undefined) {\nvariable.previousVEma3 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma5 === undefined) {\nvariable.previousVEma5 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma10 === undefined) {\nvariable.previousVEma10 = volume.buy + volume.sell\n}\n\n//build candle close array\nvariable.cdClose.push(candle.close)\n\n//keep the array to the right size\nif (variable.cdClose.length > K) {\n variable.cdClose.splice(0, 1)\n}\n\n//manage Previous On balance value\n\nif (variable.previousOnBV === undefined) {\n\tvariable.previousOnBV = 0\n}\n\n//procedure for OBV calculation\nif (variable.cdClose[1] > variable.cdClose[0]) {\n\tvariable.OnBV = variable.previousOnBV + volume.buy + volume.sell\n\t}\n\nif (variable.cdClose[1] === variable.cdClose[0]) {\n\tvariable.OnBV = variable.previousOnBV\n\t}\nif (variable.cdClose[1] < variable.cdClose[0]) {\n\tvariable.OnBV = variable.previousOnBV - (volume.buy + volume.sell)\n\t}\n\n//manage NaN and undefined\nif (variable.OnBV === undefined || isNaN(variable.OnBV)) {\n\tvariable.OBV = 0\n\tvariable.previousOnBV = 0\n}\nelse {\n\tvariable.OBV = variable.OnBV\n\tvariable.previousOnBV = variable.OnBV\n}\n\n// Calculate On balance Volume EMA3\nvariable.VEma3 = calculateVEMA(3, variable.OBV, variable.previousVEma3)\nvariable.previousVEma3 = variable.VEma3\n\n// Calculate On balance Volume EMA5\nvariable.VEma5 = calculateVEMA(5, variable.OBV, variable.previousVEma5)\nvariable.previousVEma5 = variable.VEma5\n\n// Calculate On balance Volume EMA10\nvariable.VEma10 = calculateVEMA(10, variable.OBV, variable.previousVEma10)\nvariable.previousVEma10 = variable.VEma10\n\n// Calculate On balance Volume EMA20\nvariable.VEma20 = calculateVEMA(20, variable.OBV, variable.previousVEma20)\nvariable.previousVEma20 = variable.VEma20\n\n\n//On Balance Volume EMA calculation\nfunction calculateVEMA(periods, price, previousVEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousVEMA * (1-k)\n}\n\n\n\n// End of code :-)", "project": "Foundations", - "id": "70b23c2f-9666-4e69-abd1-197beaf04817", + "id": "6b8b6abd-d4e5-463c-a11d-aac79441dad7", "savedPayload": { "position": { "x": 16944.182619638243, @@ -7301,7 +7301,7 @@ "uiObject": {} } }, - "id": "2d025455-3b08-4108-974d-3e803b3754ee", + "id": "a83f0c3e-33ba-41cc-99c5-d6ebc80c5c3a", "savedPayload": { "position": { "x": 17169.105517757744, @@ -7333,7 +7333,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.cdClose = []", "project": "Foundations", - "id": "0c6b718d-8a69-430b-ac4a-f32e53c68c25", + "id": "4f17d3ff-e189-44f4-a923-c12249770420", "savedPayload": { "position": { "x": 17463.87471691237, @@ -7354,7 +7354,7 @@ "uiObject": {} } }, - "id": "b2fb0933-b98f-491d-910d-da2742cdb2a0", + "id": "bd603d0f-0d7c-4e89-bd47-d0bfdfe04159", "savedPayload": { "position": { "x": 17511.590592938333, @@ -7377,7 +7377,7 @@ } } }, - "id": "0bd35758-4c47-4e5e-a3e3-63ef91afb7d6", + "id": "3ec8d4d9-0dc9-4a14-b87a-e7fb127b319f", "savedPayload": { "position": { "x": 17618.951313996746, @@ -7400,7 +7400,7 @@ } } }, - "id": "1f23a767-512c-4135-9c06-ac0a083ab801", + "id": "8c15dbd4-bd8f-4775-81f1-bd51aa5a42e6", "savedPayload": { "position": { "x": 18386.32746191543, @@ -7424,20 +7424,20 @@ "referenceParent": { "type": "Plotter Module", "name": "On-Balance-Volume", - "id": "ad643274-f92e-4280-8e70-80709e9c9a80" + "id": "69514669-a3f1-49a0-a4f0-f4a932481b99" } } } ], - "id": "e3a3f8d6-3a24-4d94-bc08-832a4de79e29", + "id": "6b3af8c4-824b-4d0d-a754-c01db4d3ad3f", "savedPayload": { "position": { - "x": 18980.919958478014, - "y": 10188.222024741366 + "x": 18289.52614087853, + "y": 10316.732040023111 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -7472,7 +7472,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market Volume Oscillators", "project": "Foundations", - "id": "ace2e37f-b440-46f6-8c29-67aa330bdfbf", + "id": "0f10e7a6-094f-41ed-9ed1-0fb12a789691", "savedPayload": { "position": { "x": 17828.40629395643, @@ -7494,13 +7494,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "7bc7d164-8f9b-4279-9025-c3a2a3ba773b" + "id": "a4596090-5117-429a-9461-452c01c04d77" } } } ], "outputDatasetFolders": [], - "id": "68d983aa-0992-4f11-9755-e53bb0929ba7", + "id": "077f70fc-4091-4af0-98e7-3b745651b278", "savedPayload": { "position": { "x": 17835.54560322026, @@ -7533,7 +7533,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "1fcfdd73-227f-4438-a914-a4297e2e2a6e", + "id": "630ff103-9245-4498-b015-74f4dc065d8d", "savedPayload": { "position": { "x": 17781.67092746818, @@ -7564,7 +7564,7 @@ "name": "Volume Oscillators Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "2c3aa8bd-1ec9-4ee4-9e8f-766daf543c6c", + "id": "ecff45ad-6084-4643-b786-5f6dbe2c641b", "savedPayload": { "position": { "x": 17556.470043172925, @@ -7586,7 +7586,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-Volume-Energy", - "id": "1ca25b99-42c9-40e3-8505-c74985a86f7d" + "id": "5cbb9237-6ff8-4e39-8207-b00396f1c9e3" } } } @@ -7596,7 +7596,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "6d5cf20c-d932-4d7e-b631-5050c29e61e1", + "id": "75d0aaa1-9dd4-4b1f-94c9-ec97cd8cadba", "savedPayload": { "position": { "x": 17437.731319486906, @@ -7626,7 +7626,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Market", "project": "Foundations", - "id": "1be8fc5c-f1d5-42d3-a5de-7fe4dc293427", + "id": "eec41a22-d401-474a-993a-941c29116137", "savedPayload": { "position": { "x": 17384.21064879142, @@ -7654,7 +7654,7 @@ } ], "dataMineDataDependencies": [], - "id": "91cf2a51-5000-4472-99af-123ecaa6795b", + "id": "7ccd50a5-c966-4706-bd95-6ee54c8464f4", "savedPayload": { "position": { "x": 17608.47439889621, @@ -7681,7 +7681,7 @@ "type": "Status Report", "name": "Market-Volume-Energy", "project": "Foundations", - "id": "1ca25b99-42c9-40e3-8505-c74985a86f7d", + "id": "5cbb9237-6ff8-4e39-8207-b00396f1c9e3", "savedPayload": { "position": { "x": 17579.381215613914, @@ -7706,7 +7706,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "24d971ff-8423-4161-89fa-c7a25920528d", + "id": "b627f836-a5fd-46c5-b978-d30d9016a7e8", "savedPayload": { "position": { "x": 17692.72739328012, @@ -7736,7 +7736,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "ce76bb8a-c65f-4bab-890e-972057353fa8", + "id": "5b540263-fa46-47be-a90a-35aae04a82cc", "savedPayload": { "position": { "x": 17714.60271868092, @@ -7757,7 +7757,7 @@ "uiObject": {} } }, - "id": "57d645a2-241b-484d-acea-4cf93bdecac2", + "id": "c5b9d1c8-c9d8-482a-ab4a-25ed78a50096", "savedPayload": { "position": { "x": 19122.511553962162, @@ -7794,7 +7794,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily Volume Oscillators", "project": "Foundations", - "id": "26562c73-bc4a-463c-b175-8e2f6cbaecea", + "id": "6de9cf28-8f68-4216-8fdd-8a541c6a2cbd", "savedPayload": { "position": { "x": 17383.90029440688, @@ -7816,13 +7816,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "20e87622-5225-4976-9cc9-43705efd490a" + "id": "6e763e6a-e9d5-4b08-a0bb-5b268dcbe8bf" } } } ], "outputDatasetFolders": [], - "id": "285c6b11-515c-4bdb-8755-cefb38a1af61", + "id": "8d7fddc3-152a-4c1e-93f4-e7e7c4a0e067", "savedPayload": { "position": { "x": 17601.0205058384, @@ -7855,7 +7855,7 @@ "name": "Volume Oscillators Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "ab97bb94-843f-4b68-87b9-05fa85e4bc5b", + "id": "e4a3df6f-37fa-4660-b447-daab767adac9", "savedPayload": { "position": { "x": 30633.7915997511, @@ -7877,7 +7877,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "22750e4f-3623-4774-a6f0-10e664309481" + "id": "9896d6be-69f7-4627-9f38-4f9d7e0d82b7" } } }, @@ -7886,7 +7886,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "9ec8dbb4-c730-455c-97f6-5fd682f31511", + "id": "db13ceb3-f5c1-44be-a9c8-277d9b248eca", "savedPayload": { "position": { "x": 30561.43731328186, @@ -7917,7 +7917,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "8bd91232-a4b8-4d25-b7cc-ca4d460d8f04", + "id": "473cdf00-9975-4711-b8f0-5fbeeb7f503e", "savedPayload": { "position": { "x": 30483.7915997511, @@ -7949,7 +7949,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "72be0eca-7e86-48b7-b9ae-2e79310cd319", + "id": "9f7bf938-9cb9-4a22-8e19-d1a79fdc8645", "savedPayload": { "position": { "x": 30406.145886220344, @@ -7979,7 +7979,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Daily", "project": "Foundations", - "id": "87fd8fd8-a0cf-4dbf-9213-71dfa5616cf2", + "id": "81eade3e-b655-47be-9988-82fa9462f451", "savedPayload": { "position": { "x": 30333.7915997511, @@ -8007,7 +8007,7 @@ } ], "dataMineDataDependencies": [], - "id": "db09864a-9b80-4ee0-a987-3d51d4d14074", + "id": "8b76df8c-1986-40d5-a725-988ac2ce29f8", "savedPayload": { "position": { "x": 17526.59724677286, @@ -8034,7 +8034,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "22750e4f-3623-4774-a6f0-10e664309481", + "id": "9896d6be-69f7-4627-9f38-4f9d7e0d82b7", "savedPayload": { "position": { "x": 17674.216771227748, @@ -8059,7 +8059,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "515d08bc-6e48-49eb-89b9-2dbae4691804", + "id": "96175855-d7e8-4d3e-bfd5-7b210371ba9c", "savedPayload": { "position": { "x": 17714.628865547606, @@ -8089,7 +8089,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "dc5a7b10-f4fd-4b3e-86dd-50069117db3a", + "id": "3c04c413-b31d-4527-8269-ef1ecf53d9f5", "savedPayload": { "position": { "x": 17782.776876943506, @@ -8110,7 +8110,7 @@ "uiObject": {} } }, - "id": "75a71b52-15a1-4ab7-972b-aa250ae575a1", + "id": "3b614cd6-4b3b-4c1e-99ef-20962aae940c", "savedPayload": { "position": { "x": 18788.794926809074, @@ -8146,7 +8146,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "7bc7d164-8f9b-4279-9025-c3a2a3ba773b", + "id": "a4596090-5117-429a-9461-452c01c04d77", "savedPayload": { "position": { "x": 18864.16751652396, @@ -8172,7 +8172,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "20e87622-5225-4976-9cc9-43705efd490a", + "id": "6e763e6a-e9d5-4b08-a0bb-5b268dcbe8bf", "savedPayload": { "position": { "x": 18113.07296282163, @@ -8209,7 +8209,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "72b7339d-3df2-460c-af5f-d1146245f141", + "id": "dd5c8d6b-5a33-448d-8e41-eb55766138bf", "savedPayload": { "position": { "x": 18878.1558691733, @@ -8230,7 +8230,7 @@ "uiObject": {} } }, - "id": "fa1af83c-40bf-4db6-b82d-cd9cf0b9e338", + "id": "4f34ef63-3730-457c-81ac-932d5135ebb1", "savedPayload": { "position": { "x": 18116.124175848927, @@ -8263,7 +8263,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "c532294c-74b7-49a8-8f62-cd46161b60f7", + "id": "b58e2548-4636-4a81-a033-9070089f788e", "savedPayload": { "position": { "x": 16961.39830140619, @@ -8284,7 +8284,7 @@ "uiObject": {} } }, - "id": "b3c44a7e-1dbf-456a-b088-692eb1336acc", + "id": "c4278f31-9b83-44cb-a33b-1e82782b2143", "savedPayload": { "position": { "x": 17157.74539196537, @@ -8317,7 +8317,7 @@ "name": "New Record Formula", "code": "variable.osc", "project": "Foundations", - "id": "72e1da45-8714-4dc8-bde1-4e8906475402", + "id": "a76cc5e2-2bc3-429f-8c0c-a26beafa932f", "savedPayload": { "position": { "x": 15437.334914757434, @@ -8338,7 +8338,7 @@ "uiObject": {} } }, - "id": "cb53d8cb-1ec0-4817-b0f7-479bbb427826", + "id": "eb1b24b1-179e-4a2a-8d9a-888a728103bf", "savedPayload": { "position": { "x": 16395.713698640993, @@ -8371,7 +8371,7 @@ "name": "New Record Formula", "code": "variable.oscb", "project": "Foundations", - "id": "dae4b6ba-49d5-4eb9-9002-b7df6f5a22db", + "id": "60522d63-141a-4004-883f-597c6834b5a0", "savedPayload": { "position": { "x": 15830.029095875803, @@ -8392,7 +8392,7 @@ "uiObject": {} } }, - "id": "2800e549-aa52-4b42-887d-fd0d7f3b5c20", + "id": "bda07cc7-f56e-422d-aed9-910f5807b335", "savedPayload": { "position": { "x": 16592.06078920018, @@ -8425,7 +8425,7 @@ "name": "New Record Formula", "code": "variable.oscs", "project": "Foundations", - "id": "5299d723-b8a2-47c4-be8a-d9b58460595f", + "id": "94017147-6385-4f5b-bf29-cc7ba3ab9d46", "savedPayload": { "position": { "x": 17746.786663642917, @@ -8446,7 +8446,7 @@ "uiObject": {} } }, - "id": "137d7d52-0d8e-42d6-98ed-2dfaf33b5bea", + "id": "d56e740c-5ced-4d1f-bead-12670bc9c64d", "savedPayload": { "position": { "x": 17550.439573083735, @@ -8470,7 +8470,7 @@ } } ], - "id": "cc5f4019-fa0d-4ddf-a13b-4b7cad86ddbe", + "id": "be269552-c419-490c-8c0b-b271cdb34fbb", "savedPayload": { "position": { "x": 17354.092482524553, @@ -8506,7 +8506,7 @@ "name": "New Procedure Javascript Code", "code": "\t/* Loop Code */\n\n\tlet candle = record.current\n\tlet volume = getElement('volumes', candle)\n\tlet Vl = 28 //period for slow moving average\n\tlet Vs = 14 //period for fast moving average\n\n\n\t//evaluation of sell and buy volume as per indicated in the master data mine\n\tlet totalVolume = volume.buy + volume.sell\n\tlet distanceOpenMax = candle.max - candle.open\n\tlet distanceOpenMin = candle.open - candle.min\n\tlet distanceMaxMin = candle.max - candle.min\n\n\tvariable.buyVolume = totalVolume * distanceOpenMax * 100 / distanceMaxMin\n\tvariable.sellVolume = totalVolume * distanceOpenMin * 100 / distanceMaxMin\n\n\n\t//Array building\n\tvariable.VolShort.push(volume.sell + volume.buy)\n\tvariable.VolLong.push(volume.sell + volume.buy)\n\tvariable.VolShortB.push(variable.buyVolume)\n\tvariable.VolLongB.push(variable.buyVolume)\n\tvariable.VolShortS.push(variable.sellVolume)\n\tvariable.VolLongS.push(variable.sellVolume)\n\n\t// Keep the array the correct size\n\n\tif (variable.VolShort.length > Vs) {\n\t\tvariable.VolShort.splice(0, 1)\n\t}\n\n\tif (variable.VolLong.length > Vl) {\n\t\tvariable.VolLong.splice(0, 1)\n\t}\n\n\tif (variable.VolShortB.length > Vs) {\n\t\tvariable.VolShortB.splice(0, 1)\n\t}\n\n\tif (variable.VolLongB.length > Vl) {\n\t\tvariable.VolLongB.splice(0, 1)\n\t}\n\n\tif (variable.VolShortS.length > Vs) {\n\t\tvariable.VolShortS.splice(0, 1)\n\t}\n\n\tif (variable.VolLongS.length > Vl) {\n\t\tvariable.VolLongS.splice(0, 1)\n\t}\n\n\t//calculate volume mobile average\n\n\tvariable.VolAs = calVolAv(Vs, variable.VolShort) //fast volume mobile average\n\tvariable.VolAl = calVolAv(Vl, variable.VolLong) //slow\n\tvariable.VolAsB = calVolAv(Vs, variable.VolShortB) //fast volume mobile average BUY\n\tvariable.VolAlB = calVolAv(Vl, variable.VolLongB) //slow\n\tvariable.VolAsS = calVolAv(Vs, variable.VolShortS) //fast volume mobile average SELL\n\tvariable.VolAlS = calVolAv(Vl, variable.VolLongS) //slow\n\n\t//calculate volume oscillator and put it in an array prior to velocity calculation\n\tvariable.VOscAB = (variable.VolAsB - variable.VolAlB) / variable.VolAlB\n\tvariable.VOscAS = (variable.VolAsS - variable.VolAlS) / variable.VolAlS\n\tvariable.VOscA = (variable.VolAs - variable.VolAl) / variable.VolAl\n\n\tif (isNaN(variable.VOscA)) {\n\n\tvariable.osc = 0\n\t}\n\telse {\n\tvariable.osc = variable.VOscA\n\n\t}\n\tif (isNaN(variable.VOscAB)) {\n\n\tvariable.oscb = 1\n\t}\n\telse {\n\tvariable.oscb = variable.VOscAB\n\t}\t\n\tif (isNaN(variable.VOscAS)) {\n\n\tvariable.oscs = -1\n\t}\n\telse {\n\tvariable.oscs = variable.VOscAS\n\t}\n\t\n\t\n\t//functions\n\t//Volume average\n\tfunction calVolAv(periods, array) {\n\t\tvariable.S = 0\n\t\tfor(var i = 0 ; i < periods ; i++) {\n\t\t\tvariable.S = variable.S + array[i]\n\t\t}\n\t\treturn variable.S/periods\n\t}\n\n\t// End of code :-)", "project": "Foundations", - "id": "7f33cedb-c431-4337-8540-43a29617943b", + "id": "20315b97-d3dc-4eb7-879e-2d887a0a6cfa", "savedPayload": { "position": { "x": 17727.980683742957, @@ -8527,7 +8527,7 @@ "uiObject": {} } }, - "id": "a1609cfe-427d-4fec-ab74-7dc3e9c5500c", + "id": "f3ee5a81-b1cf-4f38-9965-5380bdbc4dfe", "savedPayload": { "position": { "x": 17825.48858380787, @@ -8559,7 +8559,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.VolShort = []\nvariable.VolLong = []\nvariable.VOscA = []\nvariable.VolShortB = []\nvariable.VolLongB = []\nvariable.VolShortS = []\nvariable.VolLongS = []\nvariable.VOscB = []\nvariable.VOscS = []", "project": "Foundations", - "id": "6458ab77-d399-4763-966a-d1402903f0f6", + "id": "df21c1a4-dede-451a-a598-e8d42a3c47fc", "savedPayload": { "position": { "x": 17854.098343878024, @@ -8580,7 +8580,7 @@ "uiObject": {} } }, - "id": "9d46f952-54f9-4eb7-bdd7-6916b170b781", + "id": "64465069-0788-463f-80ff-ae7f9fc1668d", "savedPayload": { "position": { "x": 17922.06575452272, @@ -8603,7 +8603,7 @@ } } }, - "id": "e43e2533-1d8a-4fe0-bccb-bf7a292fd922", + "id": "29d83535-d430-4d8b-a9d4-e5abe357c50b", "savedPayload": { "position": { "x": 17990.033165167413, @@ -8626,7 +8626,7 @@ } } }, - "id": "cd4128d5-b8e1-4aef-95bd-4e41a197fda3", + "id": "d6165a7d-8b46-4372-bfa3-29979a140b36", "savedPayload": { "position": { "x": 18312.471266408113, @@ -8650,20 +8650,20 @@ "referenceParent": { "type": "Plotter Module", "name": "Volume Oscillators", - "id": "57800e5e-9128-4d20-ba21-93120bf765d8" + "id": "61d4947b-e9a1-4c78-8ebe-5c068fe15a09" } } } ], - "id": "cf754c19-2963-4bad-845a-1a34cc02c561", + "id": "dc18ae9f-b665-4c5e-9193-be71e2866e8a", "savedPayload": { "position": { - "x": 18852.836604032054, - "y": 10188.222024741366 + "x": 18156.06718785519, + "y": 10356.68702770227 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -8698,7 +8698,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market HoltWinters", "project": "Foundations", - "id": "2b08b35d-7d24-43fb-acbf-1b9c0f987bbb", + "id": "b1270c23-2c3c-430e-a472-fc3fb37ec7a2", "savedPayload": { "position": { "x": 18156.584614518204, @@ -8720,13 +8720,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "11f4987d-3149-48dc-9a40-622a7168a57f" + "id": "cffa4343-75e5-444a-96ed-9d41a9049a4c" } } } ], "outputDatasetFolders": [], - "id": "ec1c3004-5af3-4143-9bbf-5677f9f14e32", + "id": "32a870bb-7660-4ac9-8d30-832698aea91c", "savedPayload": { "position": { "x": 18596.23944045225, @@ -8759,7 +8759,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "60aafaa3-222c-4f23-b56e-4cceaf884d5b", + "id": "73e2ccaf-f3af-4459-b3c4-02983fc69437", "savedPayload": { "position": { "x": 18786.2067928767, @@ -8790,7 +8790,7 @@ "name": "Holt-Winters forecast Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "2c6fe028-c7ed-4152-b694-418c53b99747", + "id": "bbf73880-ba5f-4b88-808f-51a6fb0797f9", "savedPayload": { "position": { "x": 18494.72539536913, @@ -8812,7 +8812,7 @@ "referenceParent": { "type": "Status Report", "name": "HoltWinters", - "id": "79787d21-1872-4ba7-b601-5e9c84704b71" + "id": "0ada7494-fa50-4417-a81b-045ae409facf" } } } @@ -8822,7 +8822,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "51eda7b1-0217-4284-9f50-bce6d1e42f2c", + "id": "d6c5e8f5-4d85-405d-8b15-da4e08e12a17", "savedPayload": { "position": { "x": 18355.858321573367, @@ -8852,7 +8852,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Market", "project": "Foundations", - "id": "0b6158da-90a8-4098-88a7-215ba5b684d5", + "id": "7148489a-7cc1-4fc3-a1f6-50d0539b8708", "savedPayload": { "position": { "x": 18247.79023243334, @@ -8880,7 +8880,7 @@ } ], "dataMineDataDependencies": [], - "id": "49fd31b3-7239-4400-a9a2-cea71f5b75fa", + "id": "242ae61e-a06d-4bb7-9938-6aaae8da5c88", "savedPayload": { "position": { "x": 18436.49111022106, @@ -8907,7 +8907,7 @@ "type": "Status Report", "name": "HoltWinters", "project": "Foundations", - "id": "79787d21-1872-4ba7-b601-5e9c84704b71", + "id": "0ada7494-fa50-4417-a81b-045ae409facf", "savedPayload": { "position": { "x": 18296.65058002588, @@ -8932,7 +8932,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "de62597c-18b5-43f4-80f6-615c04cdf505", + "id": "811135bb-05bd-4f4f-b59a-ba7dc5101703", "savedPayload": { "position": { "x": 18326.39131190213, @@ -8962,7 +8962,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "8c7e62c7-aa73-471a-9481-d024cebe54b9", + "id": "c6f32549-5f48-4075-98a9-9bdb2fbf3e29", "savedPayload": { "position": { "x": 18310.2478603172, @@ -8983,15 +8983,15 @@ "uiObject": {} } }, - "id": "e85fcbed-51a8-4ac1-9a98-6802857c384c", + "id": "c8a6631e-0180-49f1-a075-dc32732e94a5", "savedPayload": { "position": { - "x": 18887.20040622378, - "y": 10573.764150054372 + "x": 19061.586854193523, + "y": 10841.97311393905 }, "targetPosition": { - "x": 18729.941525404185, - "y": 10152.13677380448 + "x": 18761.586854193523, + "y": 10322.357871668386 }, "floatingObject": { "isPinned": false, @@ -9020,7 +9020,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily HoltWinters", "project": "Foundations", - "id": "714d3de0-e0d6-4f9d-89eb-b23b1f81906d", + "id": "f8136557-9cd9-429c-8536-e700c0cf7e26", "savedPayload": { "position": { "x": 18144.579524189787, @@ -9042,13 +9042,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "0c5974ba-1199-4fa1-8c9e-de0acca1cc1f" + "id": "c8b51c0d-9ed9-45c4-9a3c-6deeb1ab7793" } } } ], "outputDatasetFolders": [], - "id": "4bee0858-9746-4a48-9f3a-572bf153050d", + "id": "2992b450-3ef1-415a-b7b8-52de19e8b827", "savedPayload": { "position": { "x": 18237.28462250227, @@ -9081,7 +9081,7 @@ "name": "Holt-Winters forecast Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "86887d12-10fd-4065-90ef-26035125c892", + "id": "a00b70c8-091a-4bc6-8558-92ef48d0d74c", "savedPayload": { "position": { "x": 18014.34117485905, @@ -9103,7 +9103,7 @@ "referenceParent": { "type": "Status Report", "name": "HoltWinters", - "id": "25e14bde-4665-44bc-ae14-d6383a335826" + "id": "bd9c3660-23e3-4447-8019-7ea84adffc92" } } }, @@ -9112,7 +9112,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "0812ca8d-69da-4389-86dd-2678babde832", + "id": "fca40a43-93fd-4f64-b39d-7082e2add613", "savedPayload": { "position": { "x": 17943.654562667027, @@ -9143,7 +9143,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "1fde2e96-2865-4a70-9ae1-77c4003b1156", + "id": "e5b8b5ca-680c-4425-a5dc-dfadfea1a8a4", "savedPayload": { "position": { "x": 17884.102825528316, @@ -9175,7 +9175,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "c8be48ce-af8b-4a0a-bffd-805d8d90e67a", + "id": "b1b47278-e317-457e-8f93-c256b567b771", "savedPayload": { "position": { "x": 17839.744315915024, @@ -9205,7 +9205,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Daily", "project": "Foundations", - "id": "27356f3c-4071-4bc6-bb91-21216a5373d9", + "id": "0f84a4a5-f941-4d5f-a3a6-09a91dd4ac50", "savedPayload": { "position": { "x": 17813.601992951393, @@ -9233,7 +9233,7 @@ } ], "dataMineDataDependencies": [], - "id": "b4c007c9-57ab-4cf9-9632-af7a85612613", + "id": "e13e4663-7905-4966-aaf6-f4d6d479f146", "savedPayload": { "position": { "x": 18107.046273171534, @@ -9260,7 +9260,7 @@ "type": "Status Report", "name": "HoltWinters", "project": "Foundations", - "id": "25e14bde-4665-44bc-ae14-d6383a335826", + "id": "bd9c3660-23e3-4447-8019-7ea84adffc92", "savedPayload": { "position": { "x": 18183.26758070468, @@ -9285,7 +9285,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "cb88b3a5-68d4-4a46-bbde-a5b26d23c22f", + "id": "45d9c37f-3ba4-46fa-9206-66e104071d3a", "savedPayload": { "position": { "x": 18187.331243370478, @@ -9315,7 +9315,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "a7384eeb-cfb8-4161-89a3-6fcd5aaff9d0", + "id": "bfd938b4-c77d-488f-be47-2c9d5b2b0e0c", "savedPayload": { "position": { "x": 18229.620129860923, @@ -9336,15 +9336,15 @@ "uiObject": {} } }, - "id": "12cf7949-5991-41a8-9378-51b18aa2ff31", + "id": "cff9f0de-bd90-45d6-8620-3dece969f4a2", "savedPayload": { "position": { - "x": 18543.004769553336, - "y": 10561.471171714013 + "x": 18606.295427132012, + "y": 10901.913367441826 }, "targetPosition": { - "x": 18729.941525404185, - "y": 10152.13677380448 + "x": 18761.586854193523, + "y": 10322.357871668386 }, "floatingObject": { "isPinned": false, @@ -9372,15 +9372,15 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "11f4987d-3149-48dc-9a40-622a7168a57f", + "id": "cffa4343-75e5-444a-96ed-9d41a9049a4c", "savedPayload": { "position": { - "x": 18517.27862288489, - "y": 10916.618790445746 + "x": 18650.994333717183, + "y": 11374.57541739136 }, "targetPosition": { - "x": 18097.500461029347, - "y": 10388.02509503387 + "x": 17982.16399078753, + "y": 10772.357871668386 }, "floatingObject": { "isPinned": false, @@ -9398,15 +9398,15 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "0c5974ba-1199-4fa1-8c9e-de0acca1cc1f", + "id": "c8b51c0d-9ed9-45c4-9a3c-6deeb1ab7793", "savedPayload": { "position": { - "x": 17724.496568416187, - "y": 10950.60228626671 + "x": 17616.10101201931, + "y": 11594.548783546727 }, "targetPosition": { - "x": 18097.500461029347, - "y": 10388.02509503387 + "x": 17982.16399078753, + "y": 10772.357871668386 }, "floatingObject": { "isPinned": false, @@ -9435,7 +9435,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "7f266d4d-40c4-4d74-af3e-c74ed183464a", + "id": "f693afe4-6556-49ad-9f2c-359de8b6ad18", "savedPayload": { "position": { "x": 19077.64507253988, @@ -9456,7 +9456,7 @@ "uiObject": {} } }, - "id": "6e4aa65a-12a3-4ad3-a467-f5f4806338bd", + "id": "c5d7139f-24ba-4bba-b73b-535be7bababb", "savedPayload": { "position": { "x": 18081.78724517402, @@ -9489,7 +9489,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "b8b7c5d7-e643-4795-9caa-9772af12ae3a", + "id": "c214f1e7-9a01-4f2d-95d2-4474197450a7", "savedPayload": { "position": { "x": 18016.137559514424, @@ -9510,7 +9510,7 @@ "uiObject": {} } }, - "id": "4568b443-c139-4a77-93e4-a83d9b721b58", + "id": "b3e329f9-046d-414a-a2ca-2310b19cd215", "savedPayload": { "position": { "x": 17551.03348866129, @@ -9543,7 +9543,7 @@ "name": "New Record Formula", "code": "variable.Y", "project": "Foundations", - "id": "5f71cd82-10ef-4964-bee9-33bf25a3fd04", + "id": "c3fa3e37-4af5-40f3-8b40-bc180540edcd", "savedPayload": { "position": { "x": 17903.843353418746, @@ -9564,7 +9564,7 @@ "uiObject": {} } }, - "id": "92de12c2-0f72-4af5-848a-33daab258181", + "id": "a6af3193-3a41-4f57-bf88-8296b5f9e8cd", "savedPayload": { "position": { "x": 17494.886385613452, @@ -9597,7 +9597,7 @@ "name": "New Record Formula", "code": "variable.forecast", "project": "Foundations", - "id": "34cf7616-a12f-4004-ae84-04ce09926110", + "id": "c8a9045c-3e15-41d6-9104-35e2406a9d4c", "savedPayload": { "position": { "x": 17750.535527280383, @@ -9618,7 +9618,7 @@ "uiObject": {} } }, - "id": "e1f35cf9-a253-4168-9b83-f82e84d1242a", + "id": "d2ce1572-9c9b-4ff7-97d5-af8eb067775a", "savedPayload": { "position": { "x": 17418.23247254427, @@ -9651,7 +9651,7 @@ "name": "New Record Formula", "code": "variable.A", "project": "Foundations", - "id": "2770aa88-bcc9-4d91-951a-849cc9f00858", + "id": "adcb420d-f7f1-45d5-b506-3c6c8d1ef2db", "savedPayload": { "position": { "x": 17444.408536196785, @@ -9672,7 +9672,7 @@ "uiObject": {} } }, - "id": "d6f3b5e5-83dc-4592-90c9-c4db5bc1c4d9", + "id": "d148bc5c-e98c-4409-9c70-933b8669ecf7", "savedPayload": { "position": { "x": 17324.91549673391, @@ -9705,7 +9705,7 @@ "name": "New Record Formula", "code": "variable.B", "project": "Foundations", - "id": "462d106c-7434-47db-87f0-ab077c968989", + "id": "61bafad2-915e-414b-8904-47e0c03200c0", "savedPayload": { "position": { "x": 17286.457432606792, @@ -9726,7 +9726,7 @@ "uiObject": {} } }, - "id": "c84690fc-d3b7-4b91-acfa-571a06947094", + "id": "5e124ee7-1a90-4bdc-9202-0cb2db640820", "savedPayload": { "position": { "x": 17219.614761007248, @@ -9759,7 +9759,7 @@ "name": "New Record Formula", "code": "variable.forecast5", "project": "Foundations", - "id": "b1fbe177-5ae5-4594-a519-f110e34e269f", + "id": "a3fcbad7-1e8c-4a77-a80e-d07442f40dab", "savedPayload": { "position": { "x": 17118.451017022733, @@ -9780,7 +9780,7 @@ "uiObject": {} } }, - "id": "6f8e6810-5cee-4bf7-882b-40fd097f081c", + "id": "a2551ad9-9b11-43e7-af8a-a30597928098", "savedPayload": { "position": { "x": 17107.610483951208, @@ -9813,7 +9813,7 @@ "name": "New Record Formula", "code": "variable.forecast10", "project": "Foundations", - "id": "04cc2bd4-6865-4487-b31d-a3904ce8d77f", + "id": "2e3dff97-e66d-43f1-b601-0302499fc1bf", "savedPayload": { "position": { "x": 16948.81383265568, @@ -9834,7 +9834,7 @@ "uiObject": {} } }, - "id": "dff94ed6-aae3-403c-b8ff-b6511ce1cb54", + "id": "1e98ca39-eaff-4453-b2e9-07bc05e8ec10", "savedPayload": { "position": { "x": 16994.519027706505, @@ -9867,7 +9867,7 @@ "name": "New Record Formula", "code": "variable.forecast20", "project": "Foundations", - "id": "03dbee17-5c6d-411d-9dd9-6d85cc77a7e9", + "id": "1c8e6c4c-5a0d-4883-bc28-608da6028d72", "savedPayload": { "position": { "x": 16786.052196272994, @@ -9888,7 +9888,7 @@ "uiObject": {} } }, - "id": "5159bf2d-8fe5-4c95-8025-2d59ef233e26", + "id": "97388cd8-7330-4406-99c1-e5d235e12038", "savedPayload": { "position": { "x": 16886.011270118048, @@ -9921,7 +9921,7 @@ "name": "New Record Formula", "code": "variable.forecast30", "project": "Foundations", - "id": "673670b3-9e63-4ba6-bd21-2b293c48d5fb", + "id": "17a095e4-ccf8-4ecd-bae9-05cff0313cef", "savedPayload": { "position": { "x": 16638.327655956313, @@ -9942,7 +9942,7 @@ "uiObject": {} } }, - "id": "ff79aadc-4bc6-43eb-910d-e79edb10c665", + "id": "3162a9f7-9fcc-401c-bd6b-b2d5176e412f", "savedPayload": { "position": { "x": 16787.52824324026, @@ -9975,7 +9975,7 @@ "name": "New Record Formula", "code": "variable.trend", "project": "Foundations", - "id": "fd833b92-d660-4e54-b6c8-678fd89170a7", + "id": "c0f946ef-2982-472d-902a-82c6170eece7", "savedPayload": { "position": { "x": 16513.047737001067, @@ -9996,7 +9996,7 @@ "uiObject": {} } }, - "id": "47abc6f8-ae3f-4259-b6c4-d99d4c9d62cd", + "id": "940f5f76-d45f-4824-b7ee-6b5ce007357e", "savedPayload": { "position": { "x": 16704.0082972701, @@ -10029,7 +10029,7 @@ "name": "New Record Formula", "code": "variable.maxForecast5", "project": "Foundations", - "id": "19fc4aa2-6549-49d2-a761-efe2a2caaa5b", + "id": "57cd8689-1ae5-426f-8710-e3181dad43bf", "savedPayload": { "position": { "x": 16416.494497667063, @@ -10050,7 +10050,7 @@ "uiObject": {} } }, - "id": "addfe153-6e24-4437-a04b-b12940df605e", + "id": "05630eb7-a165-46bb-a863-55e1f1019975", "savedPayload": { "position": { "x": 16639.639471047427, @@ -10083,7 +10083,7 @@ "name": "New Record Formula", "code": "variable.minForecast5", "project": "Foundations", - "id": "cd33fb32-4a67-4d36-8be4-0bb5fba2c067", + "id": "d0acb36b-7c53-47a2-ab8d-e65fb7fad1b0", "savedPayload": { "position": { "x": 16353.50952054572, @@ -10104,7 +10104,7 @@ "uiObject": {} } }, - "id": "5decdfb5-14e7-4f4f-ada1-c4ad34b1995c", + "id": "c043fe7e-086d-4688-b0c8-e3168e273fbf", "savedPayload": { "position": { "x": 16597.649486299866, @@ -10137,7 +10137,7 @@ "name": "New Record Formula", "code": "variable.minForecast10", "project": "Foundations", - "id": "0990be94-c435-41ce-9426-0f79f194f905", + "id": "087776c6-4c88-4c80-b0f5-8d57fb53dae7", "savedPayload": { "position": { "x": 16327.25113539227, @@ -10158,7 +10158,7 @@ "uiObject": {} } }, - "id": "4a43c530-9f49-4739-ac8a-8a87a824f6d6", + "id": "995546ae-d04f-4ba8-8d57-0bf1129e6a14", "savedPayload": { "position": { "x": 16580.143896197565, @@ -10191,7 +10191,7 @@ "name": "New Record Formula", "code": "variable.maxForecast10", "project": "Foundations", - "id": "4543228b-1542-4250-987c-0d7bf6b21702", + "id": "e6e81ed9-ae69-471d-bc67-681ad6e2da8d", "savedPayload": { "position": { "x": 16339.03604728376, @@ -10212,7 +10212,7 @@ "uiObject": {} } }, - "id": "28ee5b28-96bb-4e0f-8aac-daaf9f13f903", + "id": "72b17684-7347-40ec-af00-49e2af332d5b", "savedPayload": { "position": { "x": 16588.000504125226, @@ -10245,7 +10245,7 @@ "name": "New Record Formula", "code": "variable.minForecast20", "project": "Foundations", - "id": "5636f283-1f04-4481-98ee-7bf9bc413ae2", + "id": "5871025c-5a08-4454-83cf-a3e79613a72c", "savedPayload": { "position": { "x": 16388.27331152846, @@ -10266,7 +10266,7 @@ "uiObject": {} } }, - "id": "d059d396-9b4f-4969-abaf-2e46e2b52e2e", + "id": "2becc3ff-d736-4b00-a054-0c746283a68e", "savedPayload": { "position": { "x": 16620.825346955025, @@ -10299,7 +10299,7 @@ "name": "New Record Formula", "code": "variable.maxForecast20", "project": "Foundations", - "id": "630ded92-dd86-4e92-8826-994eae84cae6", + "id": "0bb498c6-91dd-485d-9c07-bc6d2a24dd8a", "savedPayload": { "position": { "x": 16472.493966100217, @@ -10320,7 +10320,7 @@ "uiObject": {} } }, - "id": "a8d1a8b4-5b8a-45b5-aff9-35956fc98163", + "id": "3c968f3e-b57c-4179-8892-d4a289949dd5", "savedPayload": { "position": { "x": 16676.972450002864, @@ -10353,7 +10353,7 @@ "name": "New Record Formula", "code": "variable.minForecast30", "project": "Foundations", - "id": "35d9ee40-c440-4d44-80b9-cd25e93dded1", + "id": "fcd315dc-27c2-4b9c-b2ba-d0be094726a0", "savedPayload": { "position": { "x": 16587.47483570399, @@ -10374,7 +10374,7 @@ "uiObject": {} } }, - "id": "eadc9e14-1723-4732-8937-34671dd07bc6", + "id": "e9569cfe-0342-41a5-aab2-1ade7ce2be96", "savedPayload": { "position": { "x": 16753.626363072046, @@ -10407,7 +10407,7 @@ "name": "New Record Formula", "code": "variable.maxForecast30", "project": "Foundations", - "id": "78e09592-8b36-4074-87d9-0a74c5c78b43", + "id": "3e803abd-5d76-4e90-be67-9c0ff58f688e", "savedPayload": { "position": { "x": 16727.450299419535, @@ -10428,7 +10428,7 @@ "uiObject": {} } }, - "id": "82f76906-cd9a-419d-8880-1c08d4a85ce1", + "id": "454798b7-437f-4e04-90e8-b2a2288610aa", "savedPayload": { "position": { "x": 16846.94333888241, @@ -10461,7 +10461,7 @@ "name": "New Record Formula", "code": "variable.T5Begin", "project": "Foundations", - "id": "ec9ce32f-fad9-424f-89ca-be5c977b99a3", + "id": "61b9b428-b678-4671-a0d7-eb8f3760a34e", "savedPayload": { "position": { "x": 16885.401403009524, @@ -10482,7 +10482,7 @@ "uiObject": {} } }, - "id": "9b547439-45f0-48d1-8861-748911722cac", + "id": "1d59aa78-5162-4257-9fa9-5f0acffa0320", "savedPayload": { "position": { "x": 16952.24407460907, @@ -10515,7 +10515,7 @@ "name": "New Record Formula", "code": "variable.T10Begin", "project": "Foundations", - "id": "a214388b-c323-4bbc-923e-44d0c9783736", + "id": "1d4717ba-c738-4299-8d5f-99a6a5d74f9e", "savedPayload": { "position": { "x": 17053.407818593583, @@ -10536,7 +10536,7 @@ "uiObject": {} } }, - "id": "e97c0ce8-0d88-4226-89e8-26e5770d7d97", + "id": "85960b2a-4ef5-4a42-8d65-520ca306f581", "savedPayload": { "position": { "x": 17064.24835166511, @@ -10569,7 +10569,7 @@ "name": "New Record Formula", "code": "variable.T20Begin", "project": "Foundations", - "id": "a59de92b-4706-4b31-b905-eaaa2e6df0e9", + "id": "4449defd-38b4-4255-8a00-5bd1c37b23ca", "savedPayload": { "position": { "x": 17223.045002960636, @@ -10590,7 +10590,7 @@ "uiObject": {} } }, - "id": "39c8cf8a-666b-4035-87cb-60cd0eaf1f96", + "id": "5c5f159c-e919-47c0-805c-2d13dd128496", "savedPayload": { "position": { "x": 17177.33980790981, @@ -10623,7 +10623,7 @@ "name": "New Record Formula", "code": "variable.T30Begin", "project": "Foundations", - "id": "9cc31142-072c-4915-84c8-64df8e67040e", + "id": "b2d9bc0a-a338-470e-8420-fb32abb6e71a", "savedPayload": { "position": { "x": 17385.806639343322, @@ -10644,7 +10644,7 @@ "uiObject": {} } }, - "id": "ea1036dc-2ea3-4b05-93da-f61f65c47ce7", + "id": "f93d0f76-3ea9-42c2-bfcb-0654668e11cc", "savedPayload": { "position": { "x": 17285.84756549827, @@ -10677,7 +10677,7 @@ "name": "New Record Formula", "code": "variable.T5End", "project": "Foundations", - "id": "029fb12d-b0ab-4fa1-bd4e-5333f3e70b37", + "id": "21e0b8f8-9a39-4dbe-9117-67123b856fac", "savedPayload": { "position": { "x": 17533.531179660004, @@ -10698,7 +10698,7 @@ "uiObject": {} } }, - "id": "72cfcbb2-e69c-482f-bea7-18e816764d7f", + "id": "7cf40a34-77d0-4778-a6c6-9942c3f74396", "savedPayload": { "position": { "x": 17384.330592376056, @@ -10731,7 +10731,7 @@ "name": "New Record Formula", "code": "variable.T10End", "project": "Foundations", - "id": "87f7ed87-8f7a-4f2e-8b50-f3b73e903f40", + "id": "f05753f5-1de5-4a86-b491-2a1d35a625ae", "savedPayload": { "position": { "x": 17658.81109861525, @@ -10752,7 +10752,7 @@ "uiObject": {} } }, - "id": "248fc363-84f6-4564-b5a4-695f16e8d1ae", + "id": "1da0c564-057e-4389-9c69-731756c38a52", "savedPayload": { "position": { "x": 17467.850538346218, @@ -10785,7 +10785,7 @@ "name": "New Record Formula", "code": "variable.T20End", "project": "Foundations", - "id": "3f6f45a5-6b6f-4878-93b6-9d5c7dd4328e", + "id": "fe4f0ca0-13b0-4627-9040-6f491cdfaa0c", "savedPayload": { "position": { "x": 17755.364337949253, @@ -10806,7 +10806,7 @@ "uiObject": {} } }, - "id": "a4698aa2-f88f-4d1a-a5d3-b17a9437ce01", + "id": "4ad1efd4-7f56-4307-abbd-3c45d179f1c4", "savedPayload": { "position": { "x": 17532.21936456889, @@ -10839,7 +10839,7 @@ "name": "New Record Formula", "code": "variable.T30End", "project": "Foundations", - "id": "35fb2243-d4f6-444e-95e7-f5ea06131328", + "id": "63edefcd-e047-4e6e-85e1-abf3d24e932d", "savedPayload": { "position": { "x": 17818.349315070594, @@ -10860,7 +10860,7 @@ "uiObject": {} } }, - "id": "b979df33-059a-487d-a3fd-908b0fdf7071", + "id": "e0e19e46-f81f-4593-a055-d068a764bed4", "savedPayload": { "position": { "x": 17574.20934931645, @@ -10884,15 +10884,15 @@ } } ], - "id": "5761d714-c368-46ff-9e01-74e011a2a926", + "id": "2432032d-1f99-4921-b5f2-f8d866c0a635", "savedPayload": { "position": { - "x": 17085.929417808158, - "y": 10431.387227319969 + "x": 16661.664729796892, + "y": 11053.03865427236 }, "targetPosition": { - "x": 18097.500461029347, - "y": 10388.02509503387 + "x": 17982.16399078753, + "y": 10772.357871668386 }, "floatingObject": { "isPinned": false, @@ -10918,17 +10918,17 @@ "procedureJavascriptCode": { "type": "Procedure Javascript Code", "name": "New Procedure Javascript Code", - "code": "\tlet candle = record.current\n\tlet Al = 0.4 //initial value for alpha factor\n\tlet Bet = 0.4 //initial value for beta factor\n\tlet Ph = 0.8 //initial value for phi factor\n\tlet Ga = 0.3 //initial value for gamma factor\n\tlet sLen = 5 //length of seasonal period ; integer only\n\tlet fLen = 6 //number of season period to forecast ; integer only ; forecast will be calculated on fLen * sLen = 30 periods\n\tlet Iter = 20 //number of loop to proceed parameters optimization\n\n\n\t//initializing Factors with fixed value or optimized value if exists\n\tif (variable.Alpha === undefined) {\n\t\tvariable.Alpha = Al\n\t }\n\t else {\n\t variable.Alpha = variable.Alpha\n\t }\n\t \n\tif (variable.Beta === undefined) {\n\t\tvariable.Beta = Bet\n\t }\n\t else {\n\t variable.Beta = variable.Beta\n\t }\n\n\tif (variable.Phi === undefined) {\n\t\tvariable.Phi = Ph\n\t }\n\t else {\n\t variable.Phi = variable.Phi\n\t }\n\n\tif (variable.Gamma === undefined) {\n\t\tvariable.Gamma = Ga\n\t }\n\t else {\n\t variable.Gamma = variable.Gamma\n\t }\n\t \n\t//Fetching candle close values for sLen length \n\tvariable.lastClose.push(candle.close)\n\tif(variable.lastClose.length > sLen) {\n\t\tvariable.lastClose.splice(0,1)\n\t}\n\tvariable.lastClose2x.push(candle.close)\n\tif(variable.lastClose2x.length > 2 * sLen) {\n\t\tvariable.lastClose2x.splice(0,1)\n\t}\n\t//Initializing A, B, S, Y variables according to Hyndman parameters https://robjhyndman.com/hyndsight/hw-initialization/\n\t\n\t//managing the undefined values until lastClose2x reach sufficient length\n\tvariable.trig = 0 //variable to indicate initialization stage is over\n\tif(variable.lastClose2x.length < 2 * sLen && variable.trig === 0) {\n\t\tvariable.Y = 0 //forecast through history variable\n\t\tvariable.A = 0 //level\n\t\tvariable.B = 0 //trend\n\t\tvariable.S[0] = 0 //season\n\t\tvariable.previousB = variable.B\n\t\tvariable.previousA = variable.A\n\t\tvariable.trend = 0\n\t}\n\tif(variable.lastClose2x.length === 2 * sLen && variable.trig === 0) {\n\t\tfor(var i = 0 ; i < sLen ; i++) {\n\t\t\tvariable.previousA = variable.previousA + variable.lastClose[i]\n\t\t}\n\t\tvariable.previousA = variable.previousA / sLen\n\t\tfor(var i = 0; i < sLen ; i++) {\n\t\t\tvariable.previousB = variable.previousB + variable.lastClose2x[i + sLen] - variable.lastClose2x[i]\n\t\t}\n\t\tvariable.previousB = variable.previousB / Math.pow(sLen,2)\n\t\tvariable.S[0] = candle.close / variable.previousA\n\t\tvariable.trig = 1 \n\t\tvariable.trend = 0\n\t}\n\tif(variable.lastClose2x.length === 2* sLen && variable.trig === 1)\n\t{\n\t\tvariable.Y = (variable.previousA + variable.Phi * variable.previousB) * variable.S[0]\n\t\tvariable.A = variable.Alpha * variable.Y / variable.S[0] + (1 - variable.Alpha) * (variable.previousA + variable.Phi * variable.previousB)\n\t\tvariable.B = variable.Beta * (variable.A - variable.previousA) + (1 - variable.Beta) * variable.Phi * variable.previousB\n\t\tvariable.S.push(variable.Gamma * variable.Y / variable.A + (1 - variable.Gamma) * variable.S[0])\n\t\tvariable.slope = variable.B - variable.previousB\n\t\tif(variable.slope < 0){\n\t\t\tvariable.trend = 1\n\t\t}\n\t\telse {\n\t\t\tvariable.trend = -1\n\t\t}\n\t\tvariable.previousA = variable.A\n\t\tvariable.previousB = variable.B\n\t}\n\n\t//keep Season array to the right size\n\tif(variable.S.length > sLen) {\n\t\tvariable.S.splice(0,1)\n\t}\n\n\t//Parameters optimization\n\t//calculation of initial mean square error\n\n\tvariable.Errors.push(Math.pow(variable.Y - candle.close, 2))\n\tif(variable.Errors.length > sLen) {\n\t\t\tvariable.Errors.splice(0,1)\n\t}\n\tif(variable.Errors.length === sLen) {\n\t\tvariable.ErrSqSum = 0\n\t\tfor (var k = 0 ; k < variable.Errors.length ; k++) {\n\t\t\t\tvariable.ErrSqSum = variable.ErrSqSum + variable.Errors[k]\n\t\t}\n\t\tvariable.MS = variable.ErrSqSum / variable.Errors.length\n\t\tif(variable.lastClose2x.length === 2*sLen && variable.trig === 1 ){\n\t\t//initialiying best parameters calculation\n\t\tvariable.bestAlpha = 0\n\t\tvariable.bestBeta = variable.Beta\n\t\tvariable.bestPhi = variable.Phi\n\t\tvariable.bestGamma = variable.Gamma\n\t\tvariable.bestError = variable.MS\n\t\t//Alpha optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestAlpha = variable.bestAlpha +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Alpha = variable.bestAlpha\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestBeta = 0\n\t\t//Beta optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestBeta = variable.bestBeta +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Beta = variable.bestBeta\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestPhi = 0.8\n\t\t//Phi optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestPhi = variable.bestPhi +(1 - (i/Iter) * 0.2)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Phi = variable.bestPhi\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestGamma = 0\n\t\t//Gamma optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestGamma = variable.bestGamma +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Gamma = variable.bestGamma\n\t\t\t}\n\t\t\n\t\t}\n\t}\n\t}\n\t//initializing forecast data\n\tvariable.fS = [] // purge the season array for forecast data\n\tvariable.previousfA = variable.A //equivalent A variable for the forecast calculation\n\tvariable.previousfB = variable.B //equivalent B variable for the forecast calculation\n\n\n\t//calculating forecast data\n\tif(variable.S.length === sLen && variable.trig === 1) {\n\tfor (var j = 0; j < fLen ; j++) {\n\t\tfor(var n = 0; n < sLen; n++) {\n\t\t\tvariable.fY.push((variable.previousfA + variable.Phi * variable.previousfB) * variable.S[n])\n\t\t\tvariable.fA = variable.previousfA + variable.Phi * variable.previousfB\n\t\t\tvariable.fB = variable.Phi * variable.previousfB\n\t\t\tvariable.previousfA = variable.fA\n\t\t\tvariable.previousfB = variable.fB\n\t\t\tif(variable.fY.length > fLen * sLen) {\n\t\t\t\tvariable.fY.splice(0,1)\n\t\t\t}\n\t\t}\n\t}\n\n\t\tvariable.forecast = 100 * variable.fY[0] \n\t\tvariable.forecast5 = 100 * (variable.fY[4] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast10 = 100 * (variable.fY[9] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast20 = 100 * (variable.fY[19] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast30 = 100 * (variable.fY[29] - variable.fY[0])/variable.fY[0]\n\t \n\t} else {\n\t\tvariable.forecast = 0 \n\t\tvariable.forecast5 = 0\n\t\tvariable.forecast10 = 0\n\t\tvariable.forecast20 = 0\n\t\tvariable.forecast30 = 0\n\t}\n\n\t//identifying max and min forecast value until the value used to calculate the first member of the array is out of scope\n\t//The idea is to frame the forecast value by the corresponding min and max at the same distance\nvariable.lastForecast5.push(variable.forecast5)\nif(variable.lastForecast5.length > 5){\n variable.lastForecast5.splice(0,1)\n}\nvariable.maxForecast5 = Math.max.apply(Math,variable.lastForecast5)\nvariable.minForecast5 = Math.min.apply(Math,variable.lastForecast5)\n\nvariable.lastForecast10.push(variable.forecast10)\nif(variable.lastForecast10.length > 10){\n variable.lastForecast10.splice(0,1)\n}\nvariable.maxForecast10 = Math.max.apply(Math,variable.lastForecast10)\nvariable.minForecast10 = Math.min.apply(Math,variable.lastForecast10)\n\nvariable.lastForecast20.push(variable.forecast20)\nif(variable.lastForecast20.length > 10){\n variable.lastForecast20.splice(0,1)\n}\nvariable.maxForecast20 = Math.max.apply(Math,variable.lastForecast20)\nvariable.minForecast20 = Math.min.apply(Math,variable.lastForecast20)\n\nvariable.lastForecast30.push(variable.forecast30)\nif(variable.lastForecast30.length > 30){\n variable.lastForecast30.splice(0,1)\n}\nvariable.maxForecast30 = Math.max.apply(Math,variable.lastForecast30)\nvariable.minForecast30 = Math.min.apply(Math,variable.lastForecast30)\n\n//calculate time for forecast\nvariable.T5Begin = candle.begin + (candle.end - candle.begin) * 5\nvariable.T5End = candle.end + (candle.end - candle.begin) * 5\nvariable.T10Begin = candle.begin + (candle.end - candle.begin) * 10\nvariable.T10End = candle.end + (candle.end - candle.begin) * 10\nvariable.T20Begin = candle.begin + (candle.end - candle.begin) * 20\nvariable.T20End = candle.end + (candle.end - candle.begin) * 20\nvariable.T30Begin = candle.begin + (candle.end - candle.begin) * 30\nvariable.T30End = candle.end + (candle.end - candle.begin) * 30\n\t// End of code :-)", + "code": "\tlet candle = record.current\n\tlet Al = 0.4 //initial value for alpha factor\n\tlet Bet = 0.4 //initial value for beta factor\n\tlet Ph = 0.8 //initial value for phi factor\n\tlet Ga = 0.3 //initial value for gamma factor\n\tlet sLen = 5 //length of seasonal period ; integer only\n\tlet fLen = 6 //number of season period to forecast ; integer only ; forecast will be calculated on fLen * sLen = 30 periods\n\tlet Iter = 50 //number of loop to proceed parameters optimization\n\n\n\t//initializing Factors with fixed value or optimized value if exists\n\tif (variable.Alpha === undefined) {\n\t\tvariable.Alpha = Al\n\t }\n\t else {\n\t variable.Alpha = variable.Alpha\n\t }\n\t \n\tif (variable.Beta === undefined) {\n\t\tvariable.Beta = Bet\n\t }\n\t else {\n\t variable.Beta = variable.Beta\n\t }\n\n\tif (variable.Phi === undefined) {\n\t\tvariable.Phi = Ph\n\t }\n\t else {\n\t variable.Phi = variable.Phi\n\t }\n\n\tif (variable.Gamma === undefined) {\n\t\tvariable.Gamma = Ga\n\t }\n\t else {\n\t variable.Gamma = variable.Gamma\n\t }\n\t \n\t//Fetching candle close values for sLen length \n\tvariable.lastClose.push(candle.close)\n\tif(variable.lastClose.length > sLen) {\n\t\tvariable.lastClose.splice(0,1)\n\t}\n\tvariable.lastClose2x.push(candle.close)\n\tif(variable.lastClose2x.length > 2 * sLen) {\n\t\tvariable.lastClose2x.splice(0,1)\n\t}\n\t//Initializing A, B, S, Y variables according to Hyndman parameters https://robjhyndman.com/hyndsight/hw-initialization/\n\t\n\t//managing the undefined values until lastClose2x reach sufficient length\n\tvariable.trig = 0 //variable to indicate initialization stage is over\n\tif(variable.lastClose2x.length < 2 * sLen && variable.trig === 0) {\n\t\tvariable.Y = 0 //forecast through history variable\n\t\tvariable.A = 0 //level\n\t\tvariable.B = 0 //trend\n\t\tvariable.S[0] = 0 //season\n\t\tvariable.previousB = variable.B\n\t\tvariable.previousA = variable.A\n\t\tvariable.trend = 0\n\t}\n\tif(variable.lastClose2x.length === 2 * sLen && variable.trig === 0) {\n\t\tfor(var i = 0 ; i < sLen ; i++) {\n\t\t\tvariable.previousA = variable.previousA + variable.lastClose[i]\n\t\t}\n\t\tvariable.previousA = variable.previousA / sLen\n\t\tfor(var i = 0; i < sLen ; i++) {\n\t\t\tvariable.previousB = variable.previousB + variable.lastClose2x[i + sLen] - variable.lastClose2x[i]\n\t\t}\n\t\tvariable.previousB = variable.previousB / Math.pow(sLen,2)\n\t\tvariable.S[0] = candle.close / variable.previousA\n\t\tvariable.trig = 1 \n\t\tvariable.trend = 0\n\t}\n\tif(variable.lastClose2x.length === 2* sLen && variable.trig === 1)\n\t{\n\t\tvariable.Y = (variable.previousA + variable.Phi * variable.previousB) * variable.S[0]\n\t\tvariable.A = variable.Alpha * variable.Y / variable.S[0] + (1 - variable.Alpha) * (variable.previousA + variable.Phi * variable.previousB)\n\t\tvariable.B = variable.Beta * (variable.A - variable.previousA) + (1 - variable.Beta) * variable.Phi * variable.previousB\n\t\tvariable.S.push(variable.Gamma * variable.Y / variable.A + (1 - variable.Gamma) * variable.S[0])\n\t\tvariable.slope = variable.B - variable.previousB\n\t\tif(variable.slope < 0){\n\t\t\tvariable.trend = 1\n\t\t}\n\t\telse {\n\t\t\tvariable.trend = -1\n\t\t}\n\t\tvariable.previousA = variable.A\n\t\tvariable.previousB = variable.B\n\t}\n\n\t//keep Season array to the right size\n\tif(variable.S.length > sLen) {\n\t\tvariable.S.splice(0,1)\n\t}\n\n\t//Parameters optimization\n\t//calculation of initial mean square error\n\n\tvariable.Errors.push(Math.pow(variable.Y - candle.close, 2))\n\tif(variable.Errors.length > sLen) {\n\t\t\tvariable.Errors.splice(0,1)\n\t}\n\tif(variable.Errors.length === sLen) {\n\t\tvariable.ErrSqSum = 0\n\t\tfor (var k = 0 ; k < variable.Errors.length ; k++) {\n\t\t\t\tvariable.ErrSqSum = variable.ErrSqSum + variable.Errors[k]\n\t\t}\n\t\tvariable.MS = variable.ErrSqSum / variable.Errors.length\n\t\tif(variable.lastClose2x.length === 2*sLen && variable.trig === 1 ){\n\t\t//initialiying best parameters calculation\n\t\tvariable.bestAlpha = 0\n\t\tvariable.bestBeta = variable.Beta\n\t\tvariable.bestPhi = variable.Phi\n\t\tvariable.bestGamma = variable.Gamma\n\t\tvariable.bestError = variable.MS\n\t\t//Alpha optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestAlpha = variable.bestAlpha +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Alpha = variable.bestAlpha\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestBeta = 0\n\t\t//Beta optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestBeta = variable.bestBeta +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Beta = variable.bestBeta\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestPhi = 0.8\n\t\t//Phi optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestPhi = variable.bestPhi +(1 - (i/Iter) * 0.2)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Phi = variable.bestPhi\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestGamma = 0\n\t\t//Gamma optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestGamma = variable.bestGamma +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Gamma = variable.bestGamma\n\t\t\t}\n\t\t\n\t\t}\n\t}\n\t}\n\t//initializing forecast data\n\tvariable.fS = [] // purge the season array for forecast data\n\tvariable.previousfA = variable.A //equivalent A variable for the forecast calculation\n\tvariable.previousfB = variable.B //equivalent B variable for the forecast calculation\n\n\n\t//calculating forecast data\n\tif(variable.S.length === sLen && variable.trig === 1) {\n\tfor (var j = 0; j < fLen ; j++) {\n\t\tfor(var n = 0; n < sLen; n++) {\n\t\t\tvariable.fY.push((variable.previousfA + variable.Phi * variable.previousfB) * variable.S[n])\n\t\t\tvariable.fA = variable.previousfA + variable.Phi * variable.previousfB\n\t\t\tvariable.fB = variable.Phi * variable.previousfB\n\t\t\tvariable.previousfA = variable.fA\n\t\t\tvariable.previousfB = variable.fB\n\t\t\tif(variable.fY.length > fLen * sLen) {\n\t\t\t\tvariable.fY.splice(0,1)\n\t\t\t}\n\t\t}\n\t}\n\n\t\tvariable.forecast = 100 * variable.fY[0] \n\t\tvariable.forecast5 = 100 * (variable.fY[4] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast10 = 100 * (variable.fY[9] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast20 = 100 * (variable.fY[19] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast30 = 100 * (variable.fY[29] - variable.fY[0])/variable.fY[0]\n\t \n\t} else {\n\t\tvariable.forecast = 0 \n\t\tvariable.forecast5 = 0\n\t\tvariable.forecast10 = 0\n\t\tvariable.forecast20 = 0\n\t\tvariable.forecast30 = 0\n\t}\n\n\t//identifying max and min forecast value until the value used to calculate the first member of the array is out of scope\n\t//The idea is to frame the forecast value by the corresponding min and max at the same distance\nvariable.lastForecast5.push(variable.forecast5)\nif(variable.lastForecast5.length > 5){\n variable.lastForecast5.splice(0,1)\n}\nvariable.maxForecast5 = Math.max.apply(Math,variable.lastForecast5)\nvariable.minForecast5 = Math.min.apply(Math,variable.lastForecast5)\n\nvariable.lastForecast10.push(variable.forecast10)\nif(variable.lastForecast10.length > 10){\n variable.lastForecast10.splice(0,1)\n}\nvariable.maxForecast10 = Math.max.apply(Math,variable.lastForecast10)\nvariable.minForecast10 = Math.min.apply(Math,variable.lastForecast10)\n\nvariable.lastForecast20.push(variable.forecast20)\nif(variable.lastForecast20.length > 10){\n variable.lastForecast20.splice(0,1)\n}\nvariable.maxForecast20 = Math.max.apply(Math,variable.lastForecast20)\nvariable.minForecast20 = Math.min.apply(Math,variable.lastForecast20)\n\nvariable.lastForecast30.push(variable.forecast30)\nif(variable.lastForecast30.length > 30){\n variable.lastForecast30.splice(0,1)\n}\nvariable.maxForecast30 = Math.max.apply(Math,variable.lastForecast30)\nvariable.minForecast30 = Math.min.apply(Math,variable.lastForecast30)\n\n//calculate time for forecast\nvariable.T5Begin = candle.begin + (candle.end - candle.begin) * 5\nvariable.T5End = candle.end + (candle.end - candle.begin) * 5\nvariable.T10Begin = candle.begin + (candle.end - candle.begin) * 10\nvariable.T10End = candle.end + (candle.end - candle.begin) * 10\nvariable.T20Begin = candle.begin + (candle.end - candle.begin) * 20\nvariable.T20End = candle.end + (candle.end - candle.begin) * 20\nvariable.T30Begin = candle.begin + (candle.end - candle.begin) * 30\nvariable.T30End = candle.end + (candle.end - candle.begin) * 30\n\t// End of code :-)", "project": "Foundations", - "id": "16a25313-f0cb-4417-ba14-b190db8d1976", + "id": "f6c9e884-3ef4-426b-9b9f-a4261a8df484", "savedPayload": { "position": { - "x": 15961.783950307796, - "y": 9579.403933161964 + "x": 14995.177608283679, + "y": 10181.345339543279 }, "targetPosition": { - "x": 16298.637993059752, - "y": 9600.275058710493 + "x": 15442.712461199402, + "y": 10134.307531072835 }, "floatingObject": { "isPinned": false, @@ -10941,15 +10941,15 @@ "uiObject": {} } }, - "id": "0c3b5852-ddef-4c93-bbc5-3ab5831a5d3a", + "id": "5aebdf26-ac85-4ad2-b6c8-b18ab9e5ed1f", "savedPayload": { "position": { - "x": 16298.637993059752, - "y": 9600.275058710493 + "x": 15442.712461199402, + "y": 10134.307531072835 }, "targetPosition": { - "x": 16972.346078563667, - "y": 9642.017309807552 + "x": 16337.782167030848, + "y": 10040.231914131946 }, "floatingObject": { "isPinned": false, @@ -10973,15 +10973,15 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.lastClose = []\nvariable.S = []\nvariable.fY = []\nvariable.Errors = []\nvariable.lastClose2x = []\nvariable.lastForecast5 = []\nvariable.lastForecast10 = []\nvariable.lastForecast20 = []\nvariable.lastForecast30 = []", "project": "Foundations", - "id": "87837913-03e1-4ee9-a3f5-b488fdd03111", + "id": "cf6b31a1-526b-48d7-a936-14b29454d15e", "savedPayload": { "position": { - "x": 16777.44521280114, - "y": 9250.328782371507 + "x": 16007.152962616332, + "y": 9585.159854796038 }, "targetPosition": { - "x": 16821.99398211829, - "y": 9339.857588642602 + "x": 16073.278803499235, + "y": 9676.17426666322 }, "floatingObject": { "isPinned": false, @@ -10994,15 +10994,15 @@ "uiObject": {} } }, - "id": "c4ea6f69-8e93-4eae-9ac2-a2d94e42b1d1", + "id": "806c5064-100e-4ab4-ab85-329c440398da", "savedPayload": { "position": { - "x": 16821.99398211829, - "y": 9339.857588642602 + "x": 16073.278803499235, + "y": 9676.17426666322 }, "targetPosition": { - "x": 16972.346078563667, - "y": 9642.017309807552 + "x": 16337.782167030848, + "y": 10040.231914131946 }, "floatingObject": { "isPinned": false, @@ -11017,15 +11017,15 @@ } } }, - "id": "56b2c33b-678b-442e-a63d-64f6e3d1c955", + "id": "4562e140-5dee-4319-9aa6-02bc42986222", "savedPayload": { "position": { - "x": 16972.346078563667, - "y": 9642.017309807552 + "x": 16337.782167030848, + "y": 10040.231914131946 }, "targetPosition": { - "x": 18097.500461029347, - "y": 10388.02509503387 + "x": 17982.16399078753, + "y": 10772.357871668386 }, "floatingObject": { "isPinned": false, @@ -11040,20 +11040,20 @@ } } }, - "id": "b45f0967-0f05-4642-95d1-cec1cda28e1a", + "id": "251c4809-a850-4afa-abb4-35032614a5ef", "savedPayload": { "position": { - "x": 18097.500461029347, - "y": 10388.02509503387 + "x": 17982.16399078753, + "y": 10772.357871668386 }, "targetPosition": { - "x": 18729.941525404185, - "y": 10152.13677380448 + "x": 18761.586854193523, + "y": 10322.357871668386 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 2, "distanceToParent": 4, "arrangementStyle": 0 @@ -11064,20 +11064,20 @@ "referenceParent": { "type": "Plotter Module", "name": "Holt-Winters", - "id": "ef3e203e-5ae7-4130-94d9-1d10e54e9011" + "id": "634c5896-178f-4514-8628-4c8f2fb1e82e" } } } ], - "id": "b33da1b3-4451-44a8-a995-ac4613e153d8", + "id": "acbe2d87-0971-4b7e-862e-e0caabfb6b9b", "savedPayload": { "position": { - "x": 18729.941525404185, - "y": 10152.13677380448 + "x": 18016.99138390875, + "y": 10364.787270857707 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -11112,7 +11112,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market FastTrend3", "project": "Foundations", - "id": "5ee01e8b-844d-4195-a187-4c7bfbb3401a", + "id": "058b05ef-5fef-4184-b358-bc8a8debc60b", "savedPayload": { "position": { "x": 20254.955643235317, @@ -11134,13 +11134,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "1e841e07-44d6-485e-bbad-2d106a36cd7c" + "id": "55fcfe20-222d-4782-b2db-fdaacd24848c" } } } ], "outputDatasetFolders": [], - "id": "aa153a01-3525-4d73-af51-fedfd3277237", + "id": "3d418856-8d6f-4ad1-88a7-868bae236ede", "savedPayload": { "position": { "x": 20003.35447285169, @@ -11173,7 +11173,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "c9b49060-5fa3-4d0f-a101-59823c4b8b19", + "id": "f2d33251-9b43-47a4-a6c3-6b5031939351", "savedPayload": { "position": { "x": 20482.593927030674, @@ -11204,7 +11204,7 @@ "name": "FastTrend 3 Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "a7f7f933-a5ff-476e-886e-31d83cc2dc64", + "id": "6955aee6-723c-4ba4-b872-9ac33a01b46b", "savedPayload": { "position": { "x": 20362.017734697776, @@ -11226,7 +11226,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-FastTrend", - "id": "b6ba9a81-488a-46f7-a4ba-935c8c014b05" + "id": "f0649188-62cd-4e43-ac0b-0e112eb348b1" } } } @@ -11236,7 +11236,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "26d436f8-72d6-4bb8-b97c-36334ea94a92", + "id": "e01132e8-f69b-432f-90bd-6d33b216f462", "savedPayload": { "position": { "x": 20282.501139806605, @@ -11264,7 +11264,7 @@ } ], "dataMineDataDependencies": [], - "id": "509bab6a-665a-4f76-a9d7-eeb0869cc8f7", + "id": "20cf1ae1-6b16-4855-9157-f7edbdbccf56", "savedPayload": { "position": { "x": 20201.13659310762, @@ -11291,7 +11291,7 @@ "type": "Status Report", "name": "Market-FastTrend", "project": "Foundations", - "id": "b6ba9a81-488a-46f7-a4ba-935c8c014b05", + "id": "f0649188-62cd-4e43-ac0b-0e112eb348b1", "savedPayload": { "position": { "x": 20019.055259724573, @@ -11316,7 +11316,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "3c8610a4-0e6a-461c-bf50-653cdf5302cc", + "id": "2ee12a12-43b1-40a2-baf2-4d632198c02e", "savedPayload": { "position": { "x": 19833.44915772032, @@ -11346,7 +11346,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "5703021a-25f9-45c7-84bd-7bc246a4abcb", + "id": "b44d48c0-ae9b-4558-acb8-09fa55352358", "savedPayload": { "position": { "x": 19759.603695904505, @@ -11367,7 +11367,7 @@ "uiObject": {} } }, - "id": "8700d858-9f8c-4c67-88f9-7d586757a863", + "id": "9e654d5d-f4ce-4545-9d0d-1135e87140f3", "savedPayload": { "position": { "x": 18508.185016497053, @@ -11404,7 +11404,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily FastTrend3", "project": "Foundations", - "id": "2ea77b30-b854-4f3e-bc40-9b1e667cbc69", + "id": "3ec25880-e703-4d58-972b-b07a6392a543", "savedPayload": { "position": { "x": 20059.750725970778, @@ -11426,13 +11426,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "988fff95-d616-4417-8e8d-31b49cf73da1" + "id": "8488aabb-ea7e-4263-958f-2e2e2fd77c25" } } } ], "outputDatasetFolders": [], - "id": "4c5839b8-5d1b-406e-b70d-efdc3e02b91e", + "id": "76ae5896-e784-4023-be6c-ae0e63c8436e", "savedPayload": { "position": { "x": 19777.842939735005, @@ -11465,7 +11465,7 @@ "name": "FastTrend 3 Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "74d066d2-ea92-47f8-9d36-5536aa45e158", + "id": "a65a063c-d897-4b66-9954-fa610147dcaf", "savedPayload": { "position": { "x": 19964.922892440925, @@ -11487,7 +11487,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "f78a6bcb-57bd-404f-994d-21b3b4ca8eee" + "id": "47e3c2a1-fd78-44e8-87f4-0b3fef5fb447" } } }, @@ -11496,7 +11496,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "131844f6-02e6-4f3a-97d6-fb75eb29e2a6", + "id": "8afa3bf2-2474-4f59-b2f0-3e86cc93971f", "savedPayload": { "position": { "x": 19915.184310472025, @@ -11527,7 +11527,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "30d4bc39-6faa-434d-bf51-7af97516ab34", + "id": "86e6558d-7d0c-4892-a707-f34c178f3f5c", "savedPayload": { "position": { "x": 19843.28285887821, @@ -11559,7 +11559,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "b82163c5-4bef-4e51-8395-af16d10190be", + "id": "6f5433fe-1e06-4b4e-a99a-8b762cadb46a", "savedPayload": { "position": { "x": 19756.256752708352, @@ -11587,7 +11587,7 @@ } ], "dataMineDataDependencies": [], - "id": "2c36a0a6-7ab4-47ff-a618-c6d5007bdc1b", + "id": "f49b1e5c-06a7-4a44-916e-ca816c482d95", "savedPayload": { "position": { "x": 19688.771436405194, @@ -11614,7 +11614,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "f78a6bcb-57bd-404f-994d-21b3b4ca8eee", + "id": "47e3c2a1-fd78-44e8-87f4-0b3fef5fb447", "savedPayload": { "position": { "x": 19521.98238014927, @@ -11639,7 +11639,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "d089606a-39b9-43ab-99be-9f25ed01a2a2", + "id": "90289629-275e-40b0-aeee-133b02071db5", "savedPayload": { "position": { "x": 19444.63213200038, @@ -11669,7 +11669,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "f169f1ab-f5c7-4832-bdba-d5a531cc746e", + "id": "61e4e5ba-2089-4ebe-a209-2968f379c1b0", "savedPayload": { "position": { "x": 19381.028487031384, @@ -11690,7 +11690,7 @@ "uiObject": {} } }, - "id": "daceda53-4fb9-4d37-b209-2caafdd3cc3d", + "id": "acce8b98-0555-4534-8f6f-27bd0cf44125", "savedPayload": { "position": { "x": 18353.062708783487, @@ -11726,7 +11726,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "1e841e07-44d6-485e-bbad-2d106a36cd7c", + "id": "55fcfe20-222d-4782-b2db-fdaacd24848c", "savedPayload": { "position": { "x": 19590.606588684044, @@ -11752,7 +11752,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "988fff95-d616-4417-8e8d-31b49cf73da1", + "id": "8488aabb-ea7e-4263-958f-2e2e2fd77c25", "savedPayload": { "position": { "x": 19236.63199663631, @@ -11789,7 +11789,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "9a590e2a-46a0-4c24-86a6-6e286ddcfeb2", + "id": "99ad253d-2184-442f-888c-65a353894b78", "savedPayload": { "position": { "x": 19712.863475894155, @@ -11810,7 +11810,7 @@ "uiObject": {} } }, - "id": "fd453b12-a520-44aa-bf0f-e2d621be2c71", + "id": "a5f0aaac-01ff-4f5a-bd08-5e1aae3022e1", "savedPayload": { "position": { "x": 19544.283395915307, @@ -11843,7 +11843,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "421831f9-cb0a-44ce-988c-914caa1a2290", + "id": "b42fa983-08ef-47da-8c64-085fd510dd86", "savedPayload": { "position": { "x": 19540.20471596459, @@ -11864,7 +11864,7 @@ "uiObject": {} } }, - "id": "6ce9030a-1e5f-4d71-b43e-398321ebf2ee", + "id": "34088c1d-63b8-47c2-9a70-6202019963c2", "savedPayload": { "position": { "x": 19429.177555962266, @@ -11897,7 +11897,7 @@ "name": "New Formula", "code": "variable.PositiveDisorder", "project": "Foundations", - "id": "964bd6b8-e1f4-4ace-8527-d21ab15c7f8e", + "id": "ba63bc8f-2993-475e-bf47-cabd1a3b205d", "savedPayload": { "position": { "x": 19116.728807965803, @@ -11918,7 +11918,7 @@ "uiObject": {} } }, - "id": "4dcd8ffa-af1b-4549-8e21-1fd7d9b3c876", + "id": "9d048dd0-cd36-429a-8bef-1d137f586388", "savedPayload": { "position": { "x": 19146.860283963073, @@ -11951,7 +11951,7 @@ "name": "New Formula", "code": "variable.NegativeDisorder", "project": "Foundations", - "id": "3d8be40d-5c5c-4100-b7cd-cc13d6db7648", + "id": "fb5de011-ba5e-4956-b4d3-2f69f04fc485", "savedPayload": { "position": { "x": 18761.32174795514, @@ -11972,7 +11972,7 @@ "uiObject": {} } }, - "id": "79d4acc1-da4c-4239-bf6a-1feddb9f75a3", + "id": "0e2c1187-ea8e-4a80-a38f-dd7b2bd3b066", "savedPayload": { "position": { "x": 18909.922243955963, @@ -12005,7 +12005,7 @@ "name": "New Formula", "code": "variable.FastTrend", "project": "Foundations", - "id": "a4e1869a-5d6e-418f-8a04-e73dafc2402f", + "id": "ddc2a1d8-b907-4f45-b1e9-c7a8f2454369", "savedPayload": { "position": { "x": 18741.61230110344, @@ -12026,7 +12026,7 @@ "uiObject": {} } }, - "id": "684162a1-40c9-4f98-962b-5e2218ae50f4", + "id": "448784cb-7f09-4cca-9431-038dac0bf133", "savedPayload": { "position": { "x": 18896.782612721498, @@ -12059,7 +12059,7 @@ "name": "New Record Formula", "code": "variable.interTrend", "project": "Foundations", - "id": "5b9925ce-7f76-4d9d-9202-6e93c4d348d9", + "id": "354be864-b369-4af5-a41b-21d44f8d4481", "savedPayload": { "position": { "x": 19072.442082889484, @@ -12080,7 +12080,7 @@ "uiObject": {} } }, - "id": "3cc885c7-9a41-40f6-b89e-ae4707a00782", + "id": "5bbffcfc-54f1-44ef-b353-50918be15298", "savedPayload": { "position": { "x": 19117.33580057886, @@ -12104,7 +12104,7 @@ } } ], - "id": "1eceaa42-55eb-4a9b-889c-aefb40bc0de9", + "id": "54425344-5824-4253-86b7-94d56fd92918", "savedPayload": { "position": { "x": 19409.61961547587, @@ -12140,7 +12140,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\nlet FTLen = 3 // Channel length\nlet candle = record.current\nlet BIAS = 0.35 // biased limit value for Math.log2 (0)\n\n\nif (variable.previousEma5 === undefined) {\nvariable.previousEma5 = candle.close\n}\n\n// Calculate EMA5\nvariable.Ema5 = calculateEMA(5, candle.close, variable.previousEma5)\nvariable.previousEma5 = variable.Ema5\n\n\n// Build arrays Max, Min, Close, Open\n\nvariable.lastMax.push(candle.max) \nvariable.lastMin.push(candle.min)\nvariable.lastOpens.push(candle.open)\nvariable.lastCloses.push(candle.close)\nvariable.lastEMA5s.push(variable.Ema5)\n\n\n\n// Keep the array the correct size\n\nif (variable.lastMax.length > FTLen) {\n variable.lastMax.splice(0, 1)\n}\n\nif (variable.lastMin.length > FTLen) {\n variable.lastMin.splice(0, 1)\n}\n\nif (variable.lastOpens.length > FTLen) {\n variable.lastOpens.splice(0, 1)\n}\n\nif (variable.lastCloses.length > FTLen) {\n variable.lastCloses.splice(0, 1)\n}\n\nif (variable.lastEMA5s.length > FTLen) {\n variable.lastEMA5s.splice(0, 1)\n}\n// Calculate indicator values\n\n\n\n\nvariable.PositiveDisorder = CalPosEntropy () // Positive disorder\nvariable.NegativeDisorder = CalNegEntropy () // Negative disorder\nif(variable.PositiveDisorder === 0 && variable.NegativeDisorder === 0){\n\tvariable.FastTrend = 0\n}\nelse {\n\tvariable.FastTrend = ( variable.NegativeDisorder - variable.PositiveDisorder ) / ( variable.NegativeDisorder + variable.PositiveDisorder)\n}//calculation of the fast trend indicator\n\nvariable.lastFastTrend.push(variable.FastTrend)\nif(variable.lastFastTrend.length > 2 ) {\n\tvariable.lastFastTrend.splice(0,1)\n}\n\n//Determine the intermediate trend i.e. pullbacks\nif(variable.lastMax.length < FTLen) {\n\tvariable.interTrend = 0\n}\nelse {\n\tif(variable.lastFastTrend.length === 2){\n\t\tvariable.Slope = variable.lastFastTrend[1] - variable.lastFastTrend[0]\n\t\tif(variable.Slope > 0) {\n\t\t\t\tvariable.interTrend = 1\n\t\t}\n\t\t\tif(variable.Slope < 0) {\n\t\t\t\tvariable.interTrend = -1\n\t\t}\n\t\t\tif(variable.Slope = 0) {\n\t\t\t\tvariable.interTrend = 0\n\t\t}\n\t}\n\telse {\n\t\tvariable.interTrend = 0\n\t}\n}\n//functions\n//EMA5 calculation\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\nfunction CalPosEntropy ()\n\n\n{variable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\n\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var i = 0 ; i < FTLen ; i++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMax = variable.PosMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMin = variable.PosMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosOpen = variable.PosOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosClose = variable.PosClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.PosMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMax = (variable.PosMax / FTLen) * Math.log2(1/(variable.PosMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMax = BIAS\n\t}\n\tif (variable.PosMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMin = (variable.PosMin / FTLen) * Math.log2(1/(variable.PosMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMin = BIAS\n\t}\n\tif (variable.PosOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosOpen = (variable.PosOpen / FTLen) * Math.log2(1/(variable.PosOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosOpen = BIAS\n\t}\n\tif (variable.PosClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosClose = (variable.PosClose / FTLen) * Math.log2(1/(variable.PosClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosClose = BIAS\n\t}\n\t\n\tvariable.PosEnt = variable.EntPosClose + variable.EntPosMax + variable.EntPosMin + variable.EntPosOpen //sum on 4 entropies\n\t\n\treturn variable.PosEnt\n}\n\nfunction CalNegEntropy ()\n\n{variable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var j = 0 ; j < FTLen ; j++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMax = variable.NegMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMin = variable.NegMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegOpen = variable.NegOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegClose = variable.NegClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.NegMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMax = (variable.NegMax / FTLen) * Math.log2(1/(variable.NegMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMax = BIAS\n\t}\n\tif (variable.NegMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMin = (variable.NegMin / FTLen) * Math.log2(1/(variable.NegMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMin = BIAS\n\t}\n\tif (variable.NegOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegOpen = (variable.NegOpen / FTLen) * Math.log2(1/(variable.NegOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegOpen = BIAS\n\t}\n\tif (variable.NegClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegClose = (variable.NegClose / FTLen) * Math.log2(1/(variable.NegClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegClose = BIAS\n\t}\n\t\n\tvariable.NegEnt = variable.EntNegClose + variable.EntNegMax + variable.EntNegMin + variable.EntNegOpen //sum on 4 entropies\n\t\n\treturn variable.NegEnt\n}\n\n// End of code :-)", "project": "Foundations", - "id": "9ac6a6ae-981c-4fcb-a382-23ef02af8dfe", + "id": "c40c0867-61a4-43ae-a9e9-d734a411ae24", "savedPayload": { "position": { "x": 20192.40408035277, @@ -12161,7 +12161,7 @@ "uiObject": {} } }, - "id": "b203a0f7-fd59-40e8-bc76-6364159198b6", + "id": "50405b42-019b-4744-8b45-a635601b543c", "savedPayload": { "position": { "x": 20088.110844751227, @@ -12193,7 +12193,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.lastMax = []\nvariable.lastMin = []\nvariable.lastOpens = []\nvariable.lastCloses = []\nvariable.lastEMA5s = []\nvariable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\nvariable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\nvariable.lastFastTrend = []", "project": "Foundations", - "id": "37cb1741-34df-461d-a2af-2c2b253fd5ae", + "id": "17e06880-5690-4794-bcb7-9d74587e3031", "savedPayload": { "position": { "x": 20568.79004642963, @@ -12214,7 +12214,7 @@ "uiObject": {} } }, - "id": "834962b1-55c3-4c9d-8bdc-54bad977cc46", + "id": "5a2039e1-3a42-4aac-b56e-5a4ca76796fe", "savedPayload": { "position": { "x": 20238.66523118197, @@ -12237,7 +12237,7 @@ } } }, - "id": "e9d0e2b3-9c82-4f64-ab0c-e380c7ad9d99", + "id": "61efe718-3a4f-44cc-b58f-1ee9d62f7a07", "savedPayload": { "position": { "x": 20018.582021016864, @@ -12260,7 +12260,7 @@ } } }, - "id": "1b2205a5-491e-47ab-9e81-a93382dd5864", + "id": "efdc59c3-a9e9-44c3-b807-c79b18db6136", "savedPayload": { "position": { "x": 18227.13199085277, @@ -12284,20 +12284,20 @@ "referenceParent": { "type": "Plotter Module", "name": "FastTrend3", - "id": "87a4815b-9205-4bc4-88d5-021d40b4a2aa" + "id": "bef63eda-a799-4bce-86ad-517848a46a37" } } } ], - "id": "cbab21f1-b815-403a-9d03-d34a96a18f09", + "id": "db60e863-9cce-46b9-ba1a-117a62f0fdaa", "savedPayload": { "position": { - "x": 18622.190950979657, - "y": 10082.889684354363 + "x": 17879.796341628382, + "y": 10340.59608328424 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -12332,7 +12332,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market FastTrend5", "project": "Foundations", - "id": "daf34ae7-dbe9-400b-966c-1909348d28f5", + "id": "9a9f501f-1570-4ed6-934a-15ad906fc0ef", "savedPayload": { "position": { "x": 19947.36342947109, @@ -12354,13 +12354,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "bab9e881-425a-4237-b2fa-75f2fbd28827" + "id": "bd4b2174-a3f0-4304-b0b9-184364ee75d7" } } } ], "outputDatasetFolders": [], - "id": "b727d408-2e9f-4c94-a16d-28b960920c00", + "id": "3aec7f7e-1e03-435a-a598-eea72cf2f777", "savedPayload": { "position": { "x": 19695.762259087463, @@ -12393,7 +12393,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "56e0c8c6-4140-45b7-830a-c26cb97b80a8", + "id": "aef59c75-4037-401e-a419-76b2c3fce3f2", "savedPayload": { "position": { "x": 20175.001713266447, @@ -12424,7 +12424,7 @@ "name": "FastTrend 5 Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "c41328e5-b4c3-478a-a4e0-6b555bfc1a20", + "id": "85d341ae-d1c7-4fb2-b3db-fad26e1cd957", "savedPayload": { "position": { "x": 20054.42552093355, @@ -12446,7 +12446,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-FastTrend", - "id": "27253045-e4ce-401b-a8f4-41a9e339468c" + "id": "c6b1836b-604f-4d6e-abb4-aa3192db08e8" } } } @@ -12456,7 +12456,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "a7af7dd1-d2b7-4c66-9e51-263d89db9263", + "id": "faacfe6f-369f-4e82-adee-bfd40c9ac26a", "savedPayload": { "position": { "x": 19974.90892604238, @@ -12484,7 +12484,7 @@ } ], "dataMineDataDependencies": [], - "id": "33a404ff-bdb6-47ae-a19a-923560aef8dd", + "id": "11f64e37-3124-42ca-b0d3-eb2284d289f9", "savedPayload": { "position": { "x": 19893.544379343395, @@ -12511,7 +12511,7 @@ "type": "Status Report", "name": "Market-FastTrend", "project": "Foundations", - "id": "27253045-e4ce-401b-a8f4-41a9e339468c", + "id": "c6b1836b-604f-4d6e-abb4-aa3192db08e8", "savedPayload": { "position": { "x": 19711.463045960347, @@ -12536,7 +12536,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "871e54d5-debc-49c8-b0da-1cccd7705c91", + "id": "85c8cc86-1a07-4648-8db0-2df28e7bd6b9", "savedPayload": { "position": { "x": 19525.856943956092, @@ -12566,7 +12566,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "650edf98-8ee2-4f65-ab1a-39449bcba209", + "id": "0c4c779d-eef1-44c4-ae5b-bed67869830d", "savedPayload": { "position": { "x": 19452.01148214028, @@ -12587,7 +12587,7 @@ "uiObject": {} } }, - "id": "081fa6fa-694a-4515-9583-8543e5436fec", + "id": "df578fde-7fd0-4e64-8483-f6b855d435cb", "savedPayload": { "position": { "x": 18442.659811182166, @@ -12624,7 +12624,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily FastTrend5", "project": "Foundations", - "id": "a4ff3952-162b-4902-bac7-0b5b02149bce", + "id": "588321b8-2eb5-4cc1-9df2-a40a0054cdad", "savedPayload": { "position": { "x": 19752.15851220655, @@ -12646,13 +12646,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "48359ea6-2726-4921-a4cf-a1ddb571c295" + "id": "b3130f0b-e3f1-4218-994f-ef3f24f3e449" } } } ], "outputDatasetFolders": [], - "id": "38c2f711-34a4-4ff3-91e8-c5620d616d4c", + "id": "24459c7c-d79c-415a-8461-0791ee65aebd", "savedPayload": { "position": { "x": 18181.161963827657, @@ -12685,7 +12685,7 @@ "name": "FastTrend 5 Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "8d914cd0-46d4-47e2-a5f7-3ef3fff1a92c", + "id": "d9915245-645c-41ba-b774-45f7ae38976b", "savedPayload": { "position": { "x": 17951.406180027254, @@ -12707,7 +12707,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "73672bdf-1910-481c-9e72-f8cc40146bb2" + "id": "afe6782e-6f5a-4a3c-ac18-5ecee2d1703d" } } }, @@ -12716,7 +12716,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "c57b2d2e-0f42-44c6-afe1-594c4a736471", + "id": "2761c4b7-eea5-4022-890c-49c8147f7ac5", "savedPayload": { "position": { "x": 17812.454944205514, @@ -12747,7 +12747,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "df2ef307-bb01-41cd-b503-3f6aa0108072", + "id": "31bb2929-fce6-4396-9641-f459e1012286", "savedPayload": { "position": { "x": 17687.3148960783, @@ -12779,7 +12779,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "3c69f8d3-1c0d-43cc-9f9d-814e1225b41f", + "id": "878332c9-12c0-4ca3-aaf8-3fca1f774849", "savedPayload": { "position": { "x": 17588.235615458285, @@ -12807,7 +12807,7 @@ } ], "dataMineDataDependencies": [], - "id": "11a60617-3ac2-4d71-a24f-3d47f225bc81", + "id": "b117155c-28bd-41a0-9dcf-2f741b813f01", "savedPayload": { "position": { "x": 17953.54816692964, @@ -12834,7 +12834,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "73672bdf-1910-481c-9e72-f8cc40146bb2", + "id": "afe6782e-6f5a-4a3c-ac18-5ecee2d1703d", "savedPayload": { "position": { "x": 17970.46805681996, @@ -12859,7 +12859,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "d300961f-91ec-4fb8-8b26-831af0ced5a8", + "id": "f6dce6d6-f1dd-4905-be6d-61f264d04708", "savedPayload": { "position": { "x": 17935.004950390798, @@ -12889,7 +12889,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "590e398d-23f7-40a5-977d-9809d4df39ae", + "id": "3db28af4-9d76-4f08-97de-820a8e795e36", "savedPayload": { "position": { "x": 17959.762125759615, @@ -12910,7 +12910,7 @@ "uiObject": {} } }, - "id": "a1b86682-441d-4bbd-a3ba-71bb7f9b43ad", + "id": "e155cc58-97a9-4b21-8c1c-400fe9738aed", "savedPayload": { "position": { "x": 18159.750101706974, @@ -12946,7 +12946,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "bab9e881-425a-4237-b2fa-75f2fbd28827", + "id": "bd4b2174-a3f0-4304-b0b9-184364ee75d7", "savedPayload": { "position": { "x": 18160.21288121362, @@ -12972,7 +12972,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "48359ea6-2726-4921-a4cf-a1ddb571c295", + "id": "b3130f0b-e3f1-4218-994f-ef3f24f3e449", "savedPayload": { "position": { "x": 17786.14863721391, @@ -13009,7 +13009,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "6ca80485-bcc2-41e6-963f-b2ee1e52d957", + "id": "f90af9ba-fa86-419d-ab8b-3fb44789ffbf", "savedPayload": { "position": { "x": 19405.27126212993, @@ -13030,7 +13030,7 @@ "uiObject": {} } }, - "id": "ef51aadc-4ecc-4e74-b34e-051a155bffb3", + "id": "d525a8a1-1c6c-4da8-96e2-295757144704", "savedPayload": { "position": { "x": 19236.69118215108, @@ -13063,7 +13063,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "5d3df8bd-a908-4fd7-971f-dca0193365ae", + "id": "e9d55208-e9f3-42cf-bfd7-9ce9a7d5c159", "savedPayload": { "position": { "x": 19232.612502200365, @@ -13084,7 +13084,7 @@ "uiObject": {} } }, - "id": "33796b72-e2fb-49f2-8764-4747fd4201f7", + "id": "a95030a1-b4a5-4f2b-9d24-74c0199c1e9f", "savedPayload": { "position": { "x": 19121.58534219804, @@ -13117,7 +13117,7 @@ "name": "New Formula", "code": "variable.PositiveDisorder", "project": "Foundations", - "id": "b4065ce5-18ef-45cd-973d-162ee5b3c087", + "id": "fdf7b17c-d8da-4d6d-914b-577af0af829d", "savedPayload": { "position": { "x": 18809.136594201576, @@ -13138,7 +13138,7 @@ "uiObject": {} } }, - "id": "89f62094-ac1c-4d9c-8f70-0746fd5adc38", + "id": "d81f83fb-d7a6-4712-8ac8-5d10711268bb", "savedPayload": { "position": { "x": 18839.268070198847, @@ -13171,7 +13171,7 @@ "name": "New Formula", "code": "variable.NegativeDisorder", "project": "Foundations", - "id": "10356fbe-62a5-47b1-802a-4c42e6e75298", + "id": "2d8b3175-1d02-4e99-b470-edc8240212b2", "savedPayload": { "position": { "x": 18453.729534190912, @@ -13192,7 +13192,7 @@ "uiObject": {} } }, - "id": "0e20cbc4-eaab-4e14-bd84-aa4f38bfba94", + "id": "a57a7c4e-3aa7-4de8-9ff8-4f936bff8c0d", "savedPayload": { "position": { "x": 18602.330030191737, @@ -13225,7 +13225,7 @@ "name": "New Formula", "code": "variable.FastTrend", "project": "Foundations", - "id": "b670b0de-4274-4450-a5ac-8d145820a389", + "id": "e183e636-db30-4f19-a7e5-eb241ddf52e9", "savedPayload": { "position": { "x": 18434.020087339213, @@ -13246,7 +13246,7 @@ "uiObject": {} } }, - "id": "f15b894d-faa9-409e-979b-2473348faec0", + "id": "26655e18-f605-4dd9-8d28-8810d216948b", "savedPayload": { "position": { "x": 18589.19039895727, @@ -13279,7 +13279,7 @@ "name": "New Record Formula", "code": "variable.interTrend", "project": "Foundations", - "id": "bb55bd5a-0199-4064-97b5-307e443690ca", + "id": "bf0bbd22-30d7-4319-bdfc-ae3bc883b4c9", "savedPayload": { "position": { "x": 18764.849869125257, @@ -13300,7 +13300,7 @@ "uiObject": {} } }, - "id": "f04f3483-27b3-4703-8de3-9b510df42a64", + "id": "2fd2f82b-79ef-4fde-ac06-60002878bd03", "savedPayload": { "position": { "x": 18809.743586814635, @@ -13324,7 +13324,7 @@ } } ], - "id": "5e872161-bee6-40b1-9580-67bd21201d0d", + "id": "3267d614-267c-454d-b353-90c856729044", "savedPayload": { "position": { "x": 17924.16480315753, @@ -13360,7 +13360,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\nlet FTLen = 5 // Channel length\nlet candle = record.current\nlet BIAS = 0.35 // biased limit value for Math.log2 (0)\n\n\nif (variable.previousEma5 === undefined) {\nvariable.previousEma5 = candle.close\n}\n\n// Calculate EMA5\nvariable.Ema5 = calculateEMA(5, candle.close, variable.previousEma5)\nvariable.previousEma5 = variable.Ema5\n\n\n// Build arrays Max, Min, Close, Open\n\nvariable.lastMax.push(candle.max) \nvariable.lastMin.push(candle.min)\nvariable.lastOpens.push(candle.open)\nvariable.lastCloses.push(candle.close)\nvariable.lastEMA5s.push(variable.Ema5)\n\n\n\n// Keep the array the correct size\n\nif (variable.lastMax.length > FTLen) {\n variable.lastMax.splice(0, 1)\n}\n\nif (variable.lastMin.length > FTLen) {\n variable.lastMin.splice(0, 1)\n}\n\nif (variable.lastOpens.length > FTLen) {\n variable.lastOpens.splice(0, 1)\n}\n\nif (variable.lastCloses.length > FTLen) {\n variable.lastCloses.splice(0, 1)\n}\n\nif (variable.lastEMA5s.length > FTLen) {\n variable.lastEMA5s.splice(0, 1)\n}\n// Calculate indicator values\n\n\n\n\nvariable.PositiveDisorder = CalPosEntropy () // Positive disorder\nvariable.NegativeDisorder = CalNegEntropy () // Negative disorder\nif(variable.PositiveDisorder === 0 && variable.NegativeDisorder === 0){\n\tvariable.FastTrend = 0\n}\nelse {\n\tvariable.FastTrend = ( variable.NegativeDisorder - variable.PositiveDisorder ) / ( variable.NegativeDisorder + variable.PositiveDisorder)\n}//calculation of the fast trend indicator\n\nvariable.lastFastTrend.push(variable.FastTrend)\nif(variable.lastFastTrend.length > 2 ) {\n\tvariable.lastFastTrend.splice(0,1)\n}\n\n//Determine the intermediate trend i.e. pullbacks\nif(variable.lastMax.length < FTLen) {\n\tvariable.interTrend = 0\n}\nelse {\n\tif(variable.lastFastTrend.length === 2){\n\t\tvariable.Slope = variable.lastFastTrend[1] - variable.lastFastTrend[0]\n\t\tif(variable.Slope > 0) {\n\t\t\t\tvariable.interTrend = 1\n\t\t}\n\t\t\tif(variable.Slope < 0) {\n\t\t\t\tvariable.interTrend = -1\n\t\t}\n\t\t\tif(variable.Slope = 0) {\n\t\t\t\tvariable.interTrend = 0\n\t\t}\n\t}\n\telse {\n\t\tvariable.interTrend = 0\n\t}\n}\n//functions\n//EMA5 calculation\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\nfunction CalPosEntropy ()\n\n\n{variable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\n\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var i = 0 ; i < FTLen ; i++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMax = variable.PosMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMin = variable.PosMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosOpen = variable.PosOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosClose = variable.PosClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.PosMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMax = (variable.PosMax / FTLen) * Math.log2(1/(variable.PosMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMax = BIAS\n\t}\n\tif (variable.PosMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMin = (variable.PosMin / FTLen) * Math.log2(1/(variable.PosMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMin = BIAS\n\t}\n\tif (variable.PosOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosOpen = (variable.PosOpen / FTLen) * Math.log2(1/(variable.PosOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosOpen = BIAS\n\t}\n\tif (variable.PosClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosClose = (variable.PosClose / FTLen) * Math.log2(1/(variable.PosClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosClose = BIAS\n\t}\n\t\n\tvariable.PosEnt = variable.EntPosClose + variable.EntPosMax + variable.EntPosMin + variable.EntPosOpen //sum on 4 entropies\n\t\n\treturn variable.PosEnt\n}\n\nfunction CalNegEntropy ()\n\n{variable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var j = 0 ; j < FTLen ; j++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMax = variable.NegMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMin = variable.NegMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegOpen = variable.NegOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegClose = variable.NegClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.NegMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMax = (variable.NegMax / FTLen) * Math.log2(1/(variable.NegMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMax = BIAS\n\t}\n\tif (variable.NegMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMin = (variable.NegMin / FTLen) * Math.log2(1/(variable.NegMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMin = BIAS\n\t}\n\tif (variable.NegOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegOpen = (variable.NegOpen / FTLen) * Math.log2(1/(variable.NegOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegOpen = BIAS\n\t}\n\tif (variable.NegClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegClose = (variable.NegClose / FTLen) * Math.log2(1/(variable.NegClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegClose = BIAS\n\t}\n\t\n\tvariable.NegEnt = variable.EntNegClose + variable.EntNegMax + variable.EntNegMin + variable.EntNegOpen //sum on 4 entropies\n\t\n\treturn variable.NegEnt\n}\n\n// End of code :-)", "project": "Foundations", - "id": "2806de6f-ba37-4673-8665-403931fd8333", + "id": "b2920ef1-5ae6-4a06-bc0f-0bcff84fc4c2", "savedPayload": { "position": { "x": 18694.392154885838, @@ -13381,7 +13381,7 @@ "uiObject": {} } }, - "id": "c61978c9-3a9c-4114-ada6-60a428812691", + "id": "4f55c3e8-1024-407a-9fd7-deca7d7031c2", "savedPayload": { "position": { "x": 18607.040727163738, @@ -13413,7 +13413,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.lastMax = []\nvariable.lastMin = []\nvariable.lastOpens = []\nvariable.lastCloses = []\nvariable.lastEMA5s = []\nvariable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\nvariable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\nvariable.lastFastTrend = []", "project": "Foundations", - "id": "91432ef7-ed69-4777-b927-8b424a500330", + "id": "7ac96f9d-4aa1-4dbd-927d-72241b4569a6", "savedPayload": { "position": { "x": 19092.13971930327, @@ -13434,7 +13434,7 @@ "uiObject": {} } }, - "id": "82c6a48f-1fed-4306-9cf6-bafd1cff7cde", + "id": "e872ed19-3a97-4db2-9208-eaa329c63230", "savedPayload": { "position": { "x": 18766.13975293071, @@ -13457,7 +13457,7 @@ } } }, - "id": "423100d2-c2a2-43dc-b4fe-bc38c5422330", + "id": "96d28baa-14c3-4bf2-a554-421d1db22541", "savedPayload": { "position": { "x": 18548.80644201567, @@ -13480,7 +13480,7 @@ } } }, - "id": "2447926a-a486-44ad-8dc8-de912dcc13ae", + "id": "c22e301b-e5e3-43ac-baaf-50cf16ecc044", "savedPayload": { "position": { "x": 17878.74005695047, @@ -13504,20 +13504,20 @@ "referenceParent": { "type": "Plotter Module", "name": "FastTrend5", - "id": "41062c03-697f-4cda-92c1-da0b9299b9b2" + "id": "97cde8c9-67ad-414b-b12e-23330a45d955" } } } ], - "id": "27a1d588-8f57-4b1c-8194-79c81991e799", + "id": "922e5272-1c31-41de-a192-76c9f48fa512", "savedPayload": { "position": { - "x": 18538.314191481004, - "y": 9986.090743749965 + "x": 17751.878281255034, + "y": 10285.41761816561 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 }, "floatingObject": { "isPinned": false, @@ -13552,7 +13552,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market FastTrend20", "project": "Foundations", - "id": "66a31201-dc4d-4a3f-85a7-24c27cbef25d", + "id": "ae1dc97e-d4b5-441f-8d6d-78eeead48105", "savedPayload": { "position": { "x": 18737.86542628025, @@ -13574,13 +13574,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "4fc7659b-0d04-4974-b694-d40cc035bd96" + "id": "db4f7ccf-a841-4eee-9f52-23660d6ca0ed" } } } ], "outputDatasetFolders": [], - "id": "4cb72763-cfa5-4d2b-8954-9481f26eb66e", + "id": "00aafecc-0053-4a62-9b2c-ee8ee52e1be5", "savedPayload": { "position": { "x": 18503.654912692367, @@ -13613,7 +13613,7 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "a57d388b-d529-4b88-90c1-95c777165c8f", + "id": "141d456e-15a4-4a4c-a91f-6ad6fcb95917", "savedPayload": { "position": { "x": 18774.02832066903, @@ -13644,7 +13644,7 @@ "name": "FastTrend 20 Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "5f97bb42-b84f-44b8-8a51-6168b6a3c6fc", + "id": "d3e56fb1-6615-47c0-9ddf-8613bb7943ad", "savedPayload": { "position": { "x": 18293.53956786992, @@ -13666,7 +13666,7 @@ "referenceParent": { "type": "Status Report", "name": "Market-FastTrend", - "id": "6622030e-5660-4ef0-9368-ffe2696fc619" + "id": "6475c22e-3095-4235-8265-827888505dc5" } } } @@ -13676,7 +13676,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "aeab7d32-320b-4e18-b48c-031b05c7272e", + "id": "237a51ac-d33a-4084-b399-3b6115ab3d13", "savedPayload": { "position": { "x": 18052.606178572896, @@ -13704,7 +13704,7 @@ } ], "dataMineDataDependencies": [], - "id": "e82b3d78-f0e2-4a73-ab82-da70b34d5671", + "id": "8a0d1469-8683-46fd-9c63-f976135a4221", "savedPayload": { "position": { "x": 18285.507844948108, @@ -13731,7 +13731,7 @@ "type": "Status Report", "name": "Market-FastTrend", "project": "Foundations", - "id": "6622030e-5660-4ef0-9368-ffe2696fc619", + "id": "6475c22e-3095-4235-8265-827888505dc5", "savedPayload": { "position": { "x": 18053.78235508046, @@ -13756,7 +13756,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "da6198f5-8235-414e-bbc6-c58154a1d415", + "id": "304805ea-ce67-4b58-963d-c05c5bf91502", "savedPayload": { "position": { "x": 18077.321108399727, @@ -13786,7 +13786,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "26629b7e-6908-4c6a-b2ce-2ba579ccee40", + "id": "b13eca69-f358-4378-8afe-fec50de73ffc", "savedPayload": { "position": { "x": 18044.50812029853, @@ -13807,7 +13807,7 @@ "uiObject": {} } }, - "id": "3aafd8fd-0cf7-4e6a-ad7b-f997e889046b", + "id": "b30fa563-9d24-41e2-8d91-a4a787c9f9bb", "savedPayload": { "position": { "x": 18269.444399104486, @@ -13844,7 +13844,7 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily FastTrend20", "project": "Foundations", - "id": "d45f41b9-5edf-47f3-8791-bd9e272ed4c9", + "id": "fb3f5c38-4342-474d-bb54-55a3d940c6bd", "savedPayload": { "position": { "x": 17841.151563043502, @@ -13866,13 +13866,13 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "b6a36e5f-5860-4682-97ea-188b85dc2495" + "id": "7388d3bb-08b1-4f0a-a623-3f6195917a68" } } } ], "outputDatasetFolders": [], - "id": "e6094612-1fb5-4b5f-8a78-b3e5ee281adc", + "id": "84db7b59-1eeb-4ac9-9557-e5c8f4005f6d", "savedPayload": { "position": { "x": 17947.243084022746, @@ -13905,7 +13905,7 @@ "name": "FastTrend 20 Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "82cedb17-0f71-46f9-b07b-abc630fb5452", + "id": "960cd4c7-5ac0-4882-a354-0ea3579ce6ce", "savedPayload": { "position": { "x": 17613.96561412586, @@ -13927,7 +13927,7 @@ "referenceParent": { "type": "Status Report", "name": "Daily-FasTrend", - "id": "c09b8505-1e07-4523-9f1f-af6641a1e547" + "id": "befa0f00-a5b5-48bb-9122-da129bf72818" } } }, @@ -13936,7 +13936,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "e8470ead-bc2a-440a-8632-b38e464b49e1", + "id": "99845747-5831-4177-aa2c-0f22a697b0eb", "savedPayload": { "position": { "x": 17487.034328843474, @@ -13967,7 +13967,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "bb11027d-bf77-4b0a-80d4-56f0b24c4a3c", + "id": "61c09b58-f52e-4936-9d43-510de4f4c742", "savedPayload": { "position": { "x": 17385.13907646934, @@ -13999,7 +13999,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "24dca8d1-1eae-4e69-a531-06446cfe2e8f", + "id": "0c5a33da-4104-489e-952c-9ed08b4437dd", "savedPayload": { "position": { "x": 17318.254074251803, @@ -14027,7 +14027,7 @@ } ], "dataMineDataDependencies": [], - "id": "147c47d3-9979-4b19-b8c8-dd7e1c67d661", + "id": "2daf8507-0da4-425e-b415-c61cff4b6afb", "savedPayload": { "position": { "x": 17742.79904983504, @@ -14054,7 +14054,7 @@ "type": "Status Report", "name": "Daily-FasTrend", "project": "Foundations", - "id": "c09b8505-1e07-4523-9f1f-af6641a1e547", + "id": "befa0f00-a5b5-48bb-9122-da129bf72818", "savedPayload": { "position": { "x": 17837.44868593873, @@ -14079,7 +14079,7 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "1ed2d4cd-d863-4eea-aa04-ef448ca2f4e0", + "id": "081c181f-def4-4080-871e-27b9202d0c2a", "savedPayload": { "position": { "x": 17834.677002129192, @@ -14109,7 +14109,7 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "66d24f83-2e11-40a2-8861-c81e3f262492", + "id": "c35f5db4-7909-4779-be23-24d123863596", "savedPayload": { "position": { "x": 17890.49444642835, @@ -14130,7 +14130,7 @@ "uiObject": {} } }, - "id": "83940a1c-a4a2-486e-a9f7-b33ef3ffebc6", + "id": "0cfc720d-258f-4d7b-9f71-89de41bc3be3", "savedPayload": { "position": { "x": 18053.33460500199, @@ -14166,7 +14166,7 @@ "name": "Multi-Time-Frame-Market", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", "project": "Foundations", - "id": "4fc7659b-0d04-4974-b694-d40cc035bd96", + "id": "db4f7ccf-a841-4eee-9f52-23660d6ca0ed", "savedPayload": { "position": { "x": 17768.08490002367, @@ -14192,7 +14192,7 @@ "name": "Multi-Time-Frame-Daily", "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", "project": "Foundations", - "id": "b6a36e5f-5860-4682-97ea-188b85dc2495", + "id": "7388d3bb-08b1-4f0a-a623-3f6195917a68", "savedPayload": { "position": { "x": 17223.24004947388, @@ -14229,7 +14229,7 @@ "name": "New Record Formula", "code": "record.current.begin", "project": "Foundations", - "id": "969815bf-fbc4-439a-b789-db851d98f564", + "id": "8e4dc4a4-4df7-425a-9c8e-99bebff9cae8", "savedPayload": { "position": { "x": 17125.295473472564, @@ -14250,7 +14250,7 @@ "uiObject": {} } }, - "id": "898fb522-cab2-44a3-b98b-307702552951", + "id": "f1ed4c18-b60b-4a3d-8806-c0c4ac3960b2", "savedPayload": { "position": { "x": 17236.51593962507, @@ -14283,7 +14283,7 @@ "name": "New Record Formula", "code": "record.current.end", "project": "Foundations", - "id": "3a8dc3f3-6551-4257-bee3-e6e2da45d941", + "id": "96ec3eb0-7c90-47c8-aac0-18b271069b08", "savedPayload": { "position": { "x": 16717.600723575317, @@ -14304,7 +14304,7 @@ "uiObject": {} } }, - "id": "a0a0fe78-8e4c-4a24-82bb-2ed16fd8a7f9", + "id": "1124ef84-c789-4451-bed5-ddbcc7c90ca8", "savedPayload": { "position": { "x": 16964.719439693574, @@ -14337,7 +14337,7 @@ "name": "New Formula", "code": "variable.PositiveDisorder", "project": "Foundations", - "id": "a23f2bb3-52a3-4883-99c7-998de0ddf0de", + "id": "eebcd62c-9851-4e1b-8357-6bb17e913b6e", "savedPayload": { "position": { "x": 16868.16227429867, @@ -14358,7 +14358,7 @@ "uiObject": {} } }, - "id": "717fa17d-2cd6-4094-8a48-521c8acd9678", + "id": "6d51977e-de37-4a79-9629-31b4200a578c", "savedPayload": { "position": { "x": 17065.093806842477, @@ -14391,7 +14391,7 @@ "name": "New Formula", "code": "variable.NegativeDisorder", "project": "Foundations", - "id": "5be4bdc1-6e75-499b-8700-f190ae498805", + "id": "9b35dc8b-9282-4723-8a41-3f68200cae0f", "savedPayload": { "position": { "x": 17463.604207052012, @@ -14412,7 +14412,7 @@ "uiObject": {} } }, - "id": "57107e54-5dc8-49e3-9e0f-0a50a59d70b4", + "id": "428785b3-5188-4df2-9288-b2ea47e71e28", "savedPayload": { "position": { "x": 17462.055095344705, @@ -14445,7 +14445,7 @@ "name": "New Formula", "code": "variable.FastTrend", "project": "Foundations", - "id": "1981610e-0ad2-4ccb-9d2b-0225143a9f01", + "id": "7ce36dd9-f3c7-48a1-bb2c-96fff4d730a2", "savedPayload": { "position": { "x": 18055.546601670187, @@ -14466,7 +14466,7 @@ "uiObject": {} } }, - "id": "af7b0409-f2b4-4ece-97a1-f7c7271e97ba", + "id": "1f97847c-3c93-49f8-b41e-d3e44521c29d", "savedPayload": { "position": { "x": 17856.68335842349, @@ -14499,7 +14499,7 @@ "name": "New Record Formula", "code": "variable.interTrend", "project": "Foundations", - "id": "fb6f9b64-52fb-4aeb-b1da-0aa0cd64bb60", + "id": "d5c7142a-a4ca-457b-bbb6-d867dc5664d0", "savedPayload": { "position": { "x": 18198.244761581384, @@ -14520,7 +14520,7 @@ "uiObject": {} } }, - "id": "fa904df5-0198-4748-be5d-3fc0adde2652", + "id": "41ae2121-d7a0-40fc-9b2f-4c49624024b7", "savedPayload": { "position": { "x": 17951.81546503095, @@ -14544,7 +14544,7 @@ } } ], - "id": "6476f612-88f8-4516-862c-e8aa3a028ac0", + "id": "6bfbec80-c342-495a-8c59-6e7ffbce26ff", "savedPayload": { "position": { "x": 17458.956871930088, @@ -14580,7 +14580,7 @@ "name": "New Procedure Javascript Code", "code": "/* Loop Code */\n\nlet FTLen = 20 // Channel length\nlet candle = record.current\nlet BIAS = 0.35 // biased limit value for Math.log2 (0)\n\n\nif (variable.previousEma5 === undefined) {\nvariable.previousEma5 = candle.close\n}\n\n// Calculate EMA5\nvariable.Ema5 = calculateEMA(5, candle.close, variable.previousEma5)\nvariable.previousEma5 = variable.Ema5\n\n\n// Build arrays Max, Min, Close, Open\n\nvariable.lastMax.push(candle.max) \nvariable.lastMin.push(candle.min)\nvariable.lastOpens.push(candle.open)\nvariable.lastCloses.push(candle.close)\nvariable.lastEMA5s.push(variable.Ema5)\n\n\n\n// Keep the array the correct size\n\nif (variable.lastMax.length > FTLen) {\n variable.lastMax.splice(0, 1)\n}\n\nif (variable.lastMin.length > FTLen) {\n variable.lastMin.splice(0, 1)\n}\n\nif (variable.lastOpens.length > FTLen) {\n variable.lastOpens.splice(0, 1)\n}\n\nif (variable.lastCloses.length > FTLen) {\n variable.lastCloses.splice(0, 1)\n}\n\nif (variable.lastEMA5s.length > FTLen) {\n variable.lastEMA5s.splice(0, 1)\n}\n// Calculate indicator values\n\n\n\n\nvariable.PositiveDisorder = CalPosEntropy () // Positive disorder\nvariable.NegativeDisorder = CalNegEntropy () // Negative disorder\nif(variable.PositiveDisorder === 0 && variable.NegativeDisorder === 0){\n\tvariable.FastTrend = 0\n}\nelse {\n\tvariable.FastTrend = ( variable.NegativeDisorder - variable.PositiveDisorder ) / ( variable.NegativeDisorder + variable.PositiveDisorder)\n}//calculation of the fast trend indicator\n\nvariable.lastFastTrend.push(variable.FastTrend)\nif(variable.lastFastTrend.length > 2 ) {\n\tvariable.lastFastTrend.splice(0,1)\n}\n\n//Determine the intermediate trend i.e. pullbacks\nif(variable.lastMax.length < FTLen) {\n\tvariable.interTrend = 0\n}\nelse {\n\tif(variable.lastFastTrend.length === 2){\n\t\tvariable.Slope = variable.lastFastTrend[1] - variable.lastFastTrend[0]\n\t\tif(variable.Slope > 0) {\n\t\t\t\tvariable.interTrend = 1\n\t\t}\n\t\t\tif(variable.Slope < 0) {\n\t\t\t\tvariable.interTrend = -1\n\t\t}\n\t\t\tif(variable.Slope = 0) {\n\t\t\t\tvariable.interTrend = 0\n\t\t}\n\t}\n\telse {\n\t\tvariable.interTrend = 0\n\t}\n}\n//functions\n//EMA5 calculation\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}\n\nfunction CalPosEntropy ()\n\n\n{variable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\n\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var i = 0 ; i < FTLen ; i++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMax = variable.PosMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosMin = variable.PosMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosOpen = variable.PosOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[i] > variable.lastEMA5s[i])\n\t\t\t{\n\t\t\t\tvariable.PosClose = variable.PosClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.PosMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMax = (variable.PosMax / FTLen) * Math.log2(1/(variable.PosMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMax = BIAS\n\t}\n\tif (variable.PosMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosMin = (variable.PosMin / FTLen) * Math.log2(1/(variable.PosMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosMin = BIAS\n\t}\n\tif (variable.PosOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosOpen = (variable.PosOpen / FTLen) * Math.log2(1/(variable.PosOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosOpen = BIAS\n\t}\n\tif (variable.PosClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntPosClose = (variable.PosClose / FTLen) * Math.log2(1/(variable.PosClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntPosClose = BIAS\n\t}\n\t\n\tvariable.PosEnt = variable.EntPosClose + variable.EntPosMax + variable.EntPosMin + variable.EntPosOpen //sum on 4 entropies\n\t\n\treturn variable.PosEnt\n}\n\nfunction CalNegEntropy ()\n\n{variable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\n\t\n\tif (variable.lastMax.length < FTLen) { return 0 }\n\tfor (var j = 0 ; j < FTLen ; j++) //loop over the arrays and increment counters each time a value is above EMA5 at the same index\n\t{\n\t\t\tif (variable.lastMax[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMax = variable.NegMax + 1\n\t\t\t}\n\t\t\tif (variable.lastMin[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegMin = variable.NegMin + 1\n\t\t\t}\n\t\t\tif (variable.lastOpens[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegOpen = variable.NegOpen + 1\n\t\t\t}\n\t\t\tif (variable.lastCloses[j] < variable.lastEMA5s[j])\n\t\t\t{\n\t\t\t\tvariable.NegClose = variable.NegClose + 1\n\t\t\t}\n\t\t\t\n\t}\n\tif (variable.NegMax > 0) // calculate entropy for Max candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMax = (variable.NegMax / FTLen) * Math.log2(1/(variable.NegMax / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMax = BIAS\n\t}\n\tif (variable.NegMin > 0) // calculate entropy for Min candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegMin = (variable.NegMin / FTLen) * Math.log2(1/(variable.NegMin / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegMin = BIAS\n\t}\n\tif (variable.NegOpen > 0) // calculate entropy for Open candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegOpen = (variable.NegOpen / FTLen) * Math.log2(1/(variable.NegOpen / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegOpen = BIAS\n\t}\n\tif (variable.NegClose > 0) // calculate entropy for Close candles above EMA5 ; return Bias value if count is 0 because of LOG function\n\t{\n\t\tvariable.EntNegClose = (variable.NegClose / FTLen) * Math.log2(1/(variable.NegClose / FTLen))\n\t}\n\telse\n\t{\n\t\tvariable.EntNegClose = BIAS\n\t}\n\t\n\tvariable.NegEnt = variable.EntNegClose + variable.EntNegMax + variable.EntNegMin + variable.EntNegOpen //sum on 4 entropies\n\t\n\treturn variable.NegEnt\n}\n\n// End of code :-)", "project": "Foundations", - "id": "993bb79d-4966-4fe2-87fe-d86455702b44", + "id": "b97e269c-6fc5-442c-98db-1e5863c77209", "savedPayload": { "position": { "x": 18624.96796883813, @@ -14601,7 +14601,7 @@ "uiObject": {} } }, - "id": "f6e6f330-d799-4c9f-a1e5-76e421283be0", + "id": "3f0a3653-19e5-4b6c-9246-0b9ee7b981c6", "savedPayload": { "position": { "x": 18480.0303536653, @@ -14633,7 +14633,7 @@ "name": "New Procedure Javascript Code", "code": "/* Initialization Code*/\n\nvariable.lastMax = []\nvariable.lastMin = []\nvariable.lastOpens = []\nvariable.lastCloses = []\nvariable.lastEMA5s = []\nvariable.NegOpen = 0 // counter for values below EMA\nvariable.NegClose = 0 // counter for values below EMA\nvariable.NegMin = 0 // counter for values below EMA\nvariable.NegMax = 0 // counter for values below EMA\nvariable.PosOpen = 0 // counter for values above EMA\nvariable.PosClose = 0 // counter for values above EMA\nvariable.PosMin = 0 // counter for values above EMA\nvariable.PosMax = 0 // counter for values above EMA\nvariable.lastFastTrend = []", "project": "Foundations", - "id": "f521da92-62f6-4bbd-bcbb-8861f8502ba0", + "id": "374c4fae-c2b5-49d4-92df-a3761caece11", "savedPayload": { "position": { "x": 19204.30885952141, @@ -14654,7 +14654,7 @@ "uiObject": {} } }, - "id": "6ff28553-0c7f-4ed2-a157-b21c48fc8b87", + "id": "cda47c46-9af5-4c03-97a2-c6f2daef42ff", "savedPayload": { "position": { "x": 18711.766709938613, @@ -14677,7 +14677,7 @@ } } }, - "id": "369f16d0-9ef3-47f9-b11b-05d4b12347ab", + "id": "7e8df087-2820-47a1-91bd-07ed0cd2f366", "savedPayload": { "position": { "x": 18383.405276883415, @@ -14700,7 +14700,7 @@ } } }, - "id": "898899e1-1330-4d35-aed3-6b56bcb83623", + "id": "9b3022e4-aed5-408c-9033-8ad72da6ae7a", "savedPayload": { "position": { "x": 17892.673125170615, @@ -14724,20 +14724,4778 @@ "referenceParent": { "type": "Plotter Module", "name": "FastTrend20", - "id": "0a31cb83-dc88-4d38-a763-9a0e499b8693" + "id": "11122bc7-c665-4c8b-9418-224a9b6662e1" } } } ], - "id": "d23b022a-9531-4921-8d93-6d394865f786", + "id": "4d31d9dd-719e-477e-b925-1b068725ee7c", "savedPayload": { "position": { - "x": 18485.106443128512, - "y": 9869.582026473588 + "x": 17640.133298533794, + "y": 10202.226560838775 }, "targetPosition": { - "x": 18916.878281255034, - "y": 9742.802375894946 + "x": 18051.878281255034, + "y": 9765.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Indicator Bot", + "name": "Holt-Winters forecast 2", + "config": "{\n \"codeName\": \"Holt-Winters2\"\n}", + "project": "Foundations", + "processes": [ + { + "type": "Process Definition", + "name": "Multi-Time-Frame-Market", + "config": "{\n \"codeName\": \"Multi-Time-Frame-Market\",\n \"description\": \"Produces volume energy Indicator\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Time-Frame-Market\"\n }\n}", + "project": "Foundations", + "processOutput": { + "type": "Process Output", + "name": "New Process Output", + "project": "Foundations", + "outputDatasets": [ + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Market HoltWinters2", + "project": "Foundations", + "id": "4665543c-ff47-44ed-aee0-2bbbc91c3903", + "savedPayload": { + "position": { + "x": 17686.021370369053, + "y": 10779.60606337441 + }, + "targetPosition": { + "x": 17608.375656838296, + "y": 10489.828315487688 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "dabdf69f-eda9-4bfe-bc9d-842c825adaaa" + } + } + } + ], + "outputDatasetFolders": [], + "id": "03bb01c4-bf69-46d5-8ca4-a02aa7328a35", + "savedPayload": { + "position": { + "x": 18125.6761963031, + "y": 10537.744612870876 + }, + "targetPosition": { + "x": 17989.479046381235, + "y": 10270.442655614366 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "processDependencies": { + "type": "Process Dependencies", + "name": "New Process Dependencies", + "project": "Foundations", + "statusDependencies": [ + { + "type": "Status Dependency", + "name": "Candles Volumes Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "b77b249f-b4fc-4316-9c35-93c4a8ebc5c2", + "savedPayload": { + "position": { + "x": 18315.64354872755, + "y": 11003.020122226351 + }, + "targetPosition": { + "x": 17965.92786607191, + "y": 10719.825946253924 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Candles Volumes Multi-Time-Frame-Market Status Report", + "id": "a0a61ba9-91cb-4ec7-92fe-134ff079de2d" + } + } + }, + { + "type": "Status Dependency", + "name": "Holt-Winters forecast 2 Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "5a9db51a-7eec-44fd-8934-99fec7cf0ef4", + "savedPayload": { + "position": { + "x": 18024.162151219978, + "y": 10937.159257168965 + }, + "targetPosition": { + "x": 17965.92786607191, + "y": 10719.825946253924 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "HoltWinters", + "id": "61cc2918-cfc1-4bb7-896b-14721836cb9b" + } + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Market", + "project": "Foundations", + "id": "9cac2003-0a3d-46a5-b064-a361e73a4548", + "savedPayload": { + "position": { + "x": 17885.295077424216, + "y": 10929.881542215795 + }, + "targetPosition": { + "x": 17965.92786607191, + "y": 10719.825946253924 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "2b03494a-67d6-47f1-89b6-53fc4c9116a8" + } + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Market", + "project": "Foundations", + "id": "08424809-bcc5-474c-9b14-2bbf879f6483", + "savedPayload": { + "position": { + "x": 17777.22698828419, + "y": 10842.369729132306 + }, + "targetPosition": { + "x": 17965.92786607191, + "y": 10719.825946253924 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "9bf0483c-4825-4a46-9cf4-1b5262579fc1" + } + } + } + ], + "dataMineDataDependencies": [], + "id": "2746f8c1-146e-4291-944c-6786f035dfaa", + "savedPayload": { + "position": { + "x": 17965.92786607191, + "y": 10719.825946253924 + }, + "targetPosition": { + "x": 17989.479046381235, + "y": 10270.442655614366 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "HoltWinters", + "project": "Foundations", + "id": "61cc2918-cfc1-4bb7-896b-14721836cb9b", + "savedPayload": { + "position": { + "x": 17826.087335876728, + "y": 10522.043825997993 + }, + "targetPosition": { + "x": 17989.479046381235, + "y": 10270.442655614366 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "607e9a6e-6b19-46ad-a43b-70f72e519588", + "savedPayload": { + "position": { + "x": 17855.82806775298, + "y": 10338.541230575298 + }, + "targetPosition": { + "x": 17989.479046381235, + "y": 10270.442655614366 + }, + "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", + "project": "Foundations", + "id": "edf8031e-521d-43ed-833d-f0f5dbd8b8a1", + "savedPayload": { + "position": { + "x": 17839.684616168048, + "y": 10262.592262177925 + }, + "targetPosition": { + "x": 17989.479046381235, + "y": 10270.442655614366 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "dfe600d4-056a-413a-90eb-9c5cac383d4e", + "savedPayload": { + "position": { + "x": 18037.322785481592, + "y": 10417.709045227122 + }, + "targetPosition": { + "x": 18337.322785481592, + "y": 9898.093802956459 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Process Definition", + "name": "Multi-Time-Frame-Daily", + "config": "{\n \"codeName\": \"Multi-Time-Frame-Daily\",\n \"description\": \"Produces the volume energy indicators.\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Time-Frame-Daily\"\n }\n}", + "project": "Foundations", + "processOutput": { + "type": "Process Output", + "name": "New Process Output", + "project": "Foundations", + "outputDatasets": [ + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Daily HoltWinters2", + "project": "Foundations", + "id": "d661c76e-5fb3-45e2-8f10-120fed97c8eb", + "savedPayload": { + "position": { + "x": 17674.016280040636, + "y": 10651.848902253158 + }, + "targetPosition": { + "x": 17766.72137835312, + "y": 10366.531947364612 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "6da01fa3-cb8a-42da-92e5-2a31d8511931" + } + } + } + ], + "outputDatasetFolders": [], + "id": "8c184a7a-273f-4056-b64f-c423407e92d0", + "savedPayload": { + "position": { + "x": 17766.72137835312, + "y": 10366.531947364612 + }, + "targetPosition": { + "x": 17859.4264766656, + "y": 10081.214992476067 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "processDependencies": { + "type": "Process Dependencies", + "name": "New Process Dependencies", + "project": "Foundations", + "statusDependencies": [ + { + "type": "Status Dependency", + "name": "Holt-Winters forecast 2 Multi-Time-Frame-Daily", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "810a8880-776b-4e73-a095-e4e519d40be1", + "savedPayload": { + "position": { + "x": 17543.7779307099, + "y": 10567.27112927227 + }, + "targetPosition": { + "x": 17636.483029022384, + "y": 10281.954174383725 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "HoltWinters", + "id": "1cb0e140-bcee-46a9-8663-6b1b128dbe45" + } + } + }, + { + "type": "Status Dependency", + "name": "", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "89ab7d79-0090-4dca-8572-86a18092e241", + "savedPayload": { + "position": { + "x": 17473.091318517876, + "y": 10533.555344767352 + }, + "targetPosition": { + "x": 17636.483029022384, + "y": 10281.954174383725 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "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 Starting Point\"\n}", + "project": "Foundations", + "id": "c2aa9fa4-a652-4ee6-82cc-c55020966b34", + "savedPayload": { + "position": { + "x": 17413.539581379166, + "y": 10482.693356291384 + }, + "targetPosition": { + "x": 17636.483029022384, + "y": 10281.954174383725 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Exchange-Raw-Data Historic-OHLCVs Status Report", + "id": "181c7c34-7243-497a-9ddb-1b0067c6d66e" + } + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "9a201bea-0ef9-4b96-a884-0e2005895c96", + "savedPayload": { + "position": { + "x": 17369.181071765874, + "y": 10418.151324305589 + }, + "targetPosition": { + "x": 17636.483029022384, + "y": 10281.954174383725 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "678a567c-f08d-49b9-813b-4e54fd6afadb" + } + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "a53e14a2-da99-4b03-ae05-1ff76ff9c3b0", + "savedPayload": { + "position": { + "x": 17343.038748802242, + "y": 10344.327681629053 + }, + "targetPosition": { + "x": 17636.483029022384, + "y": 10281.954174383725 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "2e683057-f911-4105-bc77-16f2706d1915" + } + } + } + ], + "dataMineDataDependencies": [], + "id": "02c8435f-3f08-406a-af35-ea9e3cf7bc66", + "savedPayload": { + "position": { + "x": 17636.483029022384, + "y": 10281.954174383725 + }, + "targetPosition": { + "x": 17859.4264766656, + "y": 10081.214992476067 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "HoltWinters", + "project": "Foundations", + "id": "1cb0e140-bcee-46a9-8663-6b1b128dbe45", + "savedPayload": { + "position": { + "x": 17712.70433655553, + "y": 10112.40174609873 + }, + "targetPosition": { + "x": 17859.4264766656, + "y": 10081.214992476067 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "aa1399b6-04a0-49f6-9011-34ec7b1ee875", + "savedPayload": { + "position": { + "x": 17716.767999221327, + "y": 10034.862443319826 + }, + "targetPosition": { + "x": 17859.4264766656, + "y": 10081.214992476067 + }, + "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", + "project": "Foundations", + "id": "e5cba6ad-c751-4eec-9ee4-6d8d7996809e", + "savedPayload": { + "position": { + "x": 17759.056885711772, + "y": 9969.743268654458 + }, + "targetPosition": { + "x": 17859.4264766656, + "y": 10081.214992476067 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "9b736e18-aee6-4c50-b670-1fc35b6aadb7", + "savedPayload": { + "position": { + "x": 17757.76728970815, + "y": 10053.385230017971 + }, + "targetPosition": { + "x": 18337.322785481592, + "y": 9898.093802956459 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "products": [ + { + "type": "Product Definition", + "name": "HoltWinters2", + "config": "{\n \"codeName\": \"HoltWinters2\",\n \"singularVariableName\": \"HoltWinters2\",\n \"pluralVariableName\": \"HoltWinters-2s\"\n}", + "project": "Foundations", + "datasets": [ + { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", + "project": "Foundations", + "id": "dabdf69f-eda9-4bfe-bc9d-842c825adaaa", + "savedPayload": { + "position": { + "x": 17370.779400339616, + "y": 10328.426643616884 + }, + "targetPosition": { + "x": 17557.899922075598, + "y": 9448.093802956459 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", + "project": "Foundations", + "id": "6da01fa3-cb8a-42da-92e5-2a31d8511931", + "savedPayload": { + "position": { + "x": 16662.83021624415, + "y": 9542.169419897347 + }, + "targetPosition": { + "x": 17557.899922075598, + "y": 9448.093802956459 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + } + ], + "record": { + "type": "Record Definition", + "name": "HoltWinters", + "project": "Foundations", + "properties": [ + { + "type": "Record Property", + "name": "Begin", + "config": "{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "record.current.begin", + "project": "Foundations", + "id": "5d8615e3-fbca-4922-b874-5bbb15ccb3d1", + "savedPayload": { + "position": { + "x": 17969.443429382933, + "y": 10803.050430228226 + }, + "targetPosition": { + "x": 17312.008516437036, + "y": 9623.949359395101 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "9fd664d5-e7f9-41de-907d-4d714c42e686", + "savedPayload": { + "position": { + "x": 17312.008516437036, + "y": 9623.949359395101 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "End", + "config": "{\n \"codeName\": \"end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "record.current.end", + "project": "Foundations", + "id": "8d761208-af2b-4f55-82da-4ff67d348f89", + "savedPayload": { + "position": { + "x": 17033.150579054243, + "y": 9740.679864644875 + }, + "targetPosition": { + "x": 16843.86209127269, + "y": 9092.764076603426 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "5ddbddae-8eaf-4269-9eff-4dad643a3c50", + "savedPayload": { + "position": { + "x": 16843.86209127269, + "y": 9092.764076603426 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "PastForecast", + "config": "{\n \"codeName\": \"PastForecast\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.Y", + "project": "Foundations", + "id": "e06b8b7c-3aea-4be2-ac45-5dd608d7db96", + "savedPayload": { + "position": { + "x": 16735.309211316933, + "y": 9792.431963748417 + }, + "targetPosition": { + "x": 16694.941407404036, + "y": 9118.640126155196 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "6e2503b4-521a-4037-b9f6-908863cd6e0f", + "savedPayload": { + "position": { + "x": 16694.941407404036, + "y": 9118.640126155196 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "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\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.forecast", + "project": "Foundations", + "id": "42280cad-e6e8-4ba6-8192-626a820ec728", + "savedPayload": { + "position": { + "x": 16433.419423080704, + "y": 9776.610590358729 + }, + "targetPosition": { + "x": 16543.99651328592, + "y": 9110.729439460352 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "8b9a31b8-5347-4f3a-9f16-b686cdee1581", + "savedPayload": { + "position": { + "x": 16543.99651328592, + "y": 9110.729439460352 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "Level", + "config": "{\n \"codeName\": \"level\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.A", + "project": "Foundations", + "id": "2b7658ef-2c64-4590-83ac-d310de3fec3d", + "savedPayload": { + "position": { + "x": 16270.60782255505, + "y": 9381.718892791898 + }, + "targetPosition": { + "x": 16398.596416200413, + "y": 9069.428691381923 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "865b604f-a511-4af3-a4d4-238b379e0533", + "savedPayload": { + "position": { + "x": 16398.596416200413, + "y": 9069.428691381923 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "Trend Curve", + "config": "{\n \"codeName\": \"B\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.B", + "project": "Foundations", + "id": "e4c7b3b2-d7e6-4d01-83b9-955f66760cf4", + "savedPayload": { + "position": { + "x": 16071.761324484396, + "y": 9272.789166547213 + }, + "targetPosition": { + "x": 16266.03208415331, + "y": 8996.808873885468 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "1c806475-08dc-4f0a-9ba9-cd67ba045da2", + "savedPayload": { + "position": { + "x": 16266.03208415331, + "y": 8996.808873885468 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "Forecast 5", + "config": "{\n \"codeName\": \"forecast5\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.forecast5", + "project": "Foundations", + "id": "0c068ad4-2fb2-4828-a129-d5666c6c88b1", + "savedPayload": { + "position": { + "x": 15902.139467695277, + "y": 9122.34302750032 + }, + "targetPosition": { + "x": 16152.950846293897, + "y": 8896.511447854205 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "00d30420-8e2a-4e29-bee5-6c5951315441", + "savedPayload": { + "position": { + "x": 16152.950846293897, + "y": 8896.511447854205 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "Forecast 10", + "config": "{\n \"codeName\": \"forecast10\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.forecast10", + "project": "Foundations", + "id": "38b53984-d436-4435-969e-a33c6dd0e110", + "savedPayload": { + "position": { + "x": 15770.247800366295, + "y": 8937.924473271396 + }, + "targetPosition": { + "x": 16065.023068074575, + "y": 8773.565745034923 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "b18d2bdd-c654-412a-8936-275fde6a4d83", + "savedPayload": { + "position": { + "x": 16065.023068074575, + "y": 8773.565745034923 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "Forecast 20", + "config": "{\n \"codeName\": \"forecast20\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.forecast20", + "project": "Foundations", + "id": "8f52c0b8-9ce9-446e-9d4d-5bd8a5f57a80", + "savedPayload": { + "position": { + "x": 15682.699921428964, + "y": 8728.781020234303 + }, + "targetPosition": { + "x": 16006.65781544969, + "y": 8634.136776343526 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "e635aee5-bbb1-4da1-b319-b31f4c127ca0", + "savedPayload": { + "position": { + "x": 16006.65781544969, + "y": 8634.136776343526 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "Forecast 30", + "config": "{\n \"codeName\": \"forecast30\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.forecast30", + "project": "Foundations", + "id": "3bece118-4abb-4eac-9f29-2402135bebb9", + "savedPayload": { + "position": { + "x": 15643.885847101308, + "y": 8505.399994431324 + }, + "targetPosition": { + "x": 15980.781765897918, + "y": 8485.216092474875 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "ef7e4dbb-6110-40ef-976c-8cb7668a3ddf", + "savedPayload": { + "position": { + "x": 15980.781765897918, + "y": 8485.216092474875 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "Trend calc", + "config": "{\n \"codeName\": \"trend\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.trend", + "project": "Foundations", + "id": "2e62ce13-755a-49ba-991e-609024729155", + "savedPayload": { + "position": { + "x": 15655.751877143573, + "y": 8278.98265325415 + }, + "targetPosition": { + "x": 15988.692452592762, + "y": 8334.271198356759 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "688150dd-b50c-4788-87be-49cdaa13c72a", + "savedPayload": { + "position": { + "x": 15988.692452592762, + "y": 8334.271198356759 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "maxForecast5", + "config": "{\n \"codeName\": \"maxForecast5\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.maxForecast5", + "project": "Foundations", + "id": "73d42106-4ccb-4cb5-be70-9da84ff7a860", + "savedPayload": { + "position": { + "x": 15717.702999261217, + "y": 8060.882507625887 + }, + "targetPosition": { + "x": 16029.993200671192, + "y": 8188.87110127125 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "e94fd727-db1e-4fc8-80f0-4a3e26d4d09f", + "savedPayload": { + "position": { + "x": 16029.993200671192, + "y": 8188.87110127125 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "minForecast5", + "config": "{\n \"codeName\": \"minForecast5\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.minForecast5", + "project": "Foundations", + "id": "57c83210-c728-43dd-8a48-cf4185fc5d51", + "savedPayload": { + "position": { + "x": 15826.632725505902, + "y": 7862.036009555232 + }, + "targetPosition": { + "x": 16102.613018167647, + "y": 8056.306769224147 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "726450a7-3410-45a4-b252-e0322b163fe1", + "savedPayload": { + "position": { + "x": 16102.613018167647, + "y": 8056.306769224147 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "minForecast10", + "config": "{\n \"codeName\": \"minForecast10\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.minForecast10", + "project": "Foundations", + "id": "b7aea1b1-e702-468b-bd4f-8eeba126df65", + "savedPayload": { + "position": { + "x": 15977.078864552795, + "y": 7692.414152766114 + }, + "targetPosition": { + "x": 16202.91044419891, + "y": 7943.225531364735 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "3df9c8c2-8899-447b-ab9d-fa4bf6a304d9", + "savedPayload": { + "position": { + "x": 16202.91044419891, + "y": 7943.225531364735 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "maxForecast10", + "config": "{\n \"codeName\": \"maxForecast10\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.maxForecast10", + "project": "Foundations", + "id": "2f39fe05-705a-4277-9b5c-99375f8372a3", + "savedPayload": { + "position": { + "x": 16161.497418781717, + "y": 7560.522485437132 + }, + "targetPosition": { + "x": 16325.85614701819, + "y": 7855.2977531454135 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "c953b7e4-df76-40ed-8987-9d6bf1b8d2c7", + "savedPayload": { + "position": { + "x": 16325.85614701819, + "y": 7855.2977531454135 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "minForecast20", + "config": "{\n \"codeName\": \"minForecast20\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.minForecast20", + "project": "Foundations", + "id": "148c2759-2696-4e40-a8f3-ee1e691dd787", + "savedPayload": { + "position": { + "x": 16370.64087181881, + "y": 7472.974606499801 + }, + "targetPosition": { + "x": 16465.285115709587, + "y": 7796.9325005205255 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "121ee9b6-358a-44ef-b332-708603b0c1bc", + "savedPayload": { + "position": { + "x": 16465.285115709587, + "y": 7796.9325005205255 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "maxForecast20", + "config": "{\n \"codeName\": \"maxForecast20\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.maxForecast20", + "project": "Foundations", + "id": "42b6f398-9607-46ab-81ed-320b1d8d0ce5", + "savedPayload": { + "position": { + "x": 16594.02189762179, + "y": 7434.1605321721445 + }, + "targetPosition": { + "x": 16614.20579957824, + "y": 7771.056450968755 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "e67b6ab2-d300-4144-85da-ac753683e432", + "savedPayload": { + "position": { + "x": 16614.20579957824, + "y": 7771.056450968755 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "minForecast30", + "config": "{\n \"codeName\": \"minForecast30\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.minForecast30", + "project": "Foundations", + "id": "adea1072-c38a-41a6-9266-ec64b0b48774", + "savedPayload": { + "position": { + "x": 16820.439238798965, + "y": 7446.026562214411 + }, + "targetPosition": { + "x": 16765.150693696356, + "y": 7778.967137663599 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "7757fcc2-4132-4f21-849b-2fcf0b45b72c", + "savedPayload": { + "position": { + "x": 16765.150693696356, + "y": 7778.967137663599 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "maxForecast30", + "config": "{\n \"codeName\": \"maxForecast30\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.maxForecast30", + "project": "Foundations", + "id": "4c244bae-7388-4d3c-bf60-be2d2c51c879", + "savedPayload": { + "position": { + "x": 17038.53938442723, + "y": 7507.977684332055 + }, + "targetPosition": { + "x": 16910.550790781865, + "y": 7820.267885742029 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "aafe9d9d-3e7a-4726-b9fc-2d4498684d8a", + "savedPayload": { + "position": { + "x": 16910.550790781865, + "y": 7820.267885742029 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T 5 Begin", + "config": "{\n \"codeName\": \"T5begin\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T5Begin", + "project": "Foundations", + "id": "d4958817-6b80-4d01-b423-e7f53d0609f0", + "savedPayload": { + "position": { + "x": 17237.38588249788, + "y": 7616.907410576739 + }, + "targetPosition": { + "x": 17043.115122828967, + "y": 7892.887703238484 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "60a12dd0-1dce-44b3-b765-6f4404ea679f", + "savedPayload": { + "position": { + "x": 17043.115122828967, + "y": 7892.887703238484 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T10 Begin", + "config": "{\n \"codeName\": \"T10begin\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T10Begin", + "project": "Foundations", + "id": "05289830-7a11-45d8-9c58-100447ca3fb6", + "savedPayload": { + "position": { + "x": 17407.007739287, + "y": 7767.353549623632 + }, + "targetPosition": { + "x": 17156.19636068838, + "y": 7993.1851292697465 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "665066df-0031-42b3-8361-22371c9b9567", + "savedPayload": { + "position": { + "x": 17156.19636068838, + "y": 7993.1851292697465 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T20 Begin", + "config": "{\n \"codeName\": \"T20begin\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T20Begin", + "project": "Foundations", + "id": "e1198e3d-d9a6-4e9a-bcec-b2ed89e1a59c", + "savedPayload": { + "position": { + "x": 17538.899406615983, + "y": 7951.772103852554 + }, + "targetPosition": { + "x": 17244.1241389077, + "y": 8116.130832089028 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "5958c994-342f-4a15-9858-536dbd0eed45", + "savedPayload": { + "position": { + "x": 17244.1241389077, + "y": 8116.130832089028 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T30 Begin", + "config": "{\n \"codeName\": \"T30begin\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T30Begin", + "project": "Foundations", + "id": "a13b038e-6386-48eb-b133-d5a844ec3edb", + "savedPayload": { + "position": { + "x": 17626.447285553313, + "y": 8160.91555688965 + }, + "targetPosition": { + "x": 17302.48939153259, + "y": 8255.559800780426 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "c416ea8f-bb02-429f-8303-e50d7251a903", + "savedPayload": { + "position": { + "x": 17302.48939153259, + "y": 8255.559800780426 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T 5 End", + "config": "{\n \"codeName\": \"T5end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T5End", + "project": "Foundations", + "id": "18440df6-754b-4667-82b9-04c0a38f03fc", + "savedPayload": { + "position": { + "x": 17665.26135988097, + "y": 8384.29658269263 + }, + "targetPosition": { + "x": 17328.36544108436, + "y": 8404.480484649079 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "4e5c0efd-5d20-4ec6-b371-638947317f9d", + "savedPayload": { + "position": { + "x": 17328.36544108436, + "y": 8404.480484649079 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T10 End", + "config": "{\n \"codeName\": \"T10end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T10End", + "project": "Foundations", + "id": "8f70c7e1-6527-46a9-a084-687a1654b747", + "savedPayload": { + "position": { + "x": 17653.395329838706, + "y": 8610.713923869802 + }, + "targetPosition": { + "x": 17320.454754389517, + "y": 8555.425378767193 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "1f954ff3-46fc-4b4c-975c-09786ad64a92", + "savedPayload": { + "position": { + "x": 17320.454754389517, + "y": 8555.425378767193 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T20 End", + "config": "{\n \"codeName\": \"T20end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T20End", + "project": "Foundations", + "id": "04338d54-8d2c-43d8-ad69-c8d3d34d7b46", + "savedPayload": { + "position": { + "x": 17591.444207721062, + "y": 8828.814069498065 + }, + "targetPosition": { + "x": 17279.154006311088, + "y": 8700.825475852702 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "266d011a-02d5-42c8-b9a1-3e2322f34115", + "savedPayload": { + "position": { + "x": 17279.154006311088, + "y": 8700.825475852702 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T30 End", + "config": "{\n \"codeName\": \"T30end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.T30End", + "project": "Foundations", + "id": "65a17b96-8f83-43fe-98b4-7eb9a94cbd3c", + "savedPayload": { + "position": { + "x": 17482.514481476373, + "y": 9027.660567568719 + }, + "targetPosition": { + "x": 17206.53418881463, + "y": 8833.389807899805 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "19eabac0-998e-461f-897a-ec285cf5470e", + "savedPayload": { + "position": { + "x": 17206.53418881463, + "y": 8833.389807899805 + }, + "targetPosition": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "483d1620-4344-497b-a609-84d359ef7359", + "savedPayload": { + "position": { + "x": 16654.57360349114, + "y": 8444.848288561976 + }, + "targetPosition": { + "x": 17557.899922075598, + "y": 9448.093802956459 + }, + "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", + "project": "Foundations", + "loop": { + "type": "Procedure Loop", + "name": "New Procedure Loop", + "project": "Foundations", + "procedureJavascriptCode": { + "type": "Procedure Javascript Code", + "name": "New Procedure Javascript Code", + "code": "\tlet candle = record.current\n\tlet Al = 0.4 //initial value for alpha factor\n\tlet Bet = 0.4 //initial value for beta factor\n\tlet Ph = 0.8 //initial value for phi factor\n\tlet Ga = 0.3 //initial value for gamma factor\n\tlet sLen = 5 //length of seasonal period ; integer only\n\tlet fLen = 6 //number of season period to forecast ; integer only ; forecast will be calculated on fLen * sLen = 30 periods\n\tlet Iter = 20 //number of loop to proceed parameters optimization\n\n\n\t//initializing Factors with fixed value or optimized value if exists\n\tif (variable.Alpha === undefined) {\n\t\tvariable.Alpha = Al\n\t }\n\t else {\n\t variable.Alpha = variable.Alpha\n\t }\n\t \n\tif (variable.Beta === undefined) {\n\t\tvariable.Beta = Bet\n\t }\n\t else {\n\t variable.Beta = variable.Beta\n\t }\n\n\tif (variable.Phi === undefined) {\n\t\tvariable.Phi = Ph\n\t }\n\t else {\n\t variable.Phi = variable.Phi\n\t }\n\n\tif (variable.Gamma === undefined) {\n\t\tvariable.Gamma = Ga\n\t }\n\t else {\n\t variable.Gamma = variable.Gamma\n\t }\n\t \n\t//Fetching candle close values for sLen length \n\tvariable.lastClose.push(candle.close)\n\tif(variable.lastClose.length > sLen) {\n\t\tvariable.lastClose.splice(0,1)\n\t}\n\tvariable.lastClose2x.push(candle.close)\n\tif(variable.lastClose2x.length > 2 * sLen) {\n\t\tvariable.lastClose2x.splice(0,1)\n\t}\n\t\n\t//fetching candle values for sLen * fLen length\n\tvariable.last30Candles.push(candle.close)\n\tif(variable.last30Candles.length > sLen * fLen) {\n\t\tvariable.last30Candles.splice(0,1)\n\t\tvariable.forecastTrig = 1 //trigger to switch to the next step of forecast optimization as soon as there is enough values\n\t}\n\t\n\t//Initializing A, B, S, Y variables according to Hyndman parameters https://robjhyndman.com/hyndsight/hw-initialization/\n\t\n\t//managing the undefined values until lastClose2x reach sufficient length\n\tif(variable.trig === undefined) {\n\tvariable.trig = 0 //variable to indicate initialization stage is over\n\t}\n\tif(variable.lastClose2x.length < 2 * sLen && variable.trig === 0) {\n\t\tvariable.Y = 0 //forecast through history variable\n\t\tvariable.A = 0 //level\n\t\tvariable.B = 0 //trend\n\t\tvariable.S[0] = 0 //season\n\t\tvariable.previousB = variable.B\n\t\tvariable.previousA = variable.A\n\t\tvariable.trend = 0\n\t\tvariable.last31A.push(variable.A)\n\t\tvariable.last31B.push(variable.B)\n\t\tif(variable.last31A.length > sLen * fLen +1){\n\t\t\tvariable.last31A.splice(0,1)\n\t\t\tvariable.last31B.splice(0,1)\n\t\t}\n\t}\n\tif(variable.lastClose2x.length === 2 * sLen && variable.trig === 0) {\n\t\tfor(var i = 0 ; i < sLen ; i++) {\n\t\t\tvariable.previousA = variable.previousA + variable.lastClose[i]\n\t\t}\n\t\tvariable.previousA = variable.previousA / sLen\n\t\tvariable.last31A.push(variable.A)\n\t\tif(variable.last31A.length > sLen * fLen +1){\n\t\t\tvariable.last31A.splice(0,1)\n\t\t}\n\t\tfor(var i = 0; i < sLen ; i++) {\n\t\t\tvariable.previousB = variable.previousB + variable.lastClose2x[i + sLen] - variable.lastClose2x[i]\n\t\t}\n\t\tvariable.previousB = variable.previousB / Math.pow(sLen,2)\n\t\tvariable.last31B.push(variable.B)\n\t\tif(variable.last31B.length > sLen * fLen +1){\n\t\t\tvariable.last31B.splice(0,1)\n\t\t}\n\t\tvariable.S[0] = candle.close / variable.previousA\n\t\tvariable.trig = 1 \n\t\tvariable.trend = 0\n\n\t}\n\tif(variable.lastClose2x.length === 2* sLen && variable.trig === 1)\n\t{\n\t\tvariable.Y = (variable.previousA + variable.Phi * variable.previousB) * variable.S[0]\n\t\tvariable.A = variable.Alpha * variable.Y / variable.S[0] + (1 - variable.Alpha) * (variable.previousA + variable.Phi * variable.previousB)\n\t\tvariable.B = variable.Beta * (variable.A - variable.previousA) + (1 - variable.Beta) * variable.Phi * variable.previousB\n\t\tvariable.S.push(variable.Gamma * variable.Y / variable.A + (1 - variable.Gamma) * variable.S[0])\n\t\tvariable.slope = variable.B - variable.previousB\n\t\tif(variable.slope < 0){\n\t\t\tvariable.trend = 1\n\t\t}\n\t\telse {\n\t\t\tvariable.trend = -1\n\t\t}\n\t\tvariable.previousA = variable.A\n\t\tvariable.previousB = variable.B\n\t\t//store last sLen*flen +1 values of variable.A and variable.B for the min MASE forecast optimization \n\t\tvariable.last31A.push(variable.A)\n\t\tvariable.last31B.push(variable.B)\n\t\tif(variable.last31A.length > sLen * fLen +1){\n\t\t\tvariable.last31A.splice(0,1)\n\t\t\tvariable.last31B.splice(0,1)\n\t\t}\n\t}\n\n\t//keep Season array to the right size\n\tif(variable.S.length > sLen) {\n\t\tvariable.S.splice(0,1)\n\t}\n\n\t//Parameters optimization\n\t//calculation of initial mean square error\n\n\tvariable.Errors.push(Math.pow(variable.Y - candle.close, 2))\n\tif(variable.Errors.length > sLen) {\n\t\t\tvariable.Errors.splice(0,1)\n\t}\n\tif(variable.Errors.length === sLen) {\n\t\tvariable.ErrSqSum = 0\n\t\tfor (var k = 0 ; k < variable.Errors.length ; k++) {\n\t\t\t\tvariable.ErrSqSum = variable.ErrSqSum + variable.Errors[k]\n\t\t}\n\t\tvariable.MS = variable.ErrSqSum / variable.Errors.length\n\t\tif(variable.lastClose2x.length === 2*sLen && variable.trig === 1 ){\n\t\t//initialiying best parameters calculation\n\t\tvariable.bestAlpha = 0\n\t\tvariable.bestBeta = variable.Beta\n\t\tvariable.bestPhi = variable.Phi\n\t\tvariable.bestGamma = variable.Gamma\n\t\tvariable.bestError = variable.MS\n\t\t//Alpha optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestAlpha = variable.bestAlpha +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Alpha = variable.bestAlpha\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestBeta = 0\n\t\t//Beta optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestBeta = variable.bestBeta +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Beta = variable.bestBeta\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestPhi = 0.8\n\t\t//Phi optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestPhi = variable.bestPhi +(1 - (i/Iter) * 0.2)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Phi = variable.bestPhi\n\t\t\t}\n\t\t\n\t\t}\n\t\tvariable.bestError = variable.MS\n\t\tvariable.bestGamma = 0\n\t\t//Gamma optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.bestGamma = variable.bestGamma +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.previousA\n\t\t\tvariable.previoussB = variable.previousB\n\t\t\tvariable.sErrSqSum = 0\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.bestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.bestAlpha * variable.sY / variable.sS[0] + (1 - variable.bestAlpha) * (variable.previoussA + variable.bestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.bestBeta * (variable.sA - variable.previoussA) + (1 - variable.bestBeta) * variable.bestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.bestGamma * variable.sY / variable.sA + (1 - variable.bestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t\tvariable.sError.push(Math.pow(variable.sY - variable.lastClose[j],2))\n\t\t\t}\n\t\t\tfor(var k = 0 ; k < variable.sError.length ; k++) {\n\t\t\t\tvariable.sErrSqSum = variable.sErrSqSum + variable.sErrSqSum[k]\n\t\t\t}\n\t\t\tvariable.sMS = variable.sErrSqSum / variable.sError.length\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.Gamma = variable.bestGamma\n\t\t\t}\n\t\t\n\t\t}\n\t}\n\t}\n\t//initializing forecast data\n\tvariable.fS = [] // purge the season array for forecast data\n\tvariable.previousfA = variable.A //equivalent A variable for the forecast calculation\n\tvariable.previousfB = variable.B //equivalent B variable for the forecast calculation\n\n\n\t//calculating forecast data 1st set\n\tif(variable.forecastTrig === undefined) {\n\t\tvariable.forecastTrig = 0\n\t}\n\tif(variable.S.length === sLen && variable.trig === 1 && variable.forecastTrig === 0) {\n\tfor (var j = 0; j < fLen ; j++) {\n\t\tfor(var n = 0; n < sLen; n++) {\n\t\t\tvariable.fY.push((variable.previousfA + variable.Phi * variable.previousfB) * variable.S[n])\n\t\t\tvariable.fA = variable.previousfA + variable.Phi * variable.previousfB\n\t\t\tvariable.fB = variable.Phi * variable.previousfB\n\t\t\tvariable.previousfA = variable.fA\n\t\t\tvariable.previousfB = variable.fB\n\t\t\tif(variable.fY.length > fLen * sLen) {\n\t\t\t\tvariable.fY.splice(0,1)\n\t\t\t}\n\t\t\tvariable.prevfY.push(variable.fY[0])\n\t\t\tif(variable.prevfY.length > fLen * sLen){\n\t\t\tvariable.prevfY.splice(0,1)\n\t\t\t}\n\n\t\t}\n\t}\n\n\t\tvariable.forecast = variable.fY[0] \n\t\tvariable.forecast5 = 100 * (variable.fY[4] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast10 = 100 * (variable.fY[9] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast20 = 100 * (variable.fY[19] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast30 = 100 * (variable.fY[29] - variable.fY[0])/variable.fY[0]\n\t\tvariable.SW = 1\n\n\t \n\t} else {\n\t\tvariable.forecast = 0 \n\t\tvariable.forecast5 = 0\n\t\tvariable.forecast10 = 0\n\t\tvariable.forecast20 = 0\n\t\tvariable.forecast30 = 0\n\t}\n//Forecast optimization after 1st data set\n\n\tif(variable.prevfY.length === sLen * fLen && variable.trig === 1 && variable.forecastTrig === 1 && variable.SW === 1) {\n\t\t//initialising best parameters calculation\n\t\t//calculate the value for Mean Absolute Scale Error with seasonal period influence\n\t\t//Calculation of the stable measure of the scale of the training time serie i.e. candle.close on the desired forecast number of periods minus season number of periods\n\t\tvariable.sumY = 0\n\t\tvariable.totalQT = 0\n\t\tfor(var i = sLen + 1 ; i < fLen * sLen ; i++) {\n\t\t\tvariable.sumY = variable.sumY + Math.abs(variable.last30Candles[i] - variable.last30Candles[i-sLen])\n\t\t}\n\t\tvariable.Q = variable.sumY / (fLen * sLen - sLen)\n\t\tfor(var i = 0 ; i < variable.prevfY.length ; i++) {\n\t\t\tvariable.totalQT = variable.totalQT + (variable.last30Candles[i] - variable.prevfY[i])/variable.Q\n\t\t}\n\t\tvariable.MASE = Math.abs(variable.totalQT / variable.prevfY.length)\n\t\t\n\t\tvariable.MbestAlpha = 0\n\t\tvariable.MbestBeta = variable.Beta\n\t\tvariable.MbestPhi = variable.Phi\n\t\tvariable.MbestGamma = variable.Gamma\n\t\tvariable.bestError = variable.MASE\n\t//Alpha optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.MbestAlpha = variable.MbestAlpha +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.last31A[0]\n\t\t\tvariable.previoussB = variable.last31B[0]\n\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.MbestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.MbestAlpha * variable.sY / variable.sS[0] + (1 - variable.MbestAlpha) * (variable.previoussA + variable.MbestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.MbestBeta * (variable.sA - variable.previoussA) + (1 - variable.MbestBeta) * variable.MbestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.MbestGamma * variable.sY / variable.sA + (1 - variable.MbestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t}\n\t\tvariable.sumY = 0\n\t\tvariable.totalQT = 0\n\t\tfor(var i = sLen + 1 ; i < fLen * sLen ; i++) {\n\t\t\tvariable.sumY = variable.sumY + Math.abs(variable.last30Candles[i] - variable.last30Candles[i-sLen])\n\t\t}\n\t\tvariable.Q = variable.sumY / (fLen * sLen - sLen)\n\t\tfor(var i = 0 ; i < variable.prevfY.length ; i++) {\n\t\t\tvariable.totalQT = variable.totalQT + (variable.last30Candles[i] - variable.prevfY[i])/variable.Q\n\t\t}\n\t\t\tvariable.sMS = Math.abs(variable.totalQT / variable.prevfY.length)\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.MAlpha = variable.MbestAlpha\n\t\t\t\tvariable.Alpha = variable.MbestAlpha\n\t\t\t}\n\t\t\n\t\t}\n\tvariable.bestError = variable.MS\n\tvariable.MbestBeta = 0\n\t//Beta optimization\n\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.MbestBeta = variable.MbestBeta +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.last31A[0]\n\t\t\tvariable.previoussB = variable.last31B[0]\n\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.MbestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.MbestAlpha * variable.sY / variable.sS[0] + (1 - variable.MbestAlpha) * (variable.previoussA + variable.MbestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.MbestBeta * (variable.sA - variable.previoussA) + (1 - variable.MbestBeta) * variable.MbestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.MbestGamma * variable.sY / variable.sA + (1 - variable.MbestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t}\n\t\tvariable.sumY = 0\n\t\tvariable.totalQT = 0\n\t\tfor(var i = sLen + 1 ; i < fLen * sLen ; i++) {\n\t\t\tvariable.sumY = variable.sumY + Math.abs(variable.last30Candles[i] - variable.last30Candles[i-sLen])\n\t\t}\n\t\tvariable.Q = variable.sumY / (fLen * sLen - sLen)\n\t\tfor(var i = 0 ; i < variable.prevfY.length ; i++) {\n\t\t\tvariable.totalQT = variable.totalQT + (variable.last30Candles[i] - variable.prevfY[i])/variable.Q\n\t\t}\n\t\t\tvariable.sMS = Math.abs(variable.totalQT / variable.prevfY.length)\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.MBeta = variable.MbestBeta\n\t\t\t\tvariable.Beta = variable.MbestBeta\n\t\t\t}\n\t\t\n\t\t}\n\tvariable.bestError = variable.MS\n\tvariable.MbestGamma = 0\n\t//Gamma optimization\n\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.MbestGamma = variable.MbestGamma +(1 - i/Iter)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.last31A[0]\n\t\t\tvariable.previoussB = variable.last31B[0]\n\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.MbestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.MbestAlpha * variable.sY / variable.sS[0] + (1 - variable.MbestAlpha) * (variable.previoussA + variable.MbestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.MbestBeta * (variable.sA - variable.previoussA) + (1 - variable.MbestBeta) * variable.MbestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.MbestGamma * variable.sY / variable.sA + (1 - variable.MbestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t}\n\t\tvariable.sumY = 0\n\t\tvariable.totalQT = 0\n\t\tfor(var i = sLen + 1 ; i < fLen * sLen ; i++) {\n\t\t\tvariable.sumY = variable.sumY + Math.abs(variable.last30Candles[i] - variable.last30Candles[i-sLen])\n\t\t}\n\t\tvariable.Q = variable.sumY / (fLen * sLen - sLen)\n\t\tfor(var i = 0 ; i < variable.prevfY.length ; i++) {\n\t\t\tvariable.totalQT = variable.totalQT + (variable.last30Candles[i] - variable.prevfY[i])/variable.Q\n\t\t}\n\t\t\tvariable.sMS = Math.abs(variable.totalQT / variable.prevfY.length)\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.MGamma = variable.MbestGamma\n\t\t\t\tvariable.Gamme = variable.MbestGamma\n\t\t\t}\n\t\t\n\t\t}\n\tvariable.bestError = variable.MS\n\tvariable.MbestPhi = 0.8\n\t\t\t\n\t\t//Phi optimization\n\t\tfor(var i = 0 ; i < Iter ; i++) {\n\t\t\n\t\t\tvariable.sS = []\n\t\t\tvariable.sError = []\n\t\t\tvariable.MbestPhi = variable.MbestPhi +(1 - (i/Iter) * 0.2)\n\t\t\tvariable.sS[0] = variable.S[0]\n\t\t\tvariable.previoussA = variable.last31A[0]\n\t\t\tvariable.previoussB = variable.last31B[0]\n\n\t\t\tfor(var j=0 ; j < sLen ; j++) {\n\t\t\t\tvariable.sY = (variable.previoussA + variable.MbestPhi * variable.previoussB) * variable.sS[0]\n\t\t\t\tvariable.sA = variable.MbestAlpha * variable.sY / variable.sS[0] + (1 - variable.MbestAlpha) * (variable.previoussA + variable.MbestPhi * variable.previoussB)\n\t\t\t\tvariable.sB = variable.MbestBeta * (variable.sA - variable.previoussA) + (1 - variable.MbestBeta) * variable.MbestPhi * variable.previoussB\n\t\t\t\tvariable.sS.push(variable.MbestGamma * variable.sY / variable.sA + (1 - variable.MbestGamma) * variable.sS[0])\n\t\t\t\tvariable.previoussA = variable.sA\n\t\t\t\tvariable.previoussB = variable.sB\n\t\t\t}\n\t\tvariable.sumY = 0\n\t\tvariable.totalQT = 0\n\t\tfor(var i = sLen + 1 ; i < fLen * sLen ; i++) {\n\t\t\tvariable.sumY = variable.sumY + Math.abs(variable.last30Candles[i] - variable.last30Candles[i-sLen])\n\t\t}\n\t\tvariable.Q = variable.sumY / (fLen * sLen - sLen)\n\t\tfor(var i = 0 ; i < variable.prevfY.length ; i++) {\n\t\t\tvariable.totalQT = variable.totalQT + (variable.last30Candles[i] - variable.prevfY[i])/variable.Q\n\t\t}\n\t\t\tvariable.sMS = Math.abs(variable.totalQT / variable.prevfY.length)\n\t\t\tif(variable.sMS < variable.bestError){\n\t\t\t\tvariable.bestError = variable.sMs\n\t\t\t\tvariable.MPhi = variable.MbestPhi\n\t\t\t\tvariable.Phi = variable.MbestPhi\n\t\t\t}\n\t\t\n\t\t}\n\t}\n\t//calculating forecast data after 1st set\n\tif(variable.S.length === sLen && variable.trig === 1 && variable.forecastTrig === 1) {\n\tfor (var j = 0; j < fLen ; j++) {\n\t\tfor(var n = 0; n < sLen; n++) {\n\t\t\tvariable.fY.push((variable.previousfA + variable.MPhi * variable.previousfB) * variable.S[n])\n\t\t\tvariable.fA = variable.previousfA + variable.MPhi * variable.previousfB\n\t\t\tvariable.fB = variable.MPhi * variable.previousfB\n\t\t\tvariable.previousfA = variable.fA\n\t\t\tvariable.previousfB = variable.fB\n\t\t\tif(variable.fY.length > fLen * sLen) {\n\t\t\t\tvariable.fY.splice(0,1)\n\t\t\t}\n\t\t\tvariable.prevfY.push(variable.fY[0])\n\t\t\tif(variable.prevfY.length > fLen * sLen){\n\t\t\tvariable.prevfY.splice(0,1)\n\t\t\t}\n\t\t}\n\t}\n\n\t\tvariable.forecast = variable.fY[0] \n\t\tvariable.forecast5 = 100 * (variable.fY[4] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast10 = 100 * (variable.fY[9] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast20 = 100 * (variable.fY[19] - variable.fY[0])/variable.fY[0]\n\t\tvariable.forecast30 = 100 * (variable.fY[29] - variable.fY[0])/variable.fY[0]\n\t\t\n\n\t \n\t} else {\n\t\tvariable.forecast = 0 \n\t\tvariable.forecast5 = 0\n\t\tvariable.forecast10 = 0\n\t\tvariable.forecast20 = 0\n\t\tvariable.forecast30 = 0\n\t}\n\t//identifying max and min forecast value until the value used to calculate the first member of the array is out of scope\n\t//The idea is to frame the forecast value by the corresponding min and max at the same distance\nvariable.lastForecast5.push(variable.forecast5)\nif(variable.lastForecast5.length > 5){\n variable.lastForecast5.splice(0,1)\n}\nvariable.maxForecast5 = Math.max.apply(Math,variable.lastForecast5)\nvariable.minForecast5 = Math.min.apply(Math,variable.lastForecast5)\n\nvariable.lastForecast10.push(variable.forecast10)\nif(variable.lastForecast10.length > 10){\n variable.lastForecast10.splice(0,1)\n}\nvariable.maxForecast10 = Math.max.apply(Math,variable.lastForecast10)\nvariable.minForecast10 = Math.min.apply(Math,variable.lastForecast10)\n\nvariable.lastForecast20.push(variable.forecast20)\nif(variable.lastForecast20.length > 10){\n variable.lastForecast20.splice(0,1)\n}\nvariable.maxForecast20 = Math.max.apply(Math,variable.lastForecast20)\nvariable.minForecast20 = Math.min.apply(Math,variable.lastForecast20)\n\nvariable.lastForecast30.push(variable.forecast30)\nif(variable.lastForecast30.length > 30){\n variable.lastForecast30.splice(0,1)\n}\nvariable.maxForecast30 = Math.max.apply(Math,variable.lastForecast30)\nvariable.minForecast30 = Math.min.apply(Math,variable.lastForecast30)\n\n//calculate time for forecast\nvariable.T5Begin = candle.begin + (candle.end - candle.begin) * 5\nvariable.T5End = candle.end + (candle.end - candle.begin) * 5\nvariable.T10Begin = candle.begin + (candle.end - candle.begin) * 10\nvariable.T10End = candle.end + (candle.end - candle.begin) * 10\nvariable.T20Begin = candle.begin + (candle.end - candle.begin) * 20\nvariable.T20End = candle.end + (candle.end - candle.begin) * 20\nvariable.T30Begin = candle.begin + (candle.end - candle.begin) * 30\nvariable.T30End = candle.end + (candle.end - candle.begin) * 30\n\t// End of code :-)", + "project": "Foundations", + "id": "aa7a9fa4-0f75-4a43-98f0-ce7fcc8a5601", + "savedPayload": { + "position": { + "x": 16576.238597598982, + "y": 6565.781448887387 + }, + "targetPosition": { + "x": 16840.741961130596, + "y": 6929.839096356113 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "a76fab6e-bdb3-4072-8141-aa97256b4935", + "savedPayload": { + "position": { + "x": 16840.741961130596, + "y": 6929.839096356113 + }, + "targetPosition": { + "x": 17369.74868819382, + "y": 7657.954391293566 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "initialization": { + "type": "Procedure Initialization", + "name": "New Procedure Initialization", + "project": "Foundations", + "procedureJavascriptCode": { + "type": "Procedure Javascript Code", + "name": "New Procedure Javascript Code", + "code": "/* Initialization Code*/\n\nvariable.lastClose = []\nvariable.S = []\nvariable.fY = []\nvariable.Errors = []\nvariable.lastClose2x = []\nvariable.lastForecast5 = []\nvariable.lastForecast10 = []\nvariable.lastForecast20 = []\nvariable.lastForecast30 = []\nvariable.prevfY = []\nvariable.last30Candles = []\nvariable.last31A = []\nvariable.last31B = []", + "project": "Foundations", + "id": "1a94e2a9-b7ad-477d-93c9-748d124f9541", + "savedPayload": { + "position": { + "x": 17598.538049923958, + "y": 7144.085071369603 + }, + "targetPosition": { + "x": 17552.78017757793, + "y": 7246.858935354396 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 1, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "5bc733d9-a73d-491e-8a39-0372970bbd01", + "savedPayload": { + "position": { + "x": 17552.78017757793, + "y": 7246.858935354396 + }, + "targetPosition": { + "x": 17369.74868819382, + "y": 7657.954391293566 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 1, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "1728d5b3-4367-4159-af9a-8d16622ec300", + "savedPayload": { + "position": { + "x": 17369.74868819382, + "y": 7657.954391293566 + }, + "targetPosition": { + "x": 17557.899922075598, + "y": 9448.093802956459 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 5, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "231e7990-a720-4c54-97ae-92b5a4f9f950", + "savedPayload": { + "position": { + "x": 17557.899922075598, + "y": 9448.093802956459 + }, + "targetPosition": { + "x": 18337.322785481592, + "y": 9898.093802956459 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Plotter Module", + "name": "Holt-Winters 2", + "id": "28d3bf0a-f89f-4234-bbb3-30c73af05ba3" + } + } + } + ], + "id": "7533353c-c60c-4395-b8da-36daf661261e", + "savedPayload": { + "position": { + "x": 17550.585594407272, + "y": 10095.507762737428 + }, + "targetPosition": { + "x": 18051.878281255034, + "y": 9765.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Indicator Bot", + "name": "On-Balance-Volume Integral", + "config": "{\n \"codeName\": \"OBV-Integral\"\n}", + "project": "Foundations", + "processes": [ + { + "type": "Process Definition", + "name": "Multi-Time-Frame-Market", + "config": "{\n \"codeName\": \"Multi-Time-Frame-Market\",\n \"description\": \"Produces volume energy Indicator\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Time-Frame-Market\"\n }\n}", + "project": "Foundations", + "processOutput": { + "type": "Process Output", + "name": "New Process Output", + "project": "Foundations", + "outputDatasets": [ + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Market On-Balance-Volume Integral", + "project": "Foundations", + "id": "188e52d2-35bf-4d40-80c1-aab0c55b3bee", + "savedPayload": { + "position": { + "x": 17737.86180006144, + "y": 11473.962528528613 + }, + "targetPosition": { + "x": 17448.386151177125, + "y": 10948.41153318848 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "244cf242-d972-4638-9ae5-17ece85cc061" + } + } + } + ], + "outputDatasetFolders": [], + "id": "2394d2ea-28c2-4c89-a3ee-db437301cdb3", + "savedPayload": { + "position": { + "x": 17448.386151177125, + "y": 10948.41153318848 + }, + "targetPosition": { + "x": 17158.91050229281, + "y": 10422.860537848348 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "processDependencies": { + "type": "Process Dependencies", + "name": "New Process Dependencies", + "project": "Foundations", + "statusDependencies": [ + { + "type": "Status Dependency", + "name": "Candles Volumes Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "2d60e053-6768-4b7c-b34d-0a798b25b71f", + "savedPayload": { + "position": { + "x": 18159.43397724719, + "y": 11781.327560022837 + }, + "targetPosition": { + "x": 17365.918536533067, + "y": 11356.670939506603 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Candles Volumes Multi-Time-Frame-Market Status Report", + "id": "a0a61ba9-91cb-4ec7-92fe-134ff079de2d" + } + } + }, + { + "type": "Status Dependency", + "name": "On-Balance-Volume Integral Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "1a58372b-d099-4b38-b13f-f07c462a2465", + "savedPayload": { + "position": { + "x": 17562.09882553749, + "y": 11761.656487651398 + }, + "targetPosition": { + "x": 17365.918536533067, + "y": 11356.670939506603 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Market-OBV Integral", + "id": "fd47e80c-0e66-4e46-9099-cc1d6ca1a2a7" + } + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Market", + "project": "Foundations", + "id": "996cbb15-ac70-4f45-85d8-4159dcd6088a", + "savedPayload": { + "position": { + "x": 17286.587191707942, + "y": 11799.623011099271 + }, + "targetPosition": { + "x": 17365.918536533067, + "y": 11356.670939506603 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "2b03494a-67d6-47f1-89b6-53fc4c9116a8" + } + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Market", + "project": "Foundations", + "id": "46f01c0d-d4db-4169-918b-acaf86fcba97", + "savedPayload": { + "position": { + "x": 17041.37743522835, + "y": 11668.396898585923 + }, + "targetPosition": { + "x": 17365.918536533067, + "y": 11356.670939506603 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "9bf0483c-4825-4a46-9cf4-1b5262579fc1" + } + } + } + ], + "dataMineDataDependencies": [], + "id": "66e00956-6532-4dba-ad49-c3b833b40fd3", + "savedPayload": { + "position": { + "x": 17140.78715435391, + "y": 11322.678043934713 + }, + "targetPosition": { + "x": 17158.91050229281, + "y": 10422.860537848348 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "Market-OBV Integral", + "project": "Foundations", + "id": "fd47e80c-0e66-4e46-9099-cc1d6ca1a2a7", + "savedPayload": { + "position": { + "x": 16848.507813786215, + "y": 10936.329301229216 + }, + "targetPosition": { + "x": 17158.91050229281, + "y": 10422.860537848348 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "e3545771-647d-44e2-8563-6e20fb355d5f", + "savedPayload": { + "position": { + "x": 16896.13500462274, + "y": 10567.598362290506 + }, + "targetPosition": { + "x": 17158.91050229281, + "y": 10422.860537848348 + }, + "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", + "project": "Foundations", + "id": "bc032c15-09dc-40cf-9794-3f93ac65b11d", + "savedPayload": { + "position": { + "x": 16858.971333597354, + "y": 10416.819421868715 + }, + "targetPosition": { + "x": 17158.91050229281, + "y": 10422.860537848348 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "60057a3c-b652-463f-a6c9-df4801b9a97b", + "savedPayload": { + "position": { + "x": 17234.49175173907, + "y": 10514.799134112336 + }, + "targetPosition": { + "x": 17488.06270878349, + "y": 9971.014461890347 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Process Definition", + "name": "Multi-Time-Frame-Daily", + "config": "{\n \"codeName\": \"Multi-Time-Frame-Daily\",\n \"description\": \"Produces the volume energy indicators.\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Time-Frame-Daily\"\n }\n}", + "project": "Foundations", + "processOutput": { + "type": "Process Output", + "name": "New Process Output", + "project": "Foundations", + "outputDatasets": [ + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Daily On-Balance-Volume Integral", + "project": "Foundations", + "id": "3ef0df95-a06e-46ca-a5cb-5606a2a44098", + "savedPayload": { + "position": { + "x": 16552.887143644024, + "y": 11205.602906997661 + }, + "targetPosition": { + "x": 16719.817621993898, + "y": 10629.292040018838 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "71f4a5af-27d3-4413-b157-a3db2cb7039c" + } + } + } + ], + "outputDatasetFolders": [], + "id": "deaefe94-e884-4b3c-855a-68601d3a84c6", + "savedPayload": { + "position": { + "x": 16719.817621993898, + "y": 10629.292040018838 + }, + "targetPosition": { + "x": 16886.74810034377, + "y": 10052.981173040014 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "processDependencies": { + "type": "Process Dependencies", + "name": "New Process Dependencies", + "project": "Foundations", + "statusDependencies": [ + { + "type": "Status Dependency", + "name": "On-Balance-Volume Integral Multi-Time-Frame-Daily", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "1d5c5c80-8827-4eab-97c1-4f5c3b1b3200", + "savedPayload": { + "position": { + "x": 16695.857548785505, + "y": 11354.674774881745 + }, + "targetPosition": { + "x": 16676.528016049, + "y": 10754.986214740577 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Daily OBV Span", + "id": "e3b08d7f-db20-4869-9df7-1e302f977abd" + } + } + }, + { + "type": "Status Dependency", + "name": "", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "088182a9-6c64-44d6-b865-0cd3f9934484", + "savedPayload": { + "position": { + "x": 16539.988090434646, + "y": 11339.243733916177 + }, + "targetPosition": { + "x": 16676.528016049, + "y": 10754.986214740577 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "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 Starting Point\"\n}", + "project": "Foundations", + "id": "79e25729-4f6d-46b2-9274-293dc93fab16", + "savedPayload": { + "position": { + "x": 16393.42360237151, + "y": 11283.996508549993 + }, + "targetPosition": { + "x": 16676.528016049, + "y": 10754.986214740577 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Exchange-Raw-Data Historic-OHLCVs Status Report", + "id": "181c7c34-7243-497a-9ddb-1b0067c6d66e" + } + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "374e08eb-4206-4e94-9301-cae040f5bb55", + "savedPayload": { + "position": { + "x": 16266.152212248331, + "y": 11192.698105891543 + }, + "targetPosition": { + "x": 16676.528016049, + "y": 10754.986214740577 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "678a567c-f08d-49b9-813b-4e54fd6afadb" + } + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "dec59d50-5e72-456a-a606-b6162223ad8c", + "savedPayload": { + "position": { + "x": 16166.847254976088, + "y": 11071.570361204256 + }, + "targetPosition": { + "x": 16676.528016049, + "y": 10754.986214740577 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "2e683057-f911-4105-bc77-16f2706d1915" + } + } + } + ], + "dataMineDataDependencies": [], + "id": "b666fd87-54fe-4d56-a8f6-6dd671c5d9f0", + "savedPayload": { + "position": { + "x": 16454.026631937482, + "y": 10468.615785145774 + }, + "targetPosition": { + "x": 16886.74810034377, + "y": 10052.981173040014 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "Daily OBV Span", + "project": "Foundations", + "id": "e3b08d7f-db20-4869-9df7-1e302f977abd", + "savedPayload": { + "position": { + "x": 16595.465555115956, + "y": 10124.775872326281 + }, + "targetPosition": { + "x": 16886.74810034377, + "y": 10052.981173040014 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "a6cf0014-5704-4481-bd48-81da13dce603", + "savedPayload": { + "position": { + "x": 16598.59266685436, + "y": 9969.51593386508 + }, + "targetPosition": { + "x": 16886.74810034377, + "y": 10052.981173040014 + }, + "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", + "project": "Foundations", + "id": "23e663af-a651-4311-a45e-60b8041f5ac4", + "savedPayload": { + "position": { + "x": 16678.930794290893, + "y": 9836.62043883687 + }, + "targetPosition": { + "x": 16886.74810034377, + "y": 10052.981173040014 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "0c805179-25b1-42ff-8cc2-7f6e2744d556", + "savedPayload": { + "position": { + "x": 16924.247136311948, + "y": 10176.226547885748 + }, + "targetPosition": { + "x": 17488.06270878349, + "y": 9971.014461890347 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "products": [ + { + "type": "Product Definition", + "name": "On-Balance-Volume Integral", + "config": "{\n \"codeName\": \"OBVInt\",\n \"singularVariableName\": \"OBVInt\",\n \"pluralVariableName\": \"OBVInts\"\n}", + "project": "Foundations", + "datasets": [ + { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", + "project": "Foundations", + "id": "244cf242-d972-4638-9ae5-17ece85cc061", + "savedPayload": { + "position": { + "x": 16442.043684788652, + "y": 10162.590967066924 + }, + "targetPosition": { + "x": 16781.42904230814, + "y": 9329.033783004927 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", + "project": "Foundations", + "id": "71f4a5af-27d3-4413-b157-a3db2cb7039c", + "savedPayload": { + "position": { + "x": 15883.793207585799, + "y": 9263.84246285934 + }, + "targetPosition": { + "x": 16781.42904230814, + "y": 9329.033783004927 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + } + ], + "record": { + "type": "Record Definition", + "name": "On Balance Volume Integral", + "project": "Foundations", + "properties": [ + { + "type": "Record Property", + "name": "Begin", + "config": "{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "record.current.begin", + "project": "Foundations", + "id": "ff2fc6e0-73a4-4740-a8aa-f3a016e19ce4", + "savedPayload": { + "position": { + "x": 15833.460667885756, + "y": 10826.594715807418 + }, + "targetPosition": { + "x": 16066.262684265703, + "y": 10441.493143271766 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "ab054fb7-ee80-4919-915f-766eb2af103d", + "savedPayload": { + "position": { + "x": 16066.262684265703, + "y": 10441.493143271766 + }, + "targetPosition": { + "x": 16299.06470064565, + "y": 10056.391570736114 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "End", + "config": "{\n \"codeName\": \"end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "record.current.end", + "project": "Foundations", + "id": "f7584067-70de-4d54-9a56-986c6001fddc", + "savedPayload": { + "position": { + "x": 15422.67842188225, + "y": 9851.581682314581 + }, + "targetPosition": { + "x": 15860.87156126395, + "y": 9953.986626525348 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "8f8aa8b0-7820-4bac-b969-ce585aac1006", + "savedPayload": { + "position": { + "x": 15860.87156126395, + "y": 9953.986626525348 + }, + "targetPosition": { + "x": 16299.06470064565, + "y": 10056.391570736114 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "On-Balance-Volume Integral", + "config": "{\n \"codeName\": \"OBVInt\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.Norm", + "project": "Foundations", + "id": "89cd02b0-5a20-4ae3-b1f2-364371470e04", + "savedPayload": { + "position": { + "x": 16223.03222585572, + "y": 9159.608953388231 + }, + "targetPosition": { + "x": 16261.048463250685, + "y": 9608.000262062173 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "57a09601-1430-467a-ad2e-b69a8053c3ea", + "savedPayload": { + "position": { + "x": 16261.048463250685, + "y": 9608.000262062173 + }, + "targetPosition": { + "x": 16299.06470064565, + "y": 10056.391570736114 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "On-Balance-Volune Integral 3", + "config": "{\n \"codeName\": \"OBVInt3\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.Norm3", + "project": "Foundations", + "id": "cd952b49-6a9d-4586-a9e0-b1061cbabe12", + "savedPayload": { + "position": { + "x": 17128.460325740103, + "y": 9706.959321116565 + }, + "targetPosition": { + "x": 16713.762513192876, + "y": 9881.67544592634 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "7adfa0d1-92e3-4a46-9d31-c5243c1583ed", + "savedPayload": { + "position": { + "x": 16713.762513192876, + "y": 9881.67544592634 + }, + "targetPosition": { + "x": 16299.06470064565, + "y": 10056.391570736114 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "8c67bff5-e281-4062-aa55-49e207f4b365", + "savedPayload": { + "position": { + "x": 16543.99093246038, + "y": 8946.773212200242 + }, + "targetPosition": { + "x": 16781.42904230814, + "y": 9329.033783004927 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "dataBuilding": { + "type": "Data Building Procedure", + "name": "New Data Building Procedure", + "project": "Foundations", + "loop": { + "type": "Procedure Loop", + "name": "New Procedure Loop", + "project": "Foundations", + "procedureJavascriptCode": { + "type": "Procedure Javascript Code", + "name": "New Procedure Javascript Code", + "code": "/* Loop Code */\n\nlet candle = record.current\nlet volume = getElement('volumes', candle)\nlet K = 2\nlet Len = 10 //number of period for integral calculation\nlet Len3 = 3\nlet Len5 = 5\nlet Len15 = 15\nlet Len20 = 20\n\nvariable.CDL = candle.close\n\nif (variable.previousVEma20 === undefined) {\nvariable.previousVEma20 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma3 === undefined) {\nvariable.previousVEma3 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma5 === undefined) {\nvariable.previousVEma5 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma10 === undefined) {\nvariable.previousVEma10 = volume.buy + volume.sell\n}\n\n//build candle close array\nvariable.cdClose.push(candle.close)\n\n//keep the array to the right size\nif (variable.cdClose.length > K) {\n variable.cdClose.splice(0, 1)\n}\n\n//manage Previous On balance value\n\nif (variable.previousOnBV === undefined) {\n\tvariable.previousOnBV = 0\n}\n\n//procedure for OBV calculation\nif (variable.cdClose[1] > variable.cdClose[0]) {\n\tvariable.OnBV = variable.previousOnBV + volume.buy + volume.sell\n\t}\n\nif (variable.cdClose[1] === variable.cdClose[0]) {\n\tvariable.OnBV = variable.previousOnBV\n\t}\nif (variable.cdClose[1] < variable.cdClose[0]) {\n\tvariable.OnBV = variable.previousOnBV - (volume.buy + volume.sell)\n\t}\n\n//manage NaN and undefined\nif (variable.OnBV === undefined || isNaN(variable.OnBV)) {\n\tvariable.OBV = 0\n\tvariable.previousOnBV = 0\n}\nelse {\n\tvariable.OBV = variable.OnBV\n\tvariable.previousOnBV = variable.OnBV\n}\n\n// Calculate On balance Volume EMA3\nvariable.VEma3 = calculateVEMA(3, variable.OBV, variable.previousVEma3)\nvariable.previousVEma3 = variable.VEma3\n\n// Calculate On balance Volume EMA5\nvariable.VEma5 = calculateVEMA(5, variable.OBV, variable.previousVEma5)\nvariable.previousVEma5 = variable.VEma5\n\n// Calculate On balance Volume EMA10\nvariable.VEma10 = calculateVEMA(10, variable.OBV, variable.previousVEma10)\nvariable.previousVEma10 = variable.VEma10\n\n// Calculate On balance Volume EMA20\nvariable.VEma20 = calculateVEMA(20, variable.OBV, variable.previousVEma20)\nvariable.previousVEma20 = variable.VEma20\n\nif(variable.VEma3 > variable.previousVEma3) {\n\tvariable.IntVEma3 = (variable.VEma3 - variable.previousVEma3)/2 + variable.previousVEma3\n}\nif(variable.VEma3 < variable.previousVEma3) {\n\tvariable.IntVEma3 = (variable.previousVEma3 - variable.VEma3)/2 + variable.VEma3\n}\nif(variable.VEma3 = variable.previousVEma3){\n\tvariable.IntVEma3 = variable.VEma3 * 2\n}\nif(variable.VEma20 > variable.previousVEma20) {\n\tvariable.IntVEma20 = (variable.VEma20 - variable.previousVEma20)/2 + variable.previousVEma20\n}\nif(variable.VEma20 < variable.previousVEma20) {\n\tvariable.IntVEma20 = (variable.previousVEma20 - variable.VEma20)/2 + variable.VEma20\n}\nif(variable.VEma20 = variable.previousVEma20){\n\tvariable.IntVEma20 = variable.VEma20 * 2\n}\n\nif(variable.VEma3 > variable.VEma20){\n\tvariable.IntPos.push(variable.IntVEma3 - variable.IntVEma20)\n\tvariable.IntNeg.push(0)\n\tif(variable.IntPos.length > Len) {\n\t\tvariable.IntPos.splice(0,1)\n\t}\n\tif(variable.IntNeg.length > Len) {\n\t\tvariable.IntNeg.splice(0,1)\n\t}\n\tvariable.IntPos3.push(variable.IntVEma3 - variable.IntVEma20)\n\tvariable.IntNeg3.push(0)\n\tif(variable.IntPos3.length > Len3) {\n\t\tvariable.IntPos3.splice(0,1)\n\t}\n\tif(variable.IntNeg3.length > Len3) {\n\t\tvariable.IntNeg3.splice(0,1)\n\t}\n}\n\nif(variable.VEma3 < variable.VEma20){\n\tvariable.IntPos.push(0)\n\tvariable.IntNeg.push(variable.IntVEma20- variable.IntVEma3)\n\tif(variable.IntPos.length > Len) {\n\t\tvariable.IntPos.splice(0,1)\n\t}\n\tif(variable.IntNeg.length > Len) {\n\t\tvariable.IntNeg.splice(0,1)\n\t}\n\tvariable.IntPos3.push(0)\n\tvariable.IntNeg3.push(variable.IntVEma20- variable.IntVEma3)\n\tif(variable.IntPos3.length > Len3) {\n\t\tvariable.IntPos3.splice(0,1)\n\t}\n\tif(variable.IntNeg3.length > Len3) {\n\t\tvariable.IntNeg3.splice(0,1)\n\t}\n}\nvariable.tNeg = 0\nvariable.tPos = 0\nfor(var i = 0 ; i < Len ; i++) {\n\tvariable.tNeg = variable.tNeg + variable.IntNeg[i]\n\tvariable.tPos = variable.tPos + variable.IntPos[i]\n}\n\nif(variable.IntNeg.length < Len || variable.IntPos.length < Len){\n\tvariable.Norm = 0\n}\nelse {\nvariable.Norm = (variable.tPos - variable.tNeg) / (variable.tPos + variable.tNeg)\n}\n\nvariable.tNeg3 = 0\nvariable.tPos3 = 0\nfor(var i = 0 ; i < Len3 ; i++) {\n\tvariable.tNeg3 = variable.tNeg3 + variable.IntNeg3[i]\n\tvariable.tPos3 = variable.tPos3 + variable.IntPos3[i]\n}\n\nif(variable.IntNeg3.length < Len3 || variable.IntPos3.length < Len3){\n\tvariable.Norm3 = 0\n}\nelse {\nvariable.Norm3 = (variable.tPos3 - variable.tNeg3) / (variable.tPos3 + variable.tNeg3)\n}\n\n//On Balance Volume EMA calculation\nfunction calculateVEMA(periods, price, previousVEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousVEMA * (1-k)\n}\n\n\n\n// End of code :-)", + "project": "Foundations", + "id": "635d8eeb-35bf-405a-82e6-9a6af96fbe88", + "savedPayload": { + "position": { + "x": 16323.270815586042, + "y": 6318.805469125855 + }, + "targetPosition": { + "x": 16519.451104590466, + "y": 6723.791017270651 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "437b6d54-1d71-4086-b571-e7d4d3ab400c", + "savedPayload": { + "position": { + "x": 16519.451104590466, + "y": 6723.791017270651 + }, + "targetPosition": { + "x": 16911.811682599313, + "y": 7533.762113560242 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "initialization": { + "type": "Procedure Initialization", + "name": "New Procedure Initialization", + "project": "Foundations", + "procedureJavascriptCode": { + "type": "Procedure Javascript Code", + "name": "New Procedure Javascript Code", + "code": "/* Initialization Code*/\n\nvariable.cdClose = []\nvariable.IntPos = []\nvariable.IntNeg = []\nvariable.IntPos3 = []\nvariable.IntNeg3 = []", + "project": "Foundations", + "id": "27eac309-54f9-473c-b819-8df94652a11c", + "savedPayload": { + "position": { + "x": 17227.60871804525, + "y": 7068.274753470239 + }, + "targetPosition": { + "x": 17164.44931095606, + "y": 7161.37222548824 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 1, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "a0b86f90-7e8d-45be-a85e-adff426f2580", + "savedPayload": { + "position": { + "x": 17164.44931095606, + "y": 7161.37222548824 + }, + "targetPosition": { + "x": 16911.811682599313, + "y": 7533.762113560242 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 1, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "2dc2b779-5f8f-4486-a417-6bc5fd813493", + "savedPayload": { + "position": { + "x": 16911.811682599313, + "y": 7533.762113560242 + }, + "targetPosition": { + "x": 16781.42904230814, + "y": 9329.033783004927 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 5, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "6fd88cba-d8be-49ce-a767-fa105908badf", + "savedPayload": { + "position": { + "x": 16672.385700450504, + "y": 9590.658026323717 + }, + "targetPosition": { + "x": 17488.06270878349, + "y": 9971.014461890347 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Plotter Module", + "name": "OBV-Integral", + "id": "84165e58-8cd5-4f61-8739-327f30162db0" + } + } + } + ], + "id": "73924310-047c-4fff-a13a-9e7d1999ae34", + "savedPayload": { + "position": { + "x": 17488.06270878349, + "y": 9971.014461890347 + }, + "targetPosition": { + "x": 18051.878281255034, + "y": 9765.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Indicator Bot", + "name": "On-Balance-Volume Span", + "config": "{\n \"codeName\": \"OBV-Span\"\n}", + "project": "Foundations", + "processes": [ + { + "type": "Process Definition", + "name": "Multi-Time-Frame-Market", + "config": "{\n \"codeName\": \"Multi-Time-Frame-Market\",\n \"description\": \"Produces volume energy Indicator\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Time-Frame-Market\"\n }\n}", + "project": "Foundations", + "processOutput": { + "type": "Process Output", + "name": "New Process Output", + "project": "Foundations", + "outputDatasets": [ + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Market On-Balance-Volume Span", + "project": "Foundations", + "id": "e69338c0-7cf1-457d-9e7f-64529a120da6", + "savedPayload": { + "position": { + "x": 17526.84134862413, + "y": 11421.324552394017 + }, + "targetPosition": { + "x": 17305.31766023652, + "y": 10863.716037857923 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "dd09c5ad-1606-4722-933a-e628d0a12638" + } + } + } + ], + "outputDatasetFolders": [], + "id": "c28881a8-a581-4380-a35f-81200db3d1b1", + "savedPayload": { + "position": { + "x": 17305.31766023652, + "y": 10863.716037857923 + }, + "targetPosition": { + "x": 17083.79397184891, + "y": 10306.107523321829 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "processDependencies": { + "type": "Process Dependencies", + "name": "New Process Dependencies", + "project": "Foundations", + "statusDependencies": [ + { + "type": "Status Dependency", + "name": "Candles Volumes Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "4be7aefe-8048-42ea-87ad-ba8505dcbb71", + "savedPayload": { + "position": { + "x": 17597.112960431834, + "y": 11825.55338437579 + }, + "targetPosition": { + "x": 16953.355298472386, + "y": 11196.604998044679 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Candles Volumes Multi-Time-Frame-Market Status Report", + "id": "a0a61ba9-91cb-4ec7-92fe-134ff079de2d" + } + } + }, + { + "type": "Status Dependency", + "name": "On-Balance-Volume Span Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "f1ee85be-b201-4135-a2c8-69e307959e66", + "savedPayload": { + "position": { + "x": 17028.917449895234, + "y": 11640.215594482986 + }, + "targetPosition": { + "x": 16953.355298472386, + "y": 11196.604998044679 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Market-OBV Integral", + "id": "1c0a2ce0-837f-4279-9322-28a02dedc265" + } + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Market", + "project": "Foundations", + "id": "41ef562c-a7cd-4560-9229-4cee1fdce20a", + "savedPayload": { + "position": { + "x": 16753.7385967579, + "y": 11599.907827685916 + }, + "targetPosition": { + "x": 16953.355298472386, + "y": 11196.604998044679 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "2b03494a-67d6-47f1-89b6-53fc4c9116a8" + } + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Market", + "project": "Foundations", + "id": "43adb858-b0c4-432f-acbb-f1e369c13ebb", + "savedPayload": { + "position": { + "x": 16554.806538953348, + "y": 11405.552087724904 + }, + "targetPosition": { + "x": 16953.355298472386, + "y": 11196.604998044679 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "9bf0483c-4825-4a46-9cf4-1b5262579fc1" + } + } + } + ], + "dataMineDataDependencies": [], + "id": "a5b5a603-9323-4533-8956-dea7687b023c", + "savedPayload": { + "position": { + "x": 16953.355298472386, + "y": 11196.604998044679 + }, + "targetPosition": { + "x": 17083.79397184891, + "y": 10306.107523321829 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "Market-OBV Integral", + "project": "Foundations", + "id": "1c0a2ce0-837f-4279-9322-28a02dedc265", + "savedPayload": { + "position": { + "x": 16711.652677087954, + "y": 10776.756922273575 + }, + "targetPosition": { + "x": 17083.79397184891, + "y": 10306.107523321829 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "3618e084-d7a0-415e-88c0-baa9484d8d3b", + "savedPayload": { + "position": { + "x": 16804.989714580865, + "y": 10416.869367515634 + }, + "targetPosition": { + "x": 17083.79397184891, + "y": 10306.107523321829 + }, + "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", + "project": "Foundations", + "id": "90e43950-2795-4548-850e-1a9c0e72c3fb", + "savedPayload": { + "position": { + "x": 16786.961480274626, + "y": 10262.627965529655 + }, + "targetPosition": { + "x": 17083.79397184891, + "y": 10306.107523321829 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "1b2c1b74-ceba-46e5-9ee8-cf89b98f4827", + "savedPayload": { + "position": { + "x": 17083.79397184891, + "y": 10306.107523321829 + }, + "targetPosition": { + "x": 17455.935266609868, + "y": 9835.458124370083 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Process Definition", + "name": "Multi-Time-Frame-Daily", + "config": "{\n \"codeName\": \"Multi-Time-Frame-Daily\",\n \"description\": \"Produces the volume energy indicators.\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Time-Frame-Daily\"\n }\n}", + "project": "Foundations", + "processOutput": { + "type": "Process Output", + "name": "New Process Output", + "project": "Foundations", + "outputDatasets": [ + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Daily On-Balance-Volume Span", + "project": "Foundations", + "id": "be87399f-ea4c-4b1f-8142-fe37c14c8a45", + "savedPayload": { + "position": { + "x": 16586.828475853326, + "y": 10653.41935483871 + }, + "targetPosition": { + "x": 16586.828475853326, + "y": 10353.41935483871 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "b4f63b11-c4cd-4edb-aef1-b5224cbfc84e" + } + } + } + ], + "outputDatasetFolders": [], + "id": "e9f4d8d9-f890-4b0e-b310-8d6360c301d0", + "savedPayload": { + "position": { + "x": 16586.828475853326, + "y": 10353.41935483871 + }, + "targetPosition": { + "x": 16586.828475853326, + "y": 10053.41935483871 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "processDependencies": { + "type": "Process Dependencies", + "name": "New Process Dependencies", + "project": "Foundations", + "statusDependencies": [ + { + "type": "Status Dependency", + "name": "On-Balance-Volume Span Multi-Time-Frame-Daily", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "5a03789e-f5b1-462a-807c-063ca724a338", + "savedPayload": { + "position": { + "x": 16073.180454974761, + "y": 11347.702355252975 + }, + "targetPosition": { + "x": 16053.850922238256, + "y": 10748.013795111807 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Daily OBV Span", + "id": "4e0b3985-0619-4cdc-9c98-285e71c911f3" + } + } + }, + { + "type": "Status Dependency", + "name": "", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "93924b6a-e349-4a50-9dfe-8ed71f927063", + "savedPayload": { + "position": { + "x": 15917.310996623903, + "y": 11332.271314287407 + }, + "targetPosition": { + "x": 16053.850922238256, + "y": 10748.013795111807 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "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 Starting Point\"\n}", + "project": "Foundations", + "id": "8c16a4b6-bc24-4335-b4ba-9797ed2314bf", + "savedPayload": { + "position": { + "x": 15770.746508560766, + "y": 11277.024088921224 + }, + "targetPosition": { + "x": 16053.850922238256, + "y": 10748.013795111807 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Status Report", + "name": "Exchange-Raw-Data Historic-OHLCVs Status Report", + "id": "181c7c34-7243-497a-9ddb-1b0067c6d66e" + } + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "1e4f3b65-b230-42ab-8d6d-b7bcb662d0d8", + "savedPayload": { + "position": { + "x": 15643.475118437587, + "y": 11185.725686262773 + }, + "targetPosition": { + "x": 16053.850922238256, + "y": 10748.013795111807 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "678a567c-f08d-49b9-813b-4e54fd6afadb" + } + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "0f3213c0-1f94-4065-90e9-bcf38a46d473", + "savedPayload": { + "position": { + "x": 15544.170161165344, + "y": 11064.597941575486 + }, + "targetPosition": { + "x": 16053.850922238256, + "y": 10748.013795111807 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {}, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "2e683057-f911-4105-bc77-16f2706d1915" + } + } + } + ], + "dataMineDataDependencies": [], + "id": "251a0d72-a19b-4bae-b4a9-c1ea5319fdf7", + "savedPayload": { + "position": { + "x": 16436.828475853326, + "y": 10313.226975974041 + }, + "targetPosition": { + "x": 16586.828475853326, + "y": 10053.41935483871 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "Daily OBV Span", + "project": "Foundations", + "id": "4e0b3985-0619-4cdc-9c98-285e71c911f3", + "savedPayload": { + "position": { + "x": 16456.92466528566, + "y": 10128.41935483871 + }, + "targetPosition": { + "x": 16586.828475853326, + "y": 10053.41935483871 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "c29acf2e-e528-4e62-be58-5ec7b9250e2e", + "savedPayload": { + "position": { + "x": 16436.828475853326, + "y": 10053.41935483871 + }, + "targetPosition": { + "x": 16586.828475853326, + "y": 10053.41935483871 + }, + "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", + "project": "Foundations", + "id": "8a934186-36c0-4b6c-ae73-c56a86478a7c", + "savedPayload": { + "position": { + "x": 16456.92466528566, + "y": 9978.41935483871 + }, + "targetPosition": { + "x": 16586.828475853326, + "y": 10053.41935483871 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "88b03eed-e0c5-40d4-95c1-1849747e8591", + "savedPayload": { + "position": { + "x": 16859.9922519647, + "y": 9905.11387284522 + }, + "targetPosition": { + "x": 17455.935266609868, + "y": 9835.458124370083 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "products": [ + { + "type": "Product Definition", + "name": "On-Balance-Volume Span", + "config": "{\n \"codeName\": \"OBVSpan\",\n \"singularVariableName\": \"OBVSpan\",\n \"pluralVariableName\": \"OBVSpans\"\n}", + "project": "Foundations", + "datasets": [ + { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame\",\n \"fileName\": \"Data.json\"\n}", + "project": "Foundations", + "id": "dd09c5ad-1606-4722-933a-e628d0a12638", + "savedPayload": { + "position": { + "x": 16776.797126961643, + "y": 10025.928991762414 + }, + "targetPosition": { + "x": 16985.285867658124, + "y": 9463.316829609126 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "config": "{\n \"codeName\": \"Multi-Time-Frame-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\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset/@TimeFrame/@Year/@Month/@Day\",\n \"fileName\": \"Data.json\",\n \"dataRange\": {\n \"filePath\": \"Project/@Project/@MineType/@Mine/@Bot/@Exchange/@BaseAsset-@QuotedAsset/Output/@Product/@Dataset\",\n \"fileName\": \"Data.Range.json\"\n }\n}", + "project": "Foundations", + "id": "b4f63b11-c4cd-4edb-aef1-b5224cbfc84e", + "savedPayload": { + "position": { + "x": 16385.78334068429, + "y": 9438.888973542968 + }, + "targetPosition": { + "x": 16985.285867658124, + "y": 9463.316829609126 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + } + ], + "record": { + "type": "Record Definition", + "name": "On Balance Volume Integral", + "project": "Foundations", + "properties": [ + { + "type": "Record Property", + "name": "Begin", + "config": "{\n \"codeName\": \"begin\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "record.current.begin", + "project": "Foundations", + "id": "b14b8533-502c-47b2-9f7e-9d00fefd53e2", + "savedPayload": { + "position": { + "x": 16446.836476210356, + "y": 9684.283195544187 + }, + "targetPosition": { + "x": 16632.907123590834, + "y": 9448.958496068315 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "7ac27e7f-419f-4deb-a6d3-bf2ce7592752", + "savedPayload": { + "position": { + "x": 16632.907123590834, + "y": 9448.958496068315 + }, + "targetPosition": { + "x": 16818.977770971313, + "y": 9213.633796592443 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "End", + "config": "{\n \"codeName\": \"end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "record.current.end", + "project": "Foundations", + "id": "77a76d15-bfcd-46e5-88fc-19012435d5cc", + "savedPayload": { + "position": { + "x": 16256.365608818025, + "y": 9005.145055895962 + }, + "targetPosition": { + "x": 16537.67168989467, + "y": 9109.389426244203 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "9770a479-33d8-4823-ba09-0fc7caa3b1af", + "savedPayload": { + "position": { + "x": 16537.67168989467, + "y": 9109.389426244203 + }, + "targetPosition": { + "x": 16818.977770971313, + "y": 9213.633796592443 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "On-Balance-Volume PosSpan", + "config": "{\n \"codeName\": \"PosSpan\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.PosSpan", + "project": "Foundations", + "id": "32f6ebb0-6279-4cfe-b12a-5b4a9b612179", + "savedPayload": { + "position": { + "x": 16843.405627037468, + "y": 8614.13126961861 + }, + "targetPosition": { + "x": 16831.19169900439, + "y": 8913.882533105527 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "3a9e968b-91a6-4f0b-b12a-cb7aa6fd6298", + "savedPayload": { + "position": { + "x": 16831.19169900439, + "y": 8913.882533105527 + }, + "targetPosition": { + "x": 16818.977770971313, + "y": 9213.633796592443 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "On-Balance-Volume NegSpan", + "config": "{\n \"codeName\": \"NegSpan\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.NegSpan", + "project": "Foundations", + "id": "09e59def-6793-4b85-85a8-7bfb561bc309", + "savedPayload": { + "position": { + "x": 17396.687178445773, + "y": 9051.609599277643 + }, + "targetPosition": { + "x": 17107.832474708543, + "y": 9132.621697935043 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": {} + } + }, + "id": "60620944-6e26-483e-a6ab-9d8f316538f6", + "savedPayload": { + "position": { + "x": 17107.832474708543, + "y": 9132.621697935043 + }, + "targetPosition": { + "x": 16818.977770971313, + "y": 9213.633796592443 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "03e85494-c109-4cb4-8df9-f4b3b5ec62b5", + "savedPayload": { + "position": { + "x": 16818.977770971313, + "y": 9213.633796592443 + }, + "targetPosition": { + "x": 16985.285867658124, + "y": 9463.316829609126 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "dataBuilding": { + "type": "Data Building Procedure", + "name": "New Data Building Procedure", + "project": "Foundations", + "loop": { + "type": "Procedure Loop", + "name": "New Procedure Loop", + "project": "Foundations", + "procedureJavascriptCode": { + "type": "Procedure Javascript Code", + "name": "New Procedure Javascript Code", + "code": "/* Loop Code */\n\nlet candle = record.current\nlet volume = getElement('volumes', candle)\nlet K = 2\nlet Len = 10 //number of period for integral calculation\nlet Len3 = 3\nlet Len5 = 5\nlet Len15 = 15\nlet Len20 = 20\n\nvariable.CDL = candle.close\n\nif (variable.previousVEma20 === undefined) {\nvariable.previousVEma20 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma3 === undefined) {\nvariable.previousVEma3 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma5 === undefined) {\nvariable.previousVEma5 = volume.buy + volume.sell\n}\n\nif (variable.previousVEma10 === undefined) {\nvariable.previousVEma10 = volume.buy + volume.sell\n}\n\n//build candle close array\nvariable.candleClose.push(candle.close)\n\n//keep the array to the right size\nif (variable.candleClose.length > K) {\n variable.candleClose.splice(0, 1)\n}\n\n//manage Previous On balance value\n\nif (variable.previousOnBV === undefined) {\n\tvariable.previousOnBV = 0\n}\n\n//procedure for OBV calculation\nif (variable.candleClose[1] > variable.candleClose[0]) {\n\tvariable.OnBV = variable.previousOnBV + volume.buy + volume.sell\n\t}\n\nif (variable.candleClose[1] === variable.candleClose[0]) {\n\tvariable.OnBV = variable.previousOnBV\n\t}\nif (variable.candleClose[1] < variable.candleClose[0]) {\n\tvariable.OnBV = variable.previousOnBV - (volume.buy + volume.sell)\n\t}\n\n//manage NaN and undefined\nif (variable.OnBV === undefined || isNaN(variable.OnBV)) {\n\tvariable.OBV = 0\n\tvariable.previousOnBV = 0\n}\nelse {\n\tvariable.OBV = variable.OnBV\n\tvariable.previousOnBV = variable.OnBV\n}\n\n// Calculate On balance Volume EMA3\nvariable.VEma3 = calculateVEMA(3, variable.OBV, variable.previousVEma3)\nvariable.previousVEma3 = variable.VEma3\n\n// Calculate On balance Volume EMA5\nvariable.VEma5 = calculateVEMA(5, variable.OBV, variable.previousVEma5)\nvariable.previousVEma5 = variable.VEma5\n\n// Calculate On balance Volume EMA10\nvariable.VEma10 = calculateVEMA(10, variable.OBV, variable.previousVEma10)\nvariable.previousVEma10 = variable.VEma10\n\n// Calculate On balance Volume EMA20\nvariable.VEma20 = calculateVEMA(20, variable.OBV, variable.previousVEma20)\nvariable.previousVEma20 = variable.VEma20\n\nif(variable.VEma3 > variable.previousVEma3) {\n\tvariable.IntVEma3 = (variable.VEma3 - variable.previousVEma3)/2 + variable.previousVEma3\n}\nif(variable.VEma3 < variable.previousVEma3) {\n\tvariable.IntVEma3 = (variable.previousVEma3 - variable.VEma3)/2 + variable.VEma3\n}\nif(variable.VEma3 = variable.previousVEma3){\n\tvariable.IntVEma3 = variable.VEma3 * 2\n}\nif(variable.VEma20 > variable.previousVEma20) {\n\tvariable.IntVEma20 = (variable.VEma20 - variable.previousVEma20)/2 + variable.previousVEma20\n}\nif(variable.VEma20 < variable.previousVEma20) {\n\tvariable.IntVEma20 = (variable.previousVEma20 - variable.VEma20)/2 + variable.VEma20\n}\nif(variable.VEma20 = variable.previousVEma20){\n\tvariable.IntVEma20 = variable.VEma20 * 2\n}\n\nif(variable.Pos === undefined){\n\tvariable.Pos = 0\n}\nif(variable.Neg === undefined){\n\tvariable.Neg = 0\n}\nif(variable.VEma3 > variable.VEma20 && variable.previousVEma3 < variable.previousVEma20){\n\tvariable.IntP = []\n\tvariable.Pos = 0\n}\nif(variable.VEma3 > variable.VEma20){\n\t\n\tvariable.IntP.push(variable.IntVEma3 - variable.IntVEma20)\n\tfor (var i =0 ; i variable.previousVEma20){\n\tvariable.IntN = []\n\tvariable.Neg = 0\n}\nif(variable.VEma3 < variable.VEma20){\n\t\n\tvariable.IntN.push(variable.IntVEma20 - variable.IntVEma3)\n\tfor (var i =0 ; i/**" ], - "program": "${workspaceFolder}\\Task.js" + "program": "/home/pi/Superalgos/TaskServer\Task.js" } ] } \ No newline at end of file