From fc6495c51ebecfffe6489d09cf7f55d2e14fc139 Mon Sep 17 00:00:00 2001 From: NicN11 Date: Thu, 4 Nov 2021 06:54:15 +0100 Subject: [PATCH 01/39] User Profile NicN11 --- .../Plugins/User-Profiles/NicN11.json | 619 ++++++++++++++++++ 1 file changed, 619 insertions(+) create mode 100644 Projects/Governance/Plugins/User-Profiles/NicN11.json diff --git a/Projects/Governance/Plugins/User-Profiles/NicN11.json b/Projects/Governance/Plugins/User-Profiles/NicN11.json new file mode 100644 index 000000000..e13f05e99 --- /dev/null +++ b/Projects/Governance/Plugins/User-Profiles/NicN11.json @@ -0,0 +1,619 @@ +{ + "type": "User Profile", + "name": "NicN11", + "config": "{\n \"signature\": {\n \"message\": \"NicN11\",\n \"messageHash\": \"0xbe81c46b57813a4af2ef951d99fd2ffdd6ab837969858823e9b6a435c47a2b80\",\n \"v\": \"0x1c\",\n \"r\": \"0xacb71eb8660969cd5780e643dd2cb7ad487f02310cf74c0d846458fa50db08ad\",\n \"s\": \"0x48bc5b861a9cf201b71783c6e733b79e891ae7ddccab517ce847b0bb6dba1ff7\",\n \"signature\": \"0xacb71eb8660969cd5780e643dd2cb7ad487f02310cf74c0d846458fa50db08ad48bc5b861a9cf201b71783c6e733b79e891ae7ddccab517ce847b0bb6dba1ff71c\"\n }\n}", + "project": "Governance", + "tokenPowerSwitch": { + "type": "Token Power Switch", + "name": "New Token Power Switch", + "config": "{}", + "project": "Governance", + "tokenPowerSwitch": [], + "onboardingPrograms": { + "type": "Onboarding Programs", + "name": "New Onboarding Programs", + "config": "{\n \"percentage\": 0\n }", + "project": "Governance", + "airdropProgram": { + "type": "Airdrop Program", + "name": "New Airdrop Program", + "config": "{}", + "project": "Governance", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "f4759d7d-623b-473f-a13c-816c12da6cab", + "savedPayload": { + "position": { + "x": 13849.000000000002, + "y": 4980.635444127544 + }, + "targetPosition": { + "x": 13999.000000000002, + "y": 5240.443065262876 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "1ec894c7-711b-4403-b2c0-8484f1409908", + "savedPayload": { + "position": { + "x": 13999.000000000002, + "y": 5240.443065262876 + }, + "targetPosition": { + "x": 14149.000000000002, + "y": 5500.250686398208 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "githubProgram": { + "type": "Github Program", + "name": "New Github Program", + "config": "{}", + "project": "Governance", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "e47b6ce4-d49e-40ad-8f90-c030c66b4fae", + "savedPayload": { + "position": { + "x": 14749.000000000002, + "y": 5500.250686398208 + }, + "targetPosition": { + "x": 14449.000000000002, + "y": 5500.250686398208 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "9faf08f2-9e5b-43d9-a4f0-f6fd75e8fd23", + "savedPayload": { + "position": { + "x": 14449.000000000002, + "y": 5500.250686398208 + }, + "targetPosition": { + "x": 14149.000000000002, + "y": 5500.250686398208 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "6824ec14-68ad-40c6-90b3-d29d0f5a9d17", + "savedPayload": { + "position": { + "x": 14149.000000000002, + "y": 5500.250686398208 + }, + "targetPosition": { + "x": 13999.000000000002, + "y": 5760.05830753354 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "communityBuildingPrograms": { + "type": "Community Building Programs", + "name": "New Community Building Programs", + "config": "{\n \"percentage\": 100\n }", + "project": "Governance", + "referralProgram": { + "type": "Referral Program", + "name": "New Referral Program", + "config": "{}", + "project": "Governance", + "userReferrers": [ + { + "type": "User Referrer", + "name": "Julian-Molina", + "config": "{}", + "project": "Governance", + "id": "3ef87fef-4090-4a05-95bf-4e7f0a75df5e", + "savedPayload": { + "position": { + "x": 14258.807621135333, + "y": 5610.05830753354 + }, + "targetPosition": { + "x": 14408.807621135333, + "y": 5869.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "User Profile", + "name": "Julian-Molina", + "id": "b85aaac1-0708-4aec-97f9-bc3cc70e530a" + }, + "referenceParentCombinedNodePath": [ + [ + "Julian-Molina", + "User Profile" + ] + ] + } + } + ], + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "6e420922-482e-4e86-be7e-ca5ea9766b2e", + "savedPayload": { + "position": { + "x": 14668.615242270664, + "y": 5719.865928668872 + }, + "targetPosition": { + "x": 14408.807621135333, + "y": 5869.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensBonus": { + "type": "Tokens Bonus", + "name": "New Tokens Bonus", + "project": "Governance", + "id": "8e2bf5f7-8028-4ca5-97ac-c781d84703d2", + "savedPayload": { + "position": { + "x": 14558.807621135333, + "y": 6129.6735498042035 + }, + "targetPosition": { + "x": 14408.807621135333, + "y": 5869.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "b325c52b-f905-439d-b0b9-ea3077c9723e", + "savedPayload": { + "position": { + "x": 14408.807621135333, + "y": 5869.865928668872 + }, + "targetPosition": { + "x": 14149.000000000002, + "y": 6019.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "supportProgram": { + "type": "Support Program", + "name": "New Support Program", + "config": "{}", + "project": "Governance", + "userSupporters": [ + { + "type": "User Supporter", + "name": "superharoun", + "config": "{}", + "project": "Governance", + "id": "ba86447f-73c2-4c79-a436-75db25aec088", + "savedPayload": { + "position": { + "x": 14558.807621135333, + "y": 6129.6735498042035 + }, + "targetPosition": { + "x": 14299.000000000002, + "y": 6279.6735498042035 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "User Profile", + "name": "superharoun", + "id": "47c64eac-831d-4277-b9ce-4bd3d7e803c1" + }, + "referenceParentCombinedNodePath": [ + [ + "superharoun", + "User Profile" + ] + ] + } + } + ], + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "4751c55b-18ef-42d9-bff4-d2b431b3d6f4", + "savedPayload": { + "position": { + "x": 14449.000000000002, + "y": 6539.481170939535 + }, + "targetPosition": { + "x": 14299.000000000002, + "y": 6279.6735498042035 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensBonus": { + "type": "Tokens Bonus", + "name": "New Tokens Bonus", + "project": "Governance", + "id": "e77dcdd8-f3e0-48dd-8a98-58123ca82956", + "savedPayload": { + "position": { + "x": 14039.19237886467, + "y": 6429.6735498042035 + }, + "targetPosition": { + "x": 14299.000000000002, + "y": 6279.6735498042035 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "1d566e0c-97f7-4f13-bf42-a443ed4c6d5b", + "savedPayload": { + "position": { + "x": 14299.000000000002, + "y": 6279.6735498042035 + }, + "targetPosition": { + "x": 14149.000000000002, + "y": 6019.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "mentorshipProgram": { + "type": "Mentorship Program", + "name": "New Mentorship Program", + "config": "{}", + "project": "Governance", + "userMentors": [ + { + "type": "User Mentor", + "name": "PLuv", + "config": "{}", + "project": "Governance", + "id": "9aea636c-0631-4503-a672-5d3dbed2b72f", + "savedPayload": { + "position": { + "x": 14039.19237886467, + "y": 6429.6735498042035 + }, + "targetPosition": { + "x": 13889.19237886467, + "y": 6169.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "User Profile", + "name": "PLuv", + "id": "142f5de2-3762-4f55-a839-22eac5c03c8f" + }, + "referenceParentCombinedNodePath": [ + [ + "PLuv", + "User Profile" + ] + ] + } + } + ], + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "9cbfca12-3709-4142-bf8a-60d84eed4cb0", + "savedPayload": { + "position": { + "x": 13629.38475772934, + "y": 6319.865928668872 + }, + "targetPosition": { + "x": 13889.19237886467, + "y": 6169.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensBonus": { + "type": "Tokens Bonus", + "name": "New Tokens Bonus", + "project": "Governance", + "id": "6ab334c1-a43a-43a5-afb4-020ebb8d0440", + "savedPayload": { + "position": { + "x": 13739.19237886467, + "y": 5910.05830753354 + }, + "targetPosition": { + "x": 13889.19237886467, + "y": 6169.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "69f4697d-30b2-4ee5-b249-231861808465", + "savedPayload": { + "position": { + "x": 13889.19237886467, + "y": 6169.865928668872 + }, + "targetPosition": { + "x": 14149.000000000002, + "y": 6019.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "b728c0b7-7c85-4231-9aef-85d9935a31f0", + "savedPayload": { + "position": { + "x": 14149.000000000002, + "y": 6019.865928668872 + }, + "targetPosition": { + "x": 13999.000000000002, + "y": 5760.05830753354 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "61c1d6e1-6a04-44ed-9ffd-eec1c0c05627", + "savedPayload": { + "position": { + "x": 13999.000000000002, + "y": 5760.05830753354 + }, + "targetPosition": { + "x": 13699.000000000002, + "y": 5760.05830753354 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensMined": { + "type": "Tokens Mined", + "name": "New Tokens Mined", + "project": "Governance", + "id": "05c466c2-ab8f-4186-94d7-1e35d5755e71", + "savedPayload": { + "position": { + "x": 13399.000000000002, + "y": 5760.05830753354 + }, + "targetPosition": { + "x": 13699.000000000002, + "y": 5760.05830753354 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "a884f5c0-2ffb-4a31-8edc-349430071fbe", + "savedPayload": { + "position": { + "x": 13699.000000000002, + "y": 5760.05830753354 + }, + "targetPosition": { + "x": 13699.000000000002, + "y": 5760.05830753354 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } +} \ No newline at end of file From 57a23234e4ba84e0fcfb639dbdff77bd8600573b Mon Sep 17 00:00:00 2001 From: NicN11 Date: Thu, 4 Nov 2021 07:23:50 +0100 Subject: [PATCH 02/39] User Profile NicN11 --- .../Governance/Plugins/User-Profiles/NicN11.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Projects/Governance/Plugins/User-Profiles/NicN11.json b/Projects/Governance/Plugins/User-Profiles/NicN11.json index e13f05e99..e5c4599c2 100644 --- a/Projects/Governance/Plugins/User-Profiles/NicN11.json +++ b/Projects/Governance/Plugins/User-Profiles/NicN11.json @@ -597,17 +597,17 @@ "id": "a884f5c0-2ffb-4a31-8edc-349430071fbe", "savedPayload": { "position": { - "x": 13699.000000000002, - "y": 5760.05830753354 + "x": 48529.647058823524, + "y": 38002 }, "targetPosition": { - "x": 13699.000000000002, - "y": 5760.05830753354 + "x": 48529.647058823524, + "y": 38002 }, "floatingObject": { - "isPinned": false, + "isPinned": true, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 From ea5c24cd6c03f5c086f2a00d94576893b4aabc4a Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Thu, 4 Nov 2021 12:06:22 +0300 Subject: [PATCH 03/39] Welcome To Superalgos 025-032 --- ...25-tutorial-step-hungry-for-more-info.json | 38 +++++++++++++++++- ...gos-026-tutorial-step-broke-something.json | 32 +++++++++++++-- ...gos-027-tutorial-step-more-workspaces.json | 32 +++++++++++++-- ...os-028-tutorial-step-ok.-back-to-work.json | 40 ++++++++++++++++--- ...tutorial-step-the-magic-of-data-mines.json | 24 +++++++++-- ...orial-step-at-the-core-of-data-mining.json | 32 +++++++++++++-- ...s-031-tutorial-step-are-we-up-to-date.json | 32 +++++++++++++-- ...ralgos-032-tutorial-step-time-to-stop.json | 25 ++++++++++++ 8 files changed, 230 insertions(+), 25 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-025-tutorial-step-hungry-for-more-info.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-025-tutorial-step-hungry-for-more-info.json index 0af311ba2..ad3a39efa 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-025-tutorial-step-hungry-for-more-info.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-025-tutorial-step-hungry-for-more-info.json @@ -38,6 +38,11 @@ "text": "Я не буду вдаваться в подробности по мере продвижения, но если Вам нужна дополнительная информауия об узле, кнопка Help в меню приведет Вас прямо к его документации.", "updated": 1635613175051, "style": "Definition" + }, + { + "language": "TR", + "text": "Devam ederken her ayrıntıya girmeyeceğim, ancak bir düğüm hakkında daha fazla bilgiye ihtiyacınız varsa, menüdeki yardım düğmesi (Düğümü geniletiğinizde görebilirsiniz) sizi doğrudan belgelerine götürür.", + "updated": 1636012819082 } ] }, @@ -75,6 +80,11 @@ "text": "Документация узла модет включать один или несколько из следующих разделов:", "updated": 1635613205233, "style": "Text" + }, + { + "language": "TR", + "text": "Bir düğümün dokümantasyonu aşağıdaki bölümlerden bir veya daha fazlasını içerebilir:", + "updated": 1636012836829 } ] }, @@ -111,6 +121,11 @@ "text": "Difinition: описывает, что представляет собой узел и его функции.", "updated": 1635613299355, "style": "List" + }, + { + "language": "TR", + "text": "Tanım (Definition): düğümün ne olduğunu veya ne yaptığını açıklar.", + "updated": 1636012877511 } ] }, @@ -147,6 +162,11 @@ "text": "Content: описывает, как работает узел.", "updated": 1635613497534, "style": "List" + }, + { + "language": "TR", + "text": "İçerik (Content): düğümün nasıl çalıştığını açıklar.", + "updated": 1636012909187 } ] }, @@ -184,6 +204,11 @@ "text": "Configuration: некоторые узлы могут иметь один узел.", "updated": 1635613523569, "style": "List" + }, + { + "language": "TR", + "text": "Yapılandırma (Configuration): bazı düğümlerde bir tane olabilir.", + "updated": 1636012944710 } ] }, @@ -221,6 +246,11 @@ "text": "Technical: основная информация обычно носит технический характер и ориентирована на разработчиков.", "updated": 1635613576536, "style": "List" + }, + { + "language": "TR", + "text": "Teknik (Technical): Bilginin geri kalanı genellikle geliştiricilere yönelik teknik niteliktedir.", + "updated": 1636012987852 } ] }, @@ -255,7 +285,13 @@ { "language": "RU", "text": "Нажмите кнопку на узле Data Tasks!", - "updated": 1635627454333 + "updated": 1635627454333, + "style": "Callout" + }, + { + "language": "TR", + "text": "Veri Görevleri ( Data Tasks ) düğümündeki yardım düğmesine tıklayın!", + "updated": 1636013020909 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json index e03c98c3f..09623d317 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json @@ -36,7 +36,13 @@ { "language": "RU", "text": "Если Вы когда-нибудь что-то нарушили, например, удалили узел или изменили конфигурацию и не знаете, как дальше действовать...", - "updated": 1635627557596 + "updated": 1635627557596, + "style": "Definition" + }, + { + "language": "TR", + "text": "Bir düğümü silmek veya bir konfigürasyonu değiştirmek gibi bir şeyi bozarsanız ve sonuçla nasıl başa çıkacağınızı bilmiyorsanız...", + "updated": 1636013094366 } ] }, @@ -72,7 +78,13 @@ { "language": "RU", "text": "... Вы можете легко начать все сначала с исходного рабочего пространства Getting Started Tutorials Plugin Workspace!", - "updated": 1635628049167 + "updated": 1635628049167, + "style": "Callout" + }, + { + "language": "TR", + "text": "... orijinal Getting Started Tutorials Plugin Workspace! ile kolayca baştan başlayabilirsiniz!...", + "updated": 1636013152834 } ], "updated": 1622196973760 @@ -108,7 +120,13 @@ { "language": "RU", "text": "В таком случае просто потяните вкладку с левой стороны, прокрутите, найдите плагин Getting Started Tutorials и нажмите на него! Загрузится исходный Plugin Workspace и учебное пособие появится снова, с самого начала!", - "updated": 1635629001422 + "updated": 1635629001422, + "style": "Text" + }, + { + "language": "TR", + "text": "Böyle bir durumda, sol taraftaki sekmeyi çekin, kaydırın, Getting Started Tutorials Plugin'i bulun ve tıklayın! Orijinal Eklenti Çalışma Alanı ( Plugin Workspace ) yüklenecek ve öğretici, baştan yeni bir şekilde yeniden görünecek!", + "updated": 1636013239148 } ], "updated": 1622634394712 @@ -133,7 +151,13 @@ { "language": "RU", "text": "Plugin Workspaces поставляются вместе с системой. Давайте посмотрим, как вы можете сделать их своими собственными или создать новые рабочие пространства!", - "updated": 1635629610043 + "updated": 1635629610043, + "style": "Success" + }, + { + "language": "TR", + "text": "Eklenti Çalışma Alanları ( Plugin Workspaces ) sistemle birlikte gönderilir. Şimdi bunları nasıl kendinize ait hale getirebileceğinizi veya yeni çalışma alanları oluşturabileceğinizi görelim!", + "updated": 1636013279897 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json index cb9b86faa..0f9b9c7f1 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Plugin Workspaces, die mit dem System ausgeliefert werden, haben einen schwarzen Hintergrund in der Registerkarte Workspaces auf der linken Seite.", - "updated": 1634167337552 + "updated": 1634167337552, + "style": "Definition" + }, + { + "language": "TR", + "text": "Sistemle birlikte gönderilen Eklenti Çalışma Alanları ( Plugin Workspaces ), soldaki Çalışma Alanları (Workspaces) Sekmesinde siyah bir arka plana sahiptir. ", + "updated": 1636013396906 } ], "updated": 1629803469668 @@ -62,7 +68,13 @@ { "language": "DE", "text": "Workspaces speichern alle Informationen zu den Datenstrukturen, die im Arbeitsbereich enthalten sind.", - "updated": 1634167346842 + "updated": 1634167346842, + "style": "Text" + }, + { + "language": "TR", + "text": "Çalışma alanları ( Workspaces ), çalışma alanına dahil edilen veri yapılarına ilişkin tüm bilgileri kaydeder.", + "updated": 1636013436668 } ] }, @@ -80,7 +92,13 @@ { "language": "DE", "text": "Erstellen Sie eine Kopie dieses Plugin Workspace um ihn zu Ihrem eigenen zu machen! Drücken Sie dazu: Ctrl + Shift + Key-S", - "updated": 1634167512053 + "updated": 1634167512053, + "style": "Callout" + }, + { + "language": "TR", + "text": "Gelin bu Plugin Workspace'in bir kopyasını oluşturalım ve sizin için yapalım! Aşağıdaki tuş kombinasyonuna basın: Ctrl + Shift + Key-S", + "updated": 1636013459404 } ] }, @@ -109,7 +127,13 @@ { "language": "DE", "text": "Öffnen Sie nun die Registerkarte Workspaces auf der linken Seite, scrollen Sie ganz nach unten und suchen Sie den einzigen Workspace mit einem lila Hintergrund! Das ist Ihr Arbeitsbereich! Sie brauchen ihn aber nicht anzuklicken!", - "updated": 1634167411161 + "updated": 1634167411161, + "style": "Important" + }, + { + "language": "TR", + "text": "Şimdi soldaki Çalışma Alanları Sekmesini açın, aşağı kaydırın ve mor arka plana sahip tek çalışma alanını bulun! Bu sizin çalışma alanınız! Ama üzerine tıklamanıza gerek yok!", + "updated": 1636013495006 } ], "updated": 1629803460646 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-028-tutorial-step-ok.-back-to-work.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-028-tutorial-step-ok.-back-to-work.json index 8270eb531..956c81e30 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-028-tutorial-step-ok.-back-to-work.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-028-tutorial-step-ok.-back-to-work.json @@ -36,7 +36,13 @@ { "language": "RU", "text": "Теперь, когда Вам удобно передвигаться, я хочу, чтобы Вы отправились в небольшую экскурсию по Network Node раздела Data Tasks.", - "updated": 1635630043831 + "updated": 1635630043831, + "style": "Definition" + }, + { + "language": "TR", + "text": "Artık rahatça dolaşabildiğinize göre, Ağ Düğümü'nün ( Network Node ) Veri Görevleri ( Data Tasks ) bölümünü keşfetmek için küçük bir tura çıkmanızı istiyorum.", + "updated": 1636014280941 } ], "updated": 1622194034630 @@ -73,7 +79,13 @@ { "language": "RU", "text": "Обратите внимание на следующее:", - "updated": 1635630070775 + "updated": 1635630070775, + "style": "Text" + }, + { + "language": "TR", + "text": "Aşağıdakilere dikkat edin:", + "updated": 1636014296432 } ] }, @@ -108,7 +120,13 @@ { "language": "RU", "text": "Раздел делится, в первую очередь, на проекты, биржи и рынки. Он поможет Вам организованно работать со множеством бирж и рынков.", - "updated": 1635630220075 + "updated": 1635630220075, + "style": "List" + }, + { + "language": "TR", + "text": "Bölüm, her şeyden önce proje, borsa ve pazara göre düzenlenmiştir. Bu, birden fazla borsa ve birden fazla pazarla düzenli bir şekilde çalışmanıza yardımcı olacaktır.", + "updated": 1636014356317 } ] }, @@ -143,7 +161,13 @@ { "language": "RU", "text": "Узлы Exchange Data Tasks и Мarket Data Tasks могут управлять всеми задачами на бирже и рынке соответственно.", - "updated": 1635630313880 + "updated": 1635630313880, + "style": "List" + }, + { + "language": "TR", + "text": "Borsa Veri Görevleri ( Exchance Data Tasks ) ve Piyasa Veri Görevleri ( Market Data Tasks ) düğümleri, sırasıyla borsadaki ve pazardaki tüm görevleri kontrol edebilir.", + "updated": 1636014775744 } ] }, @@ -178,7 +202,13 @@ { "language": "RU", "text": "Выйдите и проверьте эти узлы и их меню!", - "updated": 1635630414259 + "updated": 1635630414259, + "style": "Callout" + }, + { + "language": "TR", + "text": "Şimdi bu düğümleri ve menülerini kontrol edin!", + "updated": 1636014827396 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json index ff08a47e0..46bb617b5 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Innerhalb jedes Marktes ist die Operation nach Data Mine organisiert. Superalgos wird mit mehreren quelloffenen Data Mines ausgeliefert, die jeweils mehrere Indikatoren enthalten.", - "updated": 1634168232166 + "updated": 1634168232166, + "style": "Definition" + }, + { + "language": "TR", + "text": "Her pazarda, operasyon Data Mine tarafından organize edilir. Superalgos, her biri birden fazla göstergeye sahip birkaç açık kaynaklı veri madeni ile birlikte gelir.", + "updated": 1636014963314 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Betrachten Sie Data Mines als Plugins, die Entwickler erstellen können, um die Datenanalysekapazität des Systems zu erweitern. Ein Indicator Bot kann Daten verarbeiten, die von anderen Indikatoren erzeugt werden, und so einen Mehrwert und eine tiefere und reichhaltigere Analyse liefern.", - "updated": 1634168218271 + "updated": 1634168218271, + "style": "Text" + }, + { + "language": "TR", + "text": "Veri madenlerini, geliştiricilerin sistemin veri analiz kapasitesini genişletmek için oluşturabilecekleri eklentiler olarak düşünün. Bir Gösterge Botu ( Indicator Bot ), diğer göstergelerin ürettiği verileri işleyebilir, dolayısıyla değer katabilir ve daha derin ve daha zengin analizler üretebilir.", + "updated": 1636015012141 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Wenn Sie ein Grundverständnis von JavaScript haben, können Sie auch Indikatoren erstellen! Wenn Sie eine Data Mine beitragen, verdienen Sie Superalgos SA Tokens!", - "updated": 1634168241958 + "updated": 1634168241958, + "style": "Callout" + }, + { + "language": "TR", + "text": "Temel bir JavaScript bilginiz varsa, göstergeler de oluşturabilirsiniz! Bir Veri Madenine ( Data Mine ) katkıda bulunursanız, Superalgos SA Jetonları kazanırsınız!", + "updated": 1636015059999 } ], "updated": 1622196189467 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json index e7f38a7b9..7a392b158 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Das Herzstück einer Data-Mining-Operation sind Tasks, die Bots ausführen. Ein Task steuert einen Bot, und ein Task Manager kann mehrere Tasks steuern.", - "updated": 1634168469674 + "updated": 1634168469674, + "style": "Definition" + }, + { + "language": "TR", + "text": "Bir veri madenciliği operasyonunun özü, bot çalıştıran görevlerdir. Bir Görev, bir botu kontrol eder ve bir Görev Yöneticisi ( Tasks Manager ) birden fazla görevi kontrol edebilir.", + "updated": 1636015403690 } ] }, @@ -61,7 +67,13 @@ { "language": "DE", "text": "Inzwischen haben Sie sechs verschiedene Geräte kennengelernt, die Sie zur Steuerung der einzelnen Bots in Ihrem Data Mining-Vorgang verwenden können. Auf der höchsten Ebene steuert der Knoten Data Tasks alle Data-Mining-Bots im Netzwerkknoten.", - "updated": 1634168489908 + "updated": 1634168489908, + "style": "Text" + }, + { + "language": "TR", + "text": "Şimdiye kadar, veri madenciliği operasyonunuzdaki her bir botu kontrol etmek için kullanabileceğiniz altı farklı cihaz hakkında bilgi edindiniz. En üst düzeyde, Veri Görevleri (Data Tasks) düğümü, Ağ Düğümü'ndeki (Network Node) tüm veri madenciliği botlarını kontrol eder.", + "updated": 1636015350802 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Wir werden in einer Minute über Netzwerkknoten sprechen...", - "updated": 1634168496945 + "updated": 1634168496945, + "style": "Callout" + }, + { + "language": "TR", + "text": "Ağ düğümleri hakkında birazdan konuşacağız...", + "updated": 1636015240381 } ] }, @@ -120,7 +138,13 @@ { "language": "DE", "text": "Auf der untersten Ebene steuert ein einzelner Task einen einzelnen Bot. Die Knoten dazwischen sind Organisationsknoten, die für Ordnung sorgen und eine detaillierte Kontrolle über die verschiedenen Bereiche ermöglichen.", - "updated": 1634168505425 + "updated": 1634168505425, + "style": "Text" + }, + { + "language": "TR", + "text": "En alt düzeyde, tek bir Görev (Task), tek bir botu kontrol eder. Aradaki düğümler, işlemi düzenli tutmaya yardımcı olan ve farklı bölümler üzerinde ayrıntılı kontrole izin veren organizasyon düğümleridir.", + "updated": 1636015306156 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json index f1677ea83..b700454ef 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Inzwischen sollten alle Prozesse zu 100 % laufen. Wenn dies der Fall ist, bezeichnen wir die Data-Mining-Operation als \"up to date\".", - "updated": 1634170269450 + "updated": 1634170269450, + "style": "Definition" + }, + { + "language": "TR", + "text": "Şu anda , tüm işlemler %100 olmalıdır. Bu olduğunda, veri madenciliği operasyonuna \"güncel\" diyoruz.", + "updated": 1636015455848 } ], "updated": 1616415623576 @@ -61,7 +67,13 @@ { "language": "DE", "text": "Wenn alle Prozesse auf dem neuesten Stand sind, laufen die Bots weiter und verarbeiten Informationen in Echtzeit, während sie an der Börse produziert werden. Das heißt, die Data-Mining-Operation stoppt nur, wenn Sie sie stoppen!", - "updated": 1634170281567 + "updated": 1634170281567, + "style": "Text" + }, + { + "language": "TR", + "text": "Tüm süreçler güncel olduğunda, botlar çalışmaya devam eder ve bilgiyi borsada üretildiği gibi gerçek zamanlı olarak işler. Yani, siz durdurmadığınız sürece veri madenciliği işlemi durmaz!", + "updated": 1636015476681 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Schauen Sie sich um und prüfen Sie, ob alle Prozesse zu 100% laufen.", - "updated": 1634170288448 + "updated": 1634170288448, + "style": "Callout" + }, + { + "language": "TR", + "text": "Etrafınıza bakın ve tüm işlemlerin %100 olup olmadığını görün", + "updated": 1636015521214 } ] }, @@ -119,7 +137,13 @@ { "language": "DE", "text": "Um eine Live Trading Session durchzuführen, benötigen Sie eine ständige Zufuhr von Informationen von der Börse, die in Echtzeit verarbeitet werden, damit der Trading Bot die Regeln Ihres Trading System anwenden kann, um Live-Handelsentscheidungen zu treffen.", - "updated": 1634170296952 + "updated": 1634170296952, + "style": "Text" + }, + { + "language": "TR", + "text": "Canlı Alım Satım Oturumu ( Live Trading Session ) yürütmek için, Alım Satım Botunun ( Trading Bot ) canlı alım satım kararları vermek üzere Alım Satım Sisteminizin ( Trading System ) kurallarını uygulayabilmesi için, gerçek zamanlı olarak işlenen borsadan sürekli bir bilgi akışına ihtiyacınız vardır.", + "updated": 1636016072081 } ], "updated": 1616415667438 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json index 2af510240..e04da82b4 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json @@ -32,6 +32,11 @@ "text": "Da wir keine Live Trading Session durchführen, macht es grade keinen Sinn, das Data Mining zu diesem Zeitpunkt laufen zu lassen.", "updated": 1634170784986, "style": "Definition" + }, + { + "language": "TR", + "text": "Henüz bir Canlı İşlem Oturumu ( Live Trading Session ) düzenlemeyeceğiz, bu nedenle veri madenciliğimizi bu noktada çalışır durumda tutmanın bir anlamı yok.", + "updated": 1636016140799 } ] }, @@ -64,6 +69,11 @@ "text": "Es gibt zwei Anwendungsfälle für die Data Tasks:", "updated": 1634170835236, "style": "Text" + }, + { + "language": "TR", + "text": "Veri Görevlerini çalıştırmanın iki ana kullanım durumu vardır:", + "updated": 1636016174401 } ] }, @@ -95,6 +105,11 @@ "text": "Zur Verarbeitung historischer Daten: Sie möchten für einen bestimmten Zeitraum einen bestimmten Market verarbeiten, um eine Backtesting Session durchzuführen oder Indikatoren testen.", "updated": 1634208005120, "style": "List" + }, + { + "language": "TR", + "text": "Geçmiş verileri işlemek için: Bir Geriye Dönük Test Oturumu (Backtesting Sesion ) yürütmek veya yeni göstergeleri işlemek için belirli bir Piyasanın ( Market ) bir tarih saat aralığını işlemek isteyebilirsiniz.", + "updated": 1636016235514 } ] }, @@ -126,6 +141,11 @@ "text": "Eine Live-Sitzung durchführen: Die verschiedenen Arten von Live-Sitzungen, wie Paper Trading Session, Forward Testing Session und Live Trading Session, benötigen alle einen Live-Markt-Feed.", "updated": 1634208020007, "style": "List" + }, + { + "language": "TR", + "text": "Canlı bir oturum yürütmek için: Kağıt Alım Satım Oturumu (Paper Trading Session ), İleriye Yönelik Test Oturumu (Forward Testing Session ) ve Canlı Alım Satım Oturumu ( Live Trading Session ) gibi farklı türlerdeki oturumların tümü canlı bir piyasa akışına ihtiyaç duyar.", + "updated": 1636016605221 } ] }, @@ -156,6 +176,11 @@ "text": "Wenn alle Prozesse auf dem neuesten Stand sind, wählen Sie \"Stop All Tasks\" im Knoten Market Data Tasks. Beachten Sie, dass die Tasks auch von einem anderen Knoten aus gestoppt werden können als von dem aus, mit dem sie gestartet wurden!", "updated": 1634172843262, "style": "Callout" + }, + { + "language": "TR", + "text": "Tüm işlemler güncel olduğunda (%100), Piyasa Veri Görevleri ( Market Data Tasks ) düğümünde \"Stop All Tasks\" seçeneğini seçin. Ek bilgi olarak, görevleri başlattığımız düğümden farklı bir düğümden durdurabileceğimizi de unutmayın.", + "updated": 1636016732706 } ], "updated": 1622197433719 From 80f7ffaa8e17280ce68c906b112b155f9a726ff7 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 4 Nov 2021 12:03:58 +0100 Subject: [PATCH 04/39] p2p Network Node implemented --- Network/NetwokNode.js | 6 ++++ .../Network/NT/Modules/WebSocketsInterface.js | 2 +- Projects/Network/SA/Globals/Memory.js | 3 +- Projects/Network/SA/Modules/P2PNetwork.js | 35 +++++++++++++++++++ Projects/Network/SA/Modules/P2PNetworkNode.js | 29 +++++++++++++++ Projects/Network/SA/Modules/UserProfiles.js | 12 +++++-- Projects/ProjectsSchema.json | 12 +++++++ 7 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 Projects/Network/SA/Modules/P2PNetwork.js create mode 100644 Projects/Network/SA/Modules/P2PNetworkNode.js diff --git a/Network/NetwokNode.js b/Network/NetwokNode.js index 22a04fbdb..74ffc6326 100644 --- a/Network/NetwokNode.js +++ b/Network/NetwokNode.js @@ -3,6 +3,7 @@ exports.newNetworkNode = function newNetworkNode() { let thisObject = { socialGraphService: undefined, storage: undefined, + p2pMetwork: undefined, run: run } @@ -24,5 +25,10 @@ exports.newNetworkNode = function newNetworkNode() { */ thisObject.storage = NT.projects.socialTrading.modules.storage.newSocialTradingModulesStorage() thisObject.storage.initialize() + /* + We can join now the P2P Network as a new peer there. + */ + thisObject.p2pMetwork = SA.projects.network.modules.p2pMetwork.newNetworkModulesP2PNetwork() + await thisObject.p2pMetwork.initialize() } } diff --git a/Projects/Network/NT/Modules/WebSocketsInterface.js b/Projects/Network/NT/Modules/WebSocketsInterface.js index ebad1b2cc..4efcaef16 100644 --- a/Projects/Network/NT/Modules/WebSocketsInterface.js +++ b/Projects/Network/NT/Modules/WebSocketsInterface.js @@ -304,7 +304,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock /* The signature gives us the blockchain account, and the account the user profile. */ - let witnessUserProfile = SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOCHAIN_ACCOUNT.get(caller.blockchainAccount) + let witnessUserProfile = SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOKCHAIN_ACCOUNT.get(caller.blockchainAccount) if (witnessUserProfile === undefined) { let response = { diff --git a/Projects/Network/SA/Globals/Memory.js b/Projects/Network/SA/Globals/Memory.js index 7c86e1224..38cb701f4 100644 --- a/Projects/Network/SA/Globals/Memory.js +++ b/Projects/Network/SA/Globals/Memory.js @@ -6,9 +6,10 @@ exports.newNetworkGlobalsMemory = function () { maps: { USER_PROFILES_BY_ID: new Map(), // Here we will store the user profiles by User Profile Id. USER_PROFILES_BY_HANDLE: new Map(), // Here we will store the user profiles by User Profile Handle. - USER_PROFILES_BY_BLOCHAIN_ACCOUNT: new Map() // Here we will store the user profiles by Blockchain Account. + USER_PROFILES_BY_BLOKCHAIN_ACCOUNT: new Map() // Here we will store the user profiles by Blockchain Account. }, arrays: { + P2P_NETWORK_NODES: [] // Here we will store the p2p nodes deined under Signing Account node types. } } diff --git a/Projects/Network/SA/Modules/P2PNetwork.js b/Projects/Network/SA/Modules/P2PNetwork.js new file mode 100644 index 000000000..8006a6925 --- /dev/null +++ b/Projects/Network/SA/Modules/P2PNetwork.js @@ -0,0 +1,35 @@ +exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { + /* + This module represents the P2P Network and it is needed to enable the connection + of this current node to other peers. + */ + let thisObject = { + joinTheNetworkAsPeer: joinTheNetworkAsPeer, + /* Framework Functions */ + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + + } + + async function initialize() { + /* + We will setup here the maps and arryas we will need to operate within the P2P Network. + */ + let thisP2PNodeId = SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).signingAccountNodeId + for (let i = 0; i < SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.length; i++) { + let p2pNetworkNode = SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES[i] + + } + } + + function joinTheNetworkAsPeer() { + /* + To join the network we will need to thorugh the list of Network Nodes and pick one to connect to. + */ + } +} \ No newline at end of file diff --git a/Projects/Network/SA/Modules/P2PNetworkNode.js b/Projects/Network/SA/Modules/P2PNetworkNode.js new file mode 100644 index 000000000..a3a821653 --- /dev/null +++ b/Projects/Network/SA/Modules/P2PNetworkNode.js @@ -0,0 +1,29 @@ +exports.newNetworkModulesP2PNetworkNode = function newNetworkModulesP2PNetworkNode() { + /* + This module represents the P2P Network Node. + */ + let thisObject = { + + node: undefined, + userPofile: undefined, + + /* Framework Functions */ + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + thisObject.node = undefined + thisObject.userPofile = undefined + } + + async function initialize(node, userPofile) { + /* + We will setup here the maps and arryas we will need to operate within the P2P Network. + */ + thisObject.node = node + thisObject.userPofile = userPofile + } +} \ No newline at end of file diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index 346b0b604..746912e69 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -53,7 +53,7 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() SA.projects.network.globals.memory.maps.USER_PROFILES_BY_ID.set(userProfileId, userProfile) SA.projects.network.globals.memory.maps.USER_PROFILES_BY_HANDLE.set(userHandle, userProfile) - SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOCHAIN_ACCOUNT.set(blockchainAccount, userProfile) + SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOKCHAIN_ACCOUNT.set(blockchainAccount, userProfile) /* Each User Profile might have Signing Accounts, meaning accounts that can be siging on behalf of the User Profile. @@ -65,7 +65,15 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() let signatureObject = config.signature let web3 = new SA.nodeModules.web3() let blockchainAccount = web3.eth.accounts.recover(signatureObject) - SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOCHAIN_ACCOUNT.set(blockchainAccount, userProfile) + SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOKCHAIN_ACCOUNT.set(blockchainAccount, userProfile) + /* + If the Signing Account is for a P2P node, we will add the node to the array of available nodes at the p2p network. + */ + if (signingAccount.signingAccountChild.type === "P2P Network Node") { + p2pNetworkNode = SA.projects.network.modules.p2pMetworkNode.newNetworkModulesP2PNetworkNode() + p2pMetworkNode.initialize(signingAccount.signingAccountChild, userPofile) + SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.push(p2pNetworkNode) + } } } } diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 8952ce848..b281f405f 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1407,6 +1407,18 @@ "propertyName": "userProfiles", "functionName": "newNetworkModulesUserProfiles", "fileName": "UserProfiles.js" + }, + { + "name": "P2P Network", + "propertyName": "p2pNetwork", + "functionName": "newSocialTradingModulesP2PNetwork", + "fileName": "P2PNetwork.js" + }, + { + "name": "P2P Network Node", + "propertyName": "p2pNetworkNode", + "functionName": "newSocialTradingModulesP2PNetworkNode", + "fileName": "P2PNetworkNode.js" } ], "utilities": [ From 5ec3217e7ab4a5156ccb43d0e0b3f7a4c6dcc5ef Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 4 Nov 2021 12:21:08 +0100 Subject: [PATCH 05/39] User Profile fixed --- .../User-Profiles/Luis-Fernando-Molina.json | 416 +++++++++--------- .../Function-Libraries/ProfileConstructor.js | 1 + Projects/Network/SA/Modules/P2PNetwork.js | 7 +- 3 files changed, 214 insertions(+), 210 deletions(-) diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index fef469c82..8b9800284 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -127,12 +127,12 @@ "id": "f4d39b02-4324-438d-9f74-2bea2b7272ef", "savedPayload": { "position": { - "x": 4797.826086956522, - "y": 23340.192378864667 + "x": 33783.333333333336, + "y": 18540.192378864667 }, "targetPosition": { - "x": 4647.826086956522, - "y": 23600 + "x": 33633.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -516,12 +516,12 @@ "id": "b6e3c87d-a11b-4b2a-b6a6-edc96375f5da", "savedPayload": { "position": { - "x": 4907.633708091854, - "y": 23450 + "x": 33893.14095446867, + "y": 18650 }, "targetPosition": { - "x": 4647.826086956522, - "y": 23600 + "x": 33633.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -565,12 +565,12 @@ "id": "2571cea1-2b6d-40f5-9331-8786bf57c184", "savedPayload": { "position": { - "x": 5575.05716950933, - "y": 23082.57653858252 + "x": 34560.56441588615, + "y": 18282.57653858252 }, "targetPosition": { - "x": 5497.411455978574, - "y": 23372.354286469243 + "x": 34482.91870235539, + "y": 18572.354286469243 }, "floatingObject": { "isPinned": false, @@ -614,7 +614,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "Tentacule23 Project Contributor Smidy13 Tentacule23 Governance Project", + "name": "", "config": "{}", "project": "Governance", "id": "ab341408-2073-46aa-9390-2396bdebf79b", @@ -685,7 +685,7 @@ }, { "type": "Position Claim Vote", - "name": "Tentacule23 1 Project Contributor Tentacle23 Visual Scripting Project", + "name": "", "config": "{}", "project": "Governance", "id": "ac17837f-37f5-4c27-a1c4-c667afb5153c", @@ -859,7 +859,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "NAmorim Team Creator Nuno Distribution Team", + "name": "", "config": "{}", "project": "Governance", "id": "db023ba8-610f-44d8-a72d-62ea45610ef0", @@ -930,7 +930,7 @@ }, { "type": "Position Claim Vote", - "name": "NAmorim Team Member Superalgos Blog Team", + "name": "", "config": "{}", "project": "Governance", "id": "d584524b-e869-4ab1-92cc-5778e98220e2", @@ -1159,7 +1159,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "alexandrustefan Team Creator Alexandru Forum Team", + "name": "", "config": "{}", "project": "Governance", "id": "122bea90-803d-4d2b-9af0-46197571b24d", @@ -1300,7 +1300,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "alexandrustefan 3 Project Contributors Alexandru cozed-gh(Carl) Quantum8 PLuv Data Mining Project", + "name": "", "config": "{}", "project": "Governance", "id": "bf243dfe-b8f5-4d74-83a1-c54ec50fe5b9", @@ -1507,7 +1507,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "harrellbm Project Leader Harrell harrellbm Education Project", + "name": "", "config": "{}", "project": "Governance", "id": "e481a337-45e6-4107-8c0b-14f9d5210fe6", @@ -1666,7 +1666,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "harrellbm Team Creator Harrell harrellbm Docs Teams", + "name": "", "config": "{}", "project": "Governance", "id": "610fcdec-93ef-4451-a037-f3d4249a2a9e", @@ -1831,7 +1831,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "harrellbm Team Creator Harrell harrellbm Tutorials Team", + "name": "", "config": "{}", "project": "Governance", "id": "3d923532-2d84-457e-875b-ed0ad9bcd2f6", @@ -1996,7 +1996,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "harrellbm Team Creator Harrell harrellbm Translations Team", + "name": "", "config": "{}", "project": "Governance", "id": "4320a3b2-a698-426c-af85-fdb9e7e772df", @@ -2161,7 +2161,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "harrellbm Team Creator Harrell harrellbm Workspaces Team", + "name": "", "config": "{}", "project": "Governance", "id": "faa321ab-73a1-434d-bbec-f6d648d0b7a9", @@ -2396,7 +2396,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "harrellbm Team Creator Harrell harrellbm Setup Team", + "name": "", "config": "{}", "project": "Governance", "id": "58fb3da1-002b-4574-8155-4949dc269b9b", @@ -2549,7 +2549,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "harrellbm Team Member Superalgos Blog Team", + "name": "", "config": "{}", "project": "Governance", "id": "333f1c9a-1d3f-43f6-95af-7f8bacc4fb28", @@ -2784,7 +2784,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "ssplatt Project Leader Brett Ssplatt Social Bots Project", + "name": "", "config": "{}", "project": "Governance", "id": "5d6f2c60-849d-4d5e-b697-a1cbe47dccc7", @@ -3119,7 +3119,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "ssplatt Team Member Twitter Team", + "name": "", "config": "{}", "project": "Governance", "id": "36950249-4ad4-4f09-9580-7988cb60f1a1", @@ -3296,7 +3296,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "ssplatt Team Leader Brett Reddit Team", + "name": "", "config": "{}", "project": "Governance", "id": "0228c2bf-557e-4512-87b9-36318e534b4c", @@ -3555,7 +3555,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "ssplatt Team Creator Brett Brett Live Streaming and Videos Team", + "name": "", "config": "{}", "project": "Governance", "id": "9ffbaebf-d903-4985-b009-4e8f854e9606", @@ -3644,7 +3644,7 @@ }, { "type": "Position Claim Vote", - "name": "ssplatt Team Leader Brett Live Streaming and Videos Team", + "name": "", "config": "{}", "project": "Governance", "id": "12cf50a8-2f36-4068-a771-d8eb04a9270d", @@ -3733,7 +3733,7 @@ }, { "type": "Position Claim Vote", - "name": "ssplatt Team Member Brett Live Streaming and Videos Team", + "name": "", "config": "{}", "project": "Governance", "id": "3ecebb3b-c21b-4141-baed-2ce0d03cf3b2", @@ -4062,7 +4062,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "ssplatt Team Creator Brett Sys Admins Team", + "name": "", "config": "{}", "project": "Governance", "id": "96e4d32a-4e19-489b-82b9-f55ae19e4c21", @@ -4227,7 +4227,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "ssplatt Team Creator Brett Docker Team", + "name": "", "config": "{}", "project": "Governance", "id": "816e142a-a1e1-4a6a-8520-5fd143448a5b", @@ -4392,7 +4392,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "ssplatt Team Leader Brett Github Team", + "name": "", "config": "{}", "project": "Governance", "id": "5f54dfe8-51af-4356-92a3-f6cb3de62736", @@ -4691,7 +4691,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "Smidy13 Team Member Icons Team", + "name": "", "config": "{}", "project": "Governance", "id": "9c58e925-9027-4e87-bb74-d48fb1bc6640", @@ -4762,7 +4762,7 @@ }, { "type": "Position Claim Vote", - "name": "Smidy13 Project Contributor Smidy13 Tentacule23 Governance Project", + "name": "", "config": "{}", "project": "Governance", "id": "42afa59d-a9a1-4bac-8ff0-d005a97ee3a1", @@ -4972,7 +4972,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "Raplh2502 Team Member Superalgos Blog Team", + "name": "", "config": "{}", "project": "Governance", "id": "3fee7769-885c-47e3-b091-436499e09d3e", @@ -5043,7 +5043,7 @@ }, { "type": "Position Claim Vote", - "name": "Raplh2502 ", + "name": "", "config": "{}", "project": "Governance", "id": "26d27773-1c71-4363-a6b2-446d3d4e7495", @@ -5114,7 +5114,7 @@ }, { "type": "Position Claim Vote", - "name": "Raplh2502 Project Leader Thomas-Raplh2502 Data Mining Project", + "name": "", "config": "{}", "project": "Governance", "id": "5fee6b1e-3fe5-409b-806c-ecb1fa0cf7e2", @@ -5185,7 +5185,7 @@ }, { "type": "Position Claim Vote", - "name": "Raplh2502 1 Team Member Thomas-Raplh2502 Forum Team", + "name": "", "config": "{}", "project": "Governance", "id": "1267b7f2-aed2-4d4f-a69e-29ca5ad50a9f", @@ -5326,7 +5326,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "cozed-gh 3 Project Contributors Alexandru cozed-gh(Carl) Quantum8 PLuv Data Mining Project", + "name": "", "config": "{}", "project": "Governance", "id": "758285b2-8324-41f0-907a-3c45ad86fada", @@ -5462,7 +5462,7 @@ "positionClaimVotes": [ { "type": "Position Claim Vote", - "name": "PLuv 3 Project Contributors Alexandru cozed-gh(Carl) Quantum8 PLuv Data Mining Project", + "name": "", "config": "{}", "project": "Governance", "id": "b30458ee-4426-42db-a066-20755146ba49", @@ -5592,12 +5592,12 @@ "id": "75487f1d-1ec0-4431-8693-ce9653018e81", "savedPayload": { "position": { - "x": 5757.219077113906, - "y": 23222.354286469243 + "x": 34742.72632349072, + "y": 18422.354286469243 }, "targetPosition": { - "x": 5497.411455978574, - "y": 23372.354286469243 + "x": 34482.91870235539, + "y": 18572.354286469243 }, "floatingObject": { "isPinned": false, @@ -7689,12 +7689,12 @@ "id": "800e3388-1ea6-40ee-ace5-1811a3373e39", "savedPayload": { "position": { - "x": 5982.87542724873, - "y": 23222.608483056363 + "x": 34968.38267362554, + "y": 18422.608483056363 }, "targetPosition": { - "x": 5787.189203865294, - "y": 23450 + "x": 34772.69645024211, + "y": 18650 }, "floatingObject": { "isPinned": false, @@ -14945,12 +14945,12 @@ "id": "aa848510-1260-46ed-a855-6c0fb9dca9eb", "savedPayload": { "position": { - "x": 6062.157880626287, - "y": 23330.032392704077 + "x": 35047.66512700311, + "y": 18530.032392704077 }, "targetPosition": { - "x": 5787.189203865294, - "y": 23450 + "x": 34772.69645024211, + "y": 18650 }, "floatingObject": { "isPinned": false, @@ -15252,12 +15252,12 @@ "id": "12a12abf-c6f9-4a62-a21e-4442b2fbbada", "savedPayload": { "position": { - "x": 6086.979415301814, - "y": 23461.2173582829 + "x": 35072.48666167863, + "y": 18661.2173582829 }, "targetPosition": { - "x": 5787.189203865294, - "y": 23450 + "x": 34772.69645024211, + "y": 18650 }, "floatingObject": { "isPinned": false, @@ -15370,12 +15370,12 @@ "id": "f1ef36d6-3284-408b-9601-aa1bf4875c0a", "savedPayload": { "position": { - "x": 6052.423821916677, - "y": 23590.18058848192 + "x": 35037.931068293496, + "y": 18790.18058848192 }, "targetPosition": { - "x": 5787.189203865294, - "y": 23450 + "x": 34772.69645024211, + "y": 18650 }, "floatingObject": { "isPinned": false, @@ -15939,12 +15939,12 @@ "id": "4ece8c41-7a25-4514-9ff5-de3f609c7a00", "savedPayload": { "position": { - "x": 5965.335259537344, - "y": 23691.37933393 + "x": 34950.84250591416, + "y": 18891.37933393 }, "targetPosition": { - "x": 5787.189203865294, - "y": 23450 + "x": 34772.69645024211, + "y": 18650 }, "floatingObject": { "isPinned": false, @@ -16103,12 +16103,12 @@ "id": "37988155-ac7c-4eb2-937b-6d3b64842a3a", "savedPayload": { "position": { - "x": 5842.962686014169, - "y": 23744.769941969986 + "x": 34828.46993239099, + "y": 18944.769941969986 }, "targetPosition": { - "x": 5787.189203865294, - "y": 23450 + "x": 34772.69645024211, + "y": 18650 }, "floatingObject": { "isPinned": false, @@ -16162,12 +16162,12 @@ "id": "1d398124-3f36-40a1-8b3b-6c77ad489b92", "savedPayload": { "position": { - "x": 5787.189203865294, - "y": 23450 + "x": 34772.69645024211, + "y": 18650 }, "targetPosition": { - "x": 5497.411455978574, - "y": 23372.354286469243 + "x": 34482.91870235539, + "y": 18572.354286469243 }, "floatingObject": { "isPinned": false, @@ -16188,12 +16188,12 @@ "id": "2b8d3ce7-515c-44ad-8d80-3c2be6d7736f", "savedPayload": { "position": { - "x": 5497.411455978574, - "y": 23372.354286469243 + "x": 34482.91870235539, + "y": 18572.354286469243 }, "targetPosition": { - "x": 5237.603834843242, - "y": 23522.354286469243 + "x": 34223.11108122006, + "y": 18722.354286469243 }, "floatingObject": { "isPinned": false, @@ -16216,12 +16216,12 @@ "id": "e9c0e495-7985-4381-bf75-865d87289038", "savedPayload": { "position": { - "x": 5537.603834843242, - "y": 23522.354286469243 + "x": 34523.11108122006, + "y": 18722.354286469243 }, "targetPosition": { - "x": 5237.603834843242, - "y": 23522.354286469243 + "x": 34223.11108122006, + "y": 18722.354286469243 }, "floatingObject": { "isPinned": false, @@ -16239,12 +16239,12 @@ "id": "d5ed432e-78bf-432e-be3b-8649932f7a65", "savedPayload": { "position": { - "x": 5237.603834843242, - "y": 23522.354286469243 + "x": 34223.11108122006, + "y": 18722.354286469243 }, "targetPosition": { - "x": 4947.826086956522, - "y": 23600 + "x": 33933.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -16400,12 +16400,12 @@ "id": "796dd30f-c90d-4b8d-a63d-89867347407b", "savedPayload": { "position": { - "x": 5237.603834843242, - "y": 23677.645713530757 + "x": 34223.11108122006, + "y": 18877.645713530757 }, "targetPosition": { - "x": 4947.826086956522, - "y": 23600 + "x": 33933.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -16423,12 +16423,12 @@ "id": "bb390957-b8a2-4a8a-9fbf-963ea20f6eaf", "savedPayload": { "position": { - "x": 4947.826086956522, - "y": 23600 + "x": 33933.333333333336, + "y": 18800 }, "targetPosition": { - "x": 4647.826086956522, - "y": 23600 + "x": 33633.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -16463,7 +16463,7 @@ "userDelegates": [ { "type": "User Delegate", - "name": "Tentacule23", + "name": "", "config": "{}", "project": "Governance", "id": "7afae430-9aae-4321-949c-0faf68b156f6", @@ -16504,7 +16504,7 @@ }, { "type": "User Delegate", - "name": "alexandrustefan", + "name": "", "config": "{}", "project": "Governance", "id": "da1969ba-e1fc-40f6-a246-41b0102b8e22", @@ -16545,7 +16545,7 @@ }, { "type": "User Delegate", - "name": "NAmorim", + "name": "", "config": "{\n \"percentage\": 50\n}", "project": "Governance", "id": "d8d3a46a-bcc6-4fdc-88e0-f9a37a5ebaef", @@ -16617,7 +16617,7 @@ "userDelegates": [ { "type": "User Delegate", - "name": "harrellbm", + "name": "", "config": "{}", "project": "Governance", "id": "af0bdf1a-acf9-4621-ba01-8cbf7e1be56d", @@ -16711,12 +16711,12 @@ "id": "4246052a-0eab-43a6-bdc4-d9a42a9bd694", "savedPayload": { "position": { - "x": 5167.441329227186, - "y": 23900 + "x": 34152.948575604, + "y": 19100 }, "targetPosition": { - "x": 4907.633708091854, - "y": 23750 + "x": 33893.14095446867, + "y": 18950 }, "floatingObject": { "isPinned": false, @@ -16734,12 +16734,12 @@ "id": "ed112539-01ea-4937-85cf-69612ee6115d", "savedPayload": { "position": { - "x": 4907.633708091854, - "y": 23750 + "x": 33893.14095446867, + "y": 18950 }, "targetPosition": { - "x": 4647.826086956522, - "y": 23600 + "x": 33633.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -16929,12 +16929,12 @@ "id": "ba3bc469-3c94-444d-a5d0-8ed851aa3778", "savedPayload": { "position": { - "x": 4797.826086956522, - "y": 23859.807621135333 + "x": 33783.333333333336, + "y": 19059.807621135333 }, "targetPosition": { - "x": 4647.826086956522, - "y": 23600 + "x": 33633.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -16952,12 +16952,12 @@ "id": "f8182a9c-f830-4ec1-a238-ac3a5efd69e6", "savedPayload": { "position": { - "x": 4647.826086956522, - "y": 23600 + "x": 33633.333333333336, + "y": 18800 }, "targetPosition": { - "x": 4347.826086956522, - "y": 23600 + "x": 33333.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -16979,12 +16979,12 @@ "id": "9870ca2a-cefc-484b-b7fc-206d62782ebc", "savedPayload": { "position": { - "x": 4197.826086956522, - "y": 23859.807621135333 + "x": 33183.333333333336, + "y": 19059.807621135333 }, "targetPosition": { - "x": 4347.826086956522, - "y": 23600 + "x": 33333.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -17007,22 +17007,22 @@ { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x4f5c0d007a1315fba2eabbab3c1fb4e3f2f457b3a64a263453b5a17a9f4978f6\",\n \"s\": \"0x6d92b391e9382ea649c7d88f1536e545554cf59b925fa23beb78e1695efd5b6e\",\n \"signature\": \"0x4f5c0d007a1315fba2eabbab3c1fb4e3f2f457b3a64a263453b5a17a9f4978f66d92b391e9382ea649c7d88f1536e545554cf59b925fa23beb78e1695efd5b6e1b\"\n }\n}", + "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xc321c45055b32456d938c214e00cbfb035efe8bda6fa20268be4683b3b89f64b\",\n \"s\": \"0x053be15689ecf8a29369814c9d6d6be0c1238497d56f6edb6be045d07df4dfea\",\n \"signature\": \"0xc321c45055b32456d938c214e00cbfb035efe8bda6fa20268be4683b3b89f64b053be15689ecf8a29369814c9d6d6be0c1238497d56f6edb6be045d07df4dfea1c\"\n }\n}", "project": "Governance", "signingAccountChild": { "type": "Social Trading Desktop App", "name": "Social Trading Desktop App # 1", "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-1\"\n}", "project": "Governance", - "id": "33df9686-6aa8-4d0d-90b6-d86b9be4f97f", + "id": "012c74dd-1a61-4784-bc8a-e18555b4974e", "savedPayload": { "position": { - "x": 3666.8977890580672, - "y": 23418.508094196695 + "x": 32588.466416509047, + "y": 18618.508094196695 }, "targetPosition": { - "x": 3964.33124747021, - "y": 23379.35023653068 + "x": 32885.89987492119, + "y": 18579.35023653068 }, "floatingObject": { "isPinned": false, @@ -17037,15 +17037,15 @@ } } }, - "id": "d1fa780c-673a-442d-af85-6f1e03179a0e", + "id": "3863ebb9-c69f-40b2-8bbd-eb8f2b60a49c", "savedPayload": { "position": { - "x": 3964.33124747021, - "y": 23379.35023653068 + "x": 32885.89987492119, + "y": 18579.35023653068 }, "targetPosition": { - "x": 4261.764705882353, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -17063,22 +17063,22 @@ { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xb6529251f39c0b1bd87bfb46e12bd266a27ac5217a932f07587a3a306367fc80\",\n \"s\": \"0x3bfd826e7bbc9b15e6a824e54284ce3f4a39d1d480091973953d0bf63c152f46\",\n \"signature\": \"0xb6529251f39c0b1bd87bfb46e12bd266a27ac5217a932f07587a3a306367fc803bfd826e7bbc9b15e6a824e54284ce3f4a39d1d480091973953d0bf63c152f461b\"\n }\n}", + "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x4a48ecc069047c7e29af18652948ca7054c7e1bcf66b7bf657f82a7883631262\",\n \"s\": \"0x3cfef2f134a36a8879d64195e96fd2e22627c0363a05a1b4efb6101699b1a669\",\n \"signature\": \"0x4a48ecc069047c7e29af18652948ca7054c7e1bcf66b7bf657f82a78836312623cfef2f134a36a8879d64195e96fd2e22627c0363a05a1b4efb6101699b1a6691b\"\n }\n}", "project": "Governance", "signingAccountChild": { "type": "Social Trading Mobile App", "name": "Social Trading Mobile App # 1", "config": "{\n \"codeName\": \"Social-Trading-Mobile-App-1\"\n}", "project": "Governance", - "id": "da524b16-839a-40cd-b90f-4ed40e745594", + "id": "2d03d11f-b553-4b01-9291-9e13da15dd54", "savedPayload": { "position": { - "x": 3682.209210108912, - "y": 23184.900951803153 + "x": 32603.777837559894, + "y": 18384.900951803153 }, "targetPosition": { - "x": 3971.9869579956326, - "y": 23262.54666533391 + "x": 32893.555585446615, + "y": 18462.54666533391 }, "floatingObject": { "isPinned": false, @@ -17093,15 +17093,15 @@ } } }, - "id": "d57afbcc-f711-4e92-9b5e-8fbf86c12acb", + "id": "c84e9e64-7527-4dec-ac58-93696e19a756", "savedPayload": { "position": { - "x": 3971.9869579956326, - "y": 23262.54666533391 + "x": 32893.555585446615, + "y": 18462.54666533391 }, "targetPosition": { - "x": 4261.764705882353, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -17119,22 +17119,22 @@ { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xd5cb851afd167250a1735e96c03e7e5a4ebe2829b3e45e545f9a6e53c56360a6\",\n \"s\": \"0x4dcf855cd4fe4d711e8d18fc95ec587343457d985b93bdc7560079f3a42a424c\",\n \"signature\": \"0xd5cb851afd167250a1735e96c03e7e5a4ebe2829b3e45e545f9a6e53c56360a64dcf855cd4fe4d711e8d18fc95ec587343457d985b93bdc7560079f3a42a424c1c\"\n }\n}", + "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x3d3791843477eb85b7896ccbc55bfb41189c3fa67f5a098f40e2ddf9a2331ffa\",\n \"s\": \"0x09114da1c09e2d064fb07accf58310f2e13400ae564eb52e471d18d955ea9569\",\n \"signature\": \"0x3d3791843477eb85b7896ccbc55bfb41189c3fa67f5a098f40e2ddf9a2331ffa09114da1c09e2d064fb07accf58310f2e13400ae564eb52e471d18d955ea95691b\"\n }\n}", "project": "Governance", "signingAccountChild": { "type": "Social Trading Server App", "name": "Social Trading Server App # 1", "config": "{\n \"codeName\": \"Social-Trading-Server-App-1\"\n}", "project": "Governance", - "id": "0609495c-0248-4f9b-9006-02f0e02c76aa", + "id": "c3d218ee-119f-4bd9-9349-8a194844ecd9", "savedPayload": { "position": { - "x": 3785.752701707612, - "y": 22974.935521459432 + "x": 32707.321329158593, + "y": 18174.935521459432 }, "targetPosition": { - "x": 4023.7587037949825, - "y": 23157.56395016205 + "x": 32945.327331245964, + "y": 18357.56395016205 }, "floatingObject": { "isPinned": false, @@ -17149,15 +17149,15 @@ } } }, - "id": "42cb9bd7-bfc6-47fe-98f5-f56670f53c5d", + "id": "75f17a55-bf33-4e69-b842-b424a6f517e8", "savedPayload": { "position": { - "x": 4023.7587037949825, - "y": 23157.56395016205 + "x": 32945.327331245964, + "y": 18357.56395016205 }, "targetPosition": { - "x": 4261.764705882353, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -17175,22 +17175,22 @@ { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x171d95f1ff727916737828707fe408d656454598480c1c5793df392ba0be288c\",\n \"s\": \"0x7eb1242017caa74ff48251ea4a5d51345b31758f5054c961fd19199a9fb2eab7\",\n \"signature\": \"0x171d95f1ff727916737828707fe408d656454598480c1c5793df392ba0be288c7eb1242017caa74ff48251ea4a5d51345b31758f5054c961fd19199a9fb2eab71b\"\n }\n}", + "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x0098b881f17a46a940d6dbb11121217c29330ea1a357ad72ed921448539ceeab\",\n \"s\": \"0x28c9f7cf445ab86caaa01f86d4456f4bdf0a81757dc0a0c80351d481b7df5ad3\",\n \"signature\": \"0x0098b881f17a46a940d6dbb11121217c29330ea1a357ad72ed921448539ceeab28c9f7cf445ab86caaa01f86d4456f4bdf0a81757dc0a0c80351d481b7df5ad31c\"\n }\n}", "project": "Governance", "signingAccountChild": { "type": "Algo Traders Platform", "name": "Algo Traders Platform # 1", "config": "{\n \"codeName\": \"Algo-Traders-Platform-1\"\n}", "project": "Governance", - "id": "baa7d72c-b576-480f-b160-2cc46ce47815", + "id": "bcffb701-754d-4685-ad09-8bf3f09265d9", "savedPayload": { "position": { - "x": 3961.764705882353, - "y": 22820.577136594 + "x": 32883.333333333336, + "y": 18020.577136594 }, "targetPosition": { - "x": 4111.764705882353, - "y": 23080.384757729335 + "x": 33033.333333333336, + "y": 18280.384757729335 }, "floatingObject": { "isPinned": false, @@ -17205,15 +17205,15 @@ } } }, - "id": "47f2db6d-7fe6-456d-aeb0-7128524aaa36", + "id": "377ee3ed-49e4-415d-87b3-946024f0a1ef", "savedPayload": { "position": { - "x": 4111.764705882353, - "y": 23080.384757729335 + "x": 33033.333333333336, + "y": 18280.384757729335 }, "targetPosition": { - "x": 4261.764705882353, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -17231,22 +17231,22 @@ { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x278999b03f16b7be639bf28e414bb6620f09504fbd5bfe2aa0283044036cdf0c\",\n \"s\": \"0x377237529c066739a79e545d300b911be9c525c0961f8f1edaa7df5e6322d65e\",\n \"signature\": \"0x278999b03f16b7be639bf28e414bb6620f09504fbd5bfe2aa0283044036cdf0c377237529c066739a79e545d300b911be9c525c0961f8f1edaa7df5e6322d65e1c\"\n }\n}", + "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xfd5dfc5b7d84dac898c43880c6234c041142dccc5bf6b57e7eb671497e0cafcf\",\n \"s\": \"0x0bc0cc01159b307fa6d5fa46dbd3a1e71e4fbeca349969177014e1e9d204f9f3\",\n \"signature\": \"0xfd5dfc5b7d84dac898c43880c6234c041142dccc5bf6b57e7eb671497e0cafcf0bc0cc01159b307fa6d5fa46dbd3a1e71e4fbeca349969177014e1e9d204f9f31b\"\n }\n}", "project": "Governance", "signingAccountChild": { "type": "P2P Network Node", "name": "P2P Network Node # 1", "config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18042\"\n}", "project": "Governance", - "id": "7c917c18-f13f-41ca-a739-a440421c7bc4", + "id": "bb0f0417-9dfb-47a3-941f-dcfa82fbaea1", "savedPayload": { "position": { - "x": 4183.4489905503215, - "y": 22745.325462040382 + "x": 33105.0176180013, + "y": 17945.325462040382 }, "targetPosition": { - "x": 4222.606848216337, - "y": 23042.758920452525 + "x": 33144.17547566732, + "y": 18242.758920452525 }, "floatingObject": { "isPinned": false, @@ -17261,15 +17261,15 @@ } } }, - "id": "2a499940-eb6f-4328-9f67-7c915b01b3db", + "id": "7c5f14f9-63c2-42fa-98ee-1d4a36590cf4", "savedPayload": { "position": { - "x": 4222.606848216337, - "y": 23042.758920452525 + "x": 33144.17547566732, + "y": 18242.758920452525 }, "targetPosition": { - "x": 4261.764705882353, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -17287,22 +17287,22 @@ { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x901e04cbe4cfd2bdba2429349d74181b953e3c048a9260a9fc27389430de80e2\",\n \"s\": \"0x22f448e151aec1e5cc1c96177fd10e8fea47f3c7a2f001412348b379685728ea\",\n \"signature\": \"0x901e04cbe4cfd2bdba2429349d74181b953e3c048a9260a9fc27389430de80e222f448e151aec1e5cc1c96177fd10e8fea47f3c7a2f001412348b379685728ea1b\"\n }\n}", + "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xa4b34d7c9e7644f4fddf7aa2d969eb7dac3b8dbcc36c559b99fa93bc5ea3c6d3\",\n \"s\": \"0x7a5087de3f5470cb173d73949c05c00438bc16138f43c7aebbe2b80d7d45122b\",\n \"signature\": \"0xa4b34d7c9e7644f4fddf7aa2d969eb7dac3b8dbcc36c559b99fa93bc5ea3c6d37a5087de3f5470cb173d73949c05c00438bc16138f43c7aebbe2b80d7d45122b1c\"\n }\n}", "project": "Governance", "signingAccountChild": { "type": "P2P Network Node", "name": "P2P Network Node # 2", - "config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18042\"\n}", + "config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18043\"\n}", "project": "Governance", - "id": "b7b14ba1-da1a-4f8b-8fd0-0929bfb9afdf", + "id": "76fa8a24-9ab4-4eaf-82f2-458ba557b204", "savedPayload": { "position": { - "x": 4417.056132943866, - "y": 22760.636883091225 + "x": 33338.62476039485, + "y": 17960.636883091225 }, "targetPosition": { - "x": 4339.41041941311, - "y": 23050.414630977946 + "x": 33260.97904686409, + "y": 18250.414630977946 }, "floatingObject": { "isPinned": false, @@ -17317,15 +17317,15 @@ } } }, - "id": "93fcdc33-1f94-4a07-8838-50205e305a21", + "id": "48544424-5b62-417b-897d-9164b26fcd56", "savedPayload": { "position": { - "x": 4339.41041941311, - "y": 23050.414630977946 + "x": 33260.97904686409, + "y": 18250.414630977946 }, "targetPosition": { - "x": 4261.764705882353, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -17343,22 +17343,22 @@ { "type": "Signing Account", "name": "New Signing Account", - "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xc938ab3cadd77fdca413d882b04f0171a46dac0c0e55c72f3c7a84a9552d94ed\",\n \"s\": \"0x1d42a148e5c1380395e79ec66649515b4220baff0d662bbaebbba90e3b71142f\",\n \"signature\": \"0xc938ab3cadd77fdca413d882b04f0171a46dac0c0e55c72f3c7a84a9552d94ed1d42a148e5c1380395e79ec66649515b4220baff0d662bbaebbba90e3b71142f1c\"\n }\n}", + "config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x700e273467c374fda2062fbaf42fadfd74a0c3995498f75ffd1a66c7376e7c60\",\n \"s\": \"0x3531a0c135fcdd578b5069799b3fc246c9cf1cee325a258f6d2960d20f2a98e6\",\n \"signature\": \"0x700e273467c374fda2062fbaf42fadfd74a0c3995498f75ffd1a66c7376e7c603531a0c135fcdd578b5069799b3fc246c9cf1cee325a258f6d2960d20f2a98e61c\"\n }\n}", "project": "Governance", "signingAccountChild": { "type": "P2P Network Node", "name": "P2P Network Node # 3", - "config": "{\n \"codeName\": \"P2P-Network-Node-3\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18042\"\n}", + "config": "{\n \"codeName\": \"P2P-Network-Node-3\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18044\"\n}", "project": "Governance", - "id": "47a35fc3-5968-494b-89db-dcbc53d993ea", + "id": "297e57c2-3c1a-4170-b710-d2705804205b", "savedPayload": { "position": { - "x": 4627.021563287586, - "y": 22864.180374689924 + "x": 33548.59019073856, + "y": 18064.180374689924 }, "targetPosition": { - "x": 4444.39313458497, - "y": 23102.186376777296 + "x": 33365.96176203595, + "y": 18302.186376777296 }, "floatingObject": { "isPinned": false, @@ -17373,15 +17373,15 @@ } } }, - "id": "5322bfda-90ae-4f5d-9bd1-3cf2ba67b854", + "id": "b39e1c4d-4170-4134-ae85-fc9fa7f3eb47", "savedPayload": { "position": { - "x": 4444.39313458497, - "y": 23102.186376777296 + "x": 33365.96176203595, + "y": 18302.186376777296 }, "targetPosition": { - "x": 4261.764705882353, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -17397,20 +17397,20 @@ } } ], - "id": "1aae1fa4-e5cf-48de-a25e-20001523da70", + "id": "ecf6aa0a-bf05-48e4-a7ee-7a714fbdbce2", "savedPayload": { "position": { - "x": 4197.826086956522, - "y": 23340.192378864667 + "x": 33183.333333333336, + "y": 18540.192378864667 }, "targetPosition": { - "x": 4347.826086956522, - "y": 23600 + "x": 33333.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -17423,17 +17423,17 @@ "id": "a8de78f0-c3e4-4a2a-b7e8-f659073969db", "savedPayload": { "position": { - "x": 4347.826086956522, - "y": 23600 + "x": 33333.333333333336, + "y": 18800 }, "targetPosition": { - "x": 4347.826086956522, - "y": 23600 + "x": 33333.333333333336, + "y": 18800 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js index 8592bc2da..285c171e5 100644 --- a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -330,6 +330,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { } let secret = { + signingAccountChildId: signingAccountChild.id, signingAccountChildName: signingAccountChild.name, signingAccountChildType: targetNodeType, signingAccountChildCodeName: codeName, diff --git a/Projects/Network/SA/Modules/P2PNetwork.js b/Projects/Network/SA/Modules/P2PNetwork.js index 8006a6925..890e03bbc 100644 --- a/Projects/Network/SA/Modules/P2PNetwork.js +++ b/Projects/Network/SA/Modules/P2PNetwork.js @@ -17,13 +17,16 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { } async function initialize() { + p2pNodesToConnect = [] /* We will setup here the maps and arryas we will need to operate within the P2P Network. */ - let thisP2PNodeId = SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).signingAccountNodeId + let thisP2PNodeId = SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).signingAccountChildId for (let i = 0; i < SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.length; i++) { let p2pNetworkNode = SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES[i] - + if (thisP2PNodeId !== p2pNetworkNode.node.id) { + p2pNodesToConnect.push(p2pNetworkNode) + } } } From 6ef1d036b22f95a4666b713c961e91bf3b5d1d41 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 4 Nov 2021 12:53:30 +0100 Subject: [PATCH 06/39] DK.running refactored --- Desktop/DesktopApp.js | 136 +++++------------- Network/NetwokNode.js | 2 +- Projects/Network/SA/Modules/P2PNetwork.js | 18 ++- .../Network/SA/Modules/WebSocketsAppClient.js | 30 ++-- .../DK/modules/WebAppInterface.js | 6 +- 5 files changed, 59 insertions(+), 133 deletions(-) diff --git a/Desktop/DesktopApp.js b/Desktop/DesktopApp.js index 02e44aa7a..fc5396f93 100644 --- a/Desktop/DesktopApp.js +++ b/Desktop/DesktopApp.js @@ -1,126 +1,56 @@ exports.newDesktopApp = function newDesktopApp() { let thisObject = { + socialGraph: undefined, + p2pMetwork: undefined, + webSocketsClient: undefined, + webSocketsInterface: undefined, run: run } + DK.desktopApp = thisObject + return thisObject async function run() { - /* - Here we will store our running objects: - */ - DK.running = {} /* This is the Personal Social Graph for the user running this App. */ - DK.running.socialGraph = DK.projects.socialTrading.modules.socialGraph.newSocialTradingModulesSocialGraph() - await DK.running.socialGraph.initialize() + thisObject.socialGraph = DK.projects.socialTrading.modules.socialGraph.newSocialTradingModulesSocialGraph() + await thisObject.socialGraph.initialize() + /* + We can join now the P2P Network as a client app. + */ + thisObject.p2pMetwork = SA.projects.network.modules.p2pMetwork.newNetworkModulesP2PNetwork() + await thisObject.p2pMetwork.initialize('Network Client') + /* + Here we will pick a Network Node from all users profiles available that do have a Network Node running. // TODO + In the meantime, we will assume that we have chosen the following Network Node to connect to. + */ + selectedNetworkNode = { + userProfileHandle: "Luis-Fernando-Molina", + blockchainAccount: "0xeBDCB7a73c4796ca9F025d005630eCe773dd9e54", + ranking: 0, + host: "localhost", + port: global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT + } /* This is the Web Sockets client that interacts with the Superalgos Network. */ - DK.running.webSocketsClient = SA.projects.network.modules.webSocketsAppClient.newNetworkModulesWebSocketsAppClient() - await DK.running.webSocketsClient.initialize() + thisObject.webSocketsClient = SA.projects.network.modules.webSocketsAppClient.newNetworkModulesWebSocketsAppClient() + await thisObject.webSocketsClient.initialize('Network Client', selectedNetworkNode) console.log('Desktop Client Connected to Network Node via Web Sockets ................... Connected to port ' + global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT) - - /* These are the Network Interfaces by which the Web App interacts with this Desktop Client.*/ - - DK.running.webSocketsInterface = DK.projects.socialTrading.modules.webSocketsInterface.newDesktopModulesWebSocketsInterface() - DK.running.webSocketsInterface.initialize() + /* + These are the Network Interfaces by which the Web App interacts with this Desktop Client. + */ + thisObject.webSocketsInterface = DK.projects.socialTrading.modules.webSocketsInterface.newDesktopModulesWebSocketsInterface() + thisObject.webSocketsInterface.initialize() console.log('Desktop Client Web Sockets Interface ....................................... Listening at port ' + global.env.DESKTOP_WEB_SOCKETS_INTERFACE_PORT) - DK.running.httpInterface = DK.projects.socialTrading.modules.httpInterface.newDesktopModulesHttpInterface() - DK.running.httpInterface.initialize() + thisObject.webSocketsClient = DK.projects.socialTrading.modules.httpInterface.newDesktopModulesHttpInterface() + thisObject.httpInterface.initialize() console.log('Desktop Client Http Interface .............................................. Listening at port ' + global.env.DESKTOP_HTTP_INTERFACE_PORT) - return - - let queryMessage - let query - /* - Test Query User Profiles. - */ - queryMessage = { - queryType: SA.projects.socialTrading.globals.queryTypes.USER_PROFILES, - emitterUserProfileId: SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileId, - initialIndex: 'Last', - amountRequested: 10, - direction: 'Past' - } - - query = { - requestType: 'Query', - queryMessage: JSON.stringify(queryMessage) - } - - await DK.webSocketsClient.sendMessage( - JSON.stringify(query) - ) - .then(showProfiles) - .catch(onError) - - async function showProfiles(profiles) { - console.log(profiles) - - for (let i = 0; i < profiles.length; i++) { - let profile = profiles[i] - - /* - Test Following Profiles. - */ - let eventMessage = { - eventId: SA.projects.foundations.utilities.miscellaneousFunctions.genereteUniqueId(), - eventType: SA.projects.socialTrading.globals.eventTypes.FOLLOW_USER_PROFILE, - emitterUserProfileId: SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileId, - targetUserProfileId: profile.userProfileId - } - - let event = { - requestType: 'Event', - eventMessage: JSON.stringify(eventMessage) - } - - await DK.webSocketsClient.sendMessage( - JSON.stringify(event) - ) - .then(followAdded) - .catch(onError) - - function followAdded() { - console.log("User Profile " + profile.userProfileHandle + " followed.") - } - } - } - /* - Test Query User Profile Stats. - */ - queryMessage = { - queryType: SA.projects.socialTrading.globals.queryTypes.USER_PROFILE_STATS, - emitterUserProfileId: SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileId, - targetUserProfileId: SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileId - } - - query = { - requestType: 'Query', - queryMessage: JSON.stringify(queryMessage) - } - - await DK.webSocketsClient.sendMessage( - JSON.stringify(query) - ) - .then(showProfilesStats) - .catch(onError) - - function showProfilesStats(profile) { - console.log(profile) - } - - /* - Error Handling - */ - function onError(errorMessage) { - console.log('[ERROR] Query not executed. ' + errorMessage) - } } } diff --git a/Network/NetwokNode.js b/Network/NetwokNode.js index 74ffc6326..5aa0f2eb9 100644 --- a/Network/NetwokNode.js +++ b/Network/NetwokNode.js @@ -29,6 +29,6 @@ exports.newNetworkNode = function newNetworkNode() { We can join now the P2P Network as a new peer there. */ thisObject.p2pMetwork = SA.projects.network.modules.p2pMetwork.newNetworkModulesP2PNetwork() - await thisObject.p2pMetwork.initialize() + await thisObject.p2pMetwork.initialize('Network Peer') } } diff --git a/Projects/Network/SA/Modules/P2PNetwork.js b/Projects/Network/SA/Modules/P2PNetwork.js index 890e03bbc..5f6a90bc2 100644 --- a/Projects/Network/SA/Modules/P2PNetwork.js +++ b/Projects/Network/SA/Modules/P2PNetwork.js @@ -4,7 +4,7 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { of this current node to other peers. */ let thisObject = { - joinTheNetworkAsPeer: joinTheNetworkAsPeer, + joinTheNetworkAsNetworkPeer: joinTheNetworkAsNetworkPeer, /* Framework Functions */ initialize: initialize, finalize: finalize @@ -16,8 +16,9 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { } - async function initialize() { - p2pNodesToConnect = [] + async function initialize(callerRole) { + + let p2pNodesToConnect = [] /* We will setup here the maps and arryas we will need to operate within the P2P Network. */ @@ -28,9 +29,18 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { p2pNodesToConnect.push(p2pNetworkNode) } } + + switch (callerRole) { + case 'Network Client': { + break + } + case 'Network Peer': { + break + } + } } - function joinTheNetworkAsPeer() { + function joinTheNetworkAsNetworkPeer() { /* To join the network we will need to thorugh the list of Network Nodes and pick one to connect to. */ diff --git a/Projects/Network/SA/Modules/WebSocketsAppClient.js b/Projects/Network/SA/Modules/WebSocketsAppClient.js index 2fe199596..9d08ed187 100644 --- a/Projects/Network/SA/Modules/WebSocketsAppClient.js +++ b/Projects/Network/SA/Modules/WebSocketsAppClient.js @@ -10,7 +10,6 @@ exports.newNetworkModulesWebSocketsAppClient = function newNetworkModulesWebSock let web3 let called = {} - let selectedNetworkNode // This is a Network Node we pick to try to connect to. let onMessageFunctionsMap = new Map() return thisObject @@ -26,27 +25,14 @@ exports.newNetworkModulesWebSocketsAppClient = function newNetworkModulesWebSock onMessageFunctionsMap = undefined } - async function initialize() { - /* - Here we will pick a Network Node from all users profiles available that do have a Network Node running. // TODO - In the meantime, we will assume that we have chosen the following Network Node to connect to. - */ + async function initialize(callerRole, p2pNetworkNode) { + web3 = new SA.nodeModules.web3() - - selectedNetworkNode = { - userProfileHandle: "Luis-Fernando-Molina", - blockchainAccount: "0xeBDCB7a73c4796ca9F025d005630eCe773dd9e54", - ranking: 0, - host: "localhost", - port: global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT - } - - socketClient = new SA.nodeModules.ws('ws://' + selectedNetworkNode.host + ':' + selectedNetworkNode.port) - - await setUpWebsocketClient() + socketClient = new SA.nodeModules.ws('ws://' + p2pNetworkNode.host + ':' + p2pNetworkNode.port) + await setUpWebsocketClient(callerRole, p2pNetworkNode) } - async function setUpWebsocketClient() { + async function setUpWebsocketClient(callerRole) { return new Promise(connectToNewtwork) @@ -85,7 +71,7 @@ exports.newNetworkModulesWebSocketsAppClient = function newNetworkModulesWebSock let message = { messageType: 'Handshake', - callerRole: 'Network Client', + callerRole: callerRole, callerProfileHandle: SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle, callerTimestamp: callerTimestamp, step: 'One' @@ -116,7 +102,7 @@ exports.newNetworkModulesWebSocketsAppClient = function newNetworkModulesWebSock We will check that the blockchain account taken from the signature matches the one we have on record for the user profile of the Network Node we are calling. */ - if (called.blockchainAccount !== selectedNetworkNode.blockchainAccount) { + if (called.blockchainAccount !== p2pNetworkNode.blockchainAccount) { console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node called does not have the expected Profile Handle.') reject() return @@ -138,7 +124,7 @@ exports.newNetworkModulesWebSocketsAppClient = function newNetworkModulesWebSock We will check that the Network Node that responded has the same User Profile Handle that we have on record, otherwise something is wrong and we should not proceed. */ - if (signedMessage.calledProfileHandle !== selectedNetworkNode.userProfileHandle) { + if (signedMessage.calledProfileHandle !== p2pNetworkNode.userProfileHandle) { console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node called does not have the expected Profile Handle.') reject() return diff --git a/Projects/Social-Trading/DK/modules/WebAppInterface.js b/Projects/Social-Trading/DK/modules/WebAppInterface.js index 2eedc20bd..e9b7c75f5 100644 --- a/Projects/Social-Trading/DK/modules/WebAppInterface.js +++ b/Projects/Social-Trading/DK/modules/WebAppInterface.js @@ -58,11 +58,11 @@ exports.newSocialTradingModulesWebAppInterface = function newSocialTradingModule response = { result: 'Ok', message: 'Web App Interface Query Processed.', - data: await DK.running.webSocketsClient.sendMessage(JSON.stringify(messageHeader)) + data: await DK.desktopApp.webSocketsClient.sendMessage(JSON.stringify(messageHeader)) } } else { - let events = await DK.running.webSocketsClient.sendMessage(JSON.stringify(messageHeader)) + let events = await DK.desktopApp.webSocketsClient.sendMessage(JSON.stringify(messageHeader)) for (let i = 0; i < events.length; i++) { let event = events[i] if (event.eventType === SA.projects.socialTrading.globals.eventTypes.NEW_USER_POST) { @@ -132,7 +132,7 @@ exports.newSocialTradingModulesWebAppInterface = function newSocialTradingModule let response = { result: 'Ok', message: 'Web App Interface Event Processed.', - data: await DK.running.webSocketsClient.sendMessage(JSON.stringify(messageHeader)) + data: await DK.desktopApp.webSocketsClient.sendMessage(JSON.stringify(messageHeader)) } return response } From 28ac81cc70c7a3d52f372cd9d37ab7f95217d9f5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 4 Nov 2021 13:52:58 +0100 Subject: [PATCH 07/39] Ready to debug changes --- Desktop/DesktopApp.js | 13 +- Projects/Network/SA/Modules/P2PNetwork.js | 30 ++- Projects/Network/SA/Modules/UserProfiles.js | 21 +- .../Network/SA/Modules/WebSocketsAppClient.js | 255 ------------------ .../Modules/WebSocketsNetworkClient.js | 36 +-- Projects/ProjectsSchema.json | 16 +- 6 files changed, 57 insertions(+), 314 deletions(-) delete mode 100644 Projects/Network/SA/Modules/WebSocketsAppClient.js rename Projects/Network/{NT => SA}/Modules/WebSocketsNetworkClient.js (89%) diff --git a/Desktop/DesktopApp.js b/Desktop/DesktopApp.js index fc5396f93..329542347 100644 --- a/Desktop/DesktopApp.js +++ b/Desktop/DesktopApp.js @@ -24,20 +24,13 @@ exports.newDesktopApp = function newDesktopApp() { thisObject.p2pMetwork = SA.projects.network.modules.p2pMetwork.newNetworkModulesP2PNetwork() await thisObject.p2pMetwork.initialize('Network Client') /* - Here we will pick a Network Node from all users profiles available that do have a Network Node running. // TODO - In the meantime, we will assume that we have chosen the following Network Node to connect to. + Here we will pick a Network Node from all users profiles available that do have a Network Node running. */ - selectedNetworkNode = { - userProfileHandle: "Luis-Fernando-Molina", - blockchainAccount: "0xeBDCB7a73c4796ca9F025d005630eCe773dd9e54", - ranking: 0, - host: "localhost", - port: global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT - } + let selectedNetworkNode = thisObject.p2pMetwork.p2pNodesToConnect[0] /* This is the Web Sockets client that interacts with the Superalgos Network. */ - thisObject.webSocketsClient = SA.projects.network.modules.webSocketsAppClient.newNetworkModulesWebSocketsAppClient() + thisObject.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient() await thisObject.webSocketsClient.initialize('Network Client', selectedNetworkNode) console.log('Desktop Client Connected to Network Node via Web Sockets ................... Connected to port ' + global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT) /* diff --git a/Projects/Network/SA/Modules/P2PNetwork.js b/Projects/Network/SA/Modules/P2PNetwork.js index 5f6a90bc2..61ae16c87 100644 --- a/Projects/Network/SA/Modules/P2PNetwork.js +++ b/Projects/Network/SA/Modules/P2PNetwork.js @@ -5,6 +5,7 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { */ let thisObject = { joinTheNetworkAsNetworkPeer: joinTheNetworkAsNetworkPeer, + p2pNodesToConnect: undefined, /* Framework Functions */ initialize: initialize, finalize: finalize @@ -13,28 +14,31 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { return thisObject function finalize() { - + thisObject.p2pNodesToConnect = undefined } async function initialize(callerRole) { - let p2pNodesToConnect = [] - /* - We will setup here the maps and arryas we will need to operate within the P2P Network. - */ - let thisP2PNodeId = SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).signingAccountChildId - for (let i = 0; i < SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.length; i++) { - let p2pNetworkNode = SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES[i] - if (thisP2PNodeId !== p2pNetworkNode.node.id) { - p2pNodesToConnect.push(p2pNetworkNode) - } - } - switch (callerRole) { case 'Network Client': { + thisObject.p2pNodesToConnect = [] + + for (let i = 0; i < SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.length; i++) { + let p2pNetworkNode = SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES[i] + thisObject.p2pNodesToConnect.push(p2pNetworkNode) + } break } case 'Network Peer': { + thisObject.p2pNodesToConnect = [] + + let thisP2PNodeId = SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).signingAccountChildId + for (let i = 0; i < SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.length; i++) { + let p2pNetworkNode = SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES[i] + if (thisP2PNodeId !== p2pNetworkNode.node.id) { + thisObject.p2pNodesToConnect.push(p2pNetworkNode) + } + } break } } diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index 746912e69..8e473c7d6 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -69,9 +69,26 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() /* If the Signing Account is for a P2P node, we will add the node to the array of available nodes at the p2p network. */ - if (signingAccount.signingAccountChild.type === "P2P Network Node") { + if ( + signingAccount.signingAccountChild.type === "P2P Network Node" && + signingAccount.signingAccountChild.config === undefined + ) { + let condig + try { + condig = JSON.parse(signingAccount.signingAccountChild.config) + } catch (err) { + console.log('P2P Network Node Config not in JSON format. userProfileHandle = ' + userHandle + ' NodeId = ' + signingAccount.signingAccountChild.id) + continue + } + if (config.host === undefined) { + continue + } + if (config.webSocketsPort === undefined) { + continue + } + p2pNetworkNode = SA.projects.network.modules.p2pMetworkNode.newNetworkModulesP2PNetworkNode() - p2pMetworkNode.initialize(signingAccount.signingAccountChild, userPofile) + p2pMetworkNode.initialize(signingAccount.signingAccountChild, userPofile) SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.push(p2pNetworkNode) } } diff --git a/Projects/Network/SA/Modules/WebSocketsAppClient.js b/Projects/Network/SA/Modules/WebSocketsAppClient.js deleted file mode 100644 index 9d08ed187..000000000 --- a/Projects/Network/SA/Modules/WebSocketsAppClient.js +++ /dev/null @@ -1,255 +0,0 @@ -exports.newNetworkModulesWebSocketsAppClient = function newNetworkModulesWebSocketsAppClient() { - - let thisObject = { - sendMessage: sendMessage, - initialize: initialize, - finalize: finalize - } - - let socketClient - - let web3 - let called = {} - let onMessageFunctionsMap = new Map() - - return thisObject - - function finalize() { - socketClient.close() - socketClient = undefined - networkInterface = undefined - peerInterface = undefined - - web3 = undefined - called = undefined - onMessageFunctionsMap = undefined - } - - async function initialize(callerRole, p2pNetworkNode) { - - web3 = new SA.nodeModules.web3() - socketClient = new SA.nodeModules.ws('ws://' + p2pNetworkNode.host + ':' + p2pNetworkNode.port) - await setUpWebsocketClient(callerRole, p2pNetworkNode) - } - - async function setUpWebsocketClient(callerRole) { - - return new Promise(connectToNewtwork) - - function connectToNewtwork(resolve, reject) { - - try { - - socketClient.onopen = () => { onConnection() } - socketClient.onerror = err => { onError(err) } - - function onConnection() { - - handshakeProcedure() - - function handshakeProcedure() { - - let callerTimestamp - - stepOneRequest() - - function stepOneRequest() { - /* - Send Handshake Message Step One: - - At Step One we will just say hello, identify ourselves - as a Network Client, and send the Network Node our - User Profile Handle. - - This Handle will be signed by the Network Node to prove - it's ouwn identity, and later we will sign it's own handle - to prove ours. - */ - socketClient.onmessage = socketMessage => { stepOneResponse(socketMessage) } - - callerTimestamp = (new Date()).valueOf() - - let message = { - messageType: 'Handshake', - callerRole: callerRole, - callerProfileHandle: SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle, - callerTimestamp: callerTimestamp, - step: 'One' - } - socketClient.send(JSON.stringify(message)) - } - - function stepOneResponse(socketMessage) { - let response = JSON.parse(socketMessage.data) - - if (response.result !== 'Ok') { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> response.message = ' + response.message) - reject() - return - } - - let signature = JSON.parse(response.signature) - called.blockchainAccount = web3.eth.accounts.recover(signature) - /* - We will check that the signature received produces a valid Blockchain Account. - */ - if (called.blockchainAccount === undefined) { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> Signature does not produce a valid Blockchain Account.') - reject() - return - } - /* - We will check that the blockchain account taken from the signature matches - the one we have on record for the user profile of the Network Node we are calling. - */ - if (called.blockchainAccount !== p2pNetworkNode.blockchainAccount) { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node called does not have the expected Profile Handle.') - reject() - return - } - - let signedMessage = JSON.parse(signature.message) - /* - We will verify that the signature belongs to the signature.message. - To do this we will hash the signature.message and see if we get - the same hash of the signature. - */ - let hash = web3.eth.accounts.hashMessage(signature.message) - if (hash !== signature.messageHash) { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> signature.message Hashed Does Not Match signature.messageHash.') - reject() - return - } - /* - We will check that the Network Node that responded has the same User Profile Handle - that we have on record, otherwise something is wrong and we should not proceed. - */ - if (signedMessage.calledProfileHandle !== p2pNetworkNode.userProfileHandle) { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node called does not have the expected Profile Handle.') - reject() - return - } - /* - We will check that the profile handle we sent to the Network Node, is returned at the - signed message, to avoid man in the middle attackts. - */ - if (signedMessage.callerProfileHandle !== SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle) { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node callerProfileHandle does not match my own userProfileHandle.') - reject() - return - } - /* - We will also check that the callerTimestamp we sent to the Network Node, is returned at the - signed message, also to avoid man in the middle attackts. - */ - if (signedMessage.callerTimestamp !== callerTimestamp) { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node callerTimestamp does not match my own callerTimestamp.') - reject() - return - } - - /* - All validations passed, it seems we can continue with Step Two. - */ - stepTwoRequest(signedMessage) - } - - function stepTwoRequest(signedMessage) { - /* - Send Handshake Message Step Two: - - Here we will sign a message with the Network Node profile - handle and timestamp to prove our own identity. - */ - socketClient.onmessage = socketMessage => { stepTwoResponse(socketMessage) } - - let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle) - - let message = { - messageType: 'Handshake', - signature: JSON.stringify(signature), - step: 'Two' - } - socketClient.send(JSON.stringify(message)) - } - - function stepTwoResponse(socketMessage) { - let response = JSON.parse(socketMessage.data) - - if (response.result !== 'Ok') { - console.log('[ERROR] Web Sockets Client -> stepOneResponse -> response.message = ' + response.message) - reject() - return - } - /* - This was the end of the Handshake producere. We are connected to the - Network Node and from now on, all response messages will be received - at this following function. - */ - socketClient.onmessage = socketMessage => { onMenssage(socketMessage) } - resolve() - } - } - } - - function onError(err) { - console.log('[ERROR] Web Sockets Client -> onError -> err.message = ' + err.message) - console.log('[ERROR] Web Sockets Client -> onError -> err.stack = ' + err.stack) - } - - } catch (err) { - console.log('[ERROR] Web Sockets Client -> setUpWebsocketClient -> err.stack = ' + err.stack) - } - - } - } - - function sendMessage(message) { - - return new Promise(sendSocketMessage) - - function sendSocketMessage(resolve, reject) { - - if (socketClient.readyState !== 1) { // 1 means connected and ready. - console.log('[ERROR] Web Sockets Client -> sendMessage -> Cannot send message while connection is closed.') - reject('Websockets Connection Not Ready.') - return - } - - let socketMessage = { - messageId: SA.projects.foundations.utilities.miscellaneousFunctions.genereteUniqueId(), - messageType: 'Request', - payload: message - } - onMessageFunctionsMap.set(socketMessage.messageId, onMenssageFunction) - socketClient.send( - JSON.stringify(socketMessage) - ) - - function onMenssageFunction(response) { - try { - if (response.result === 'Ok') { - resolve(response.data) - } else { - console.log('[ERROR] Web Sockets Client -> onMenssageFunction -> response.message = ' + response.message) - reject(response.message) - } - } catch (err) { - callbackFunction = undefined - console.log('[ERROR] Web Sockets Client -> err.stack = ' + err.stack) - } - } - } - } - - function onMenssage(socketMessage) { - - let response = JSON.parse(socketMessage.data) - /* - We get the functioin that is going to resolve or reject the promise given. - */ - onMenssageFunction = onMessageFunctionsMap.get(response.messageId) - onMessageFunctionsMap.delete(response.messageId) - onMenssageFunction(response) - } -} \ No newline at end of file diff --git a/Projects/Network/NT/Modules/WebSocketsNetworkClient.js b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js similarity index 89% rename from Projects/Network/NT/Modules/WebSocketsNetworkClient.js rename to Projects/Network/SA/Modules/WebSocketsNetworkClient.js index 89742008c..a41ef6eae 100644 --- a/Projects/Network/NT/Modules/WebSocketsNetworkClient.js +++ b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js @@ -10,7 +10,6 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb let web3 let called = {} - let selectedNetworkNode // This is a Network Node we pick to try to connect to. let onMessageFunctionsMap = new Map() return thisObject @@ -26,27 +25,18 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb onMessageFunctionsMap = undefined } - async function initialize() { - /* - Here we will pick a Network Node from all users profiles available that do have a Network Node running. // TODO - In the meantime, we will assume that we have chosen the following Network Node to connect to. - */ + async function initialize(callerRole, p2pNetworkNode) { + web3 = new SA.nodeModules.web3() - selectedNetworkNode = { - userProfileHandle: "Luis-Fernando-Molina", - blockchainAccount: "0xeBDCB7a73c4796ca9F025d005630eCe773dd9e54", - ranking: 0, - host: "localhost", - port: global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT - } + let host = JSON.parse(p2pNetworkNode.node.config).host + let port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort - socketClient = new SA.nodeModules.ws('ws://' + selectedNetworkNode.host + ':' + selectedNetworkNode.port) - - await setUpWebsocketClient() + socketClient = new SA.nodeModules.ws('ws://' + host + ':' + port) + await setUpWebsocketClient(callerRole, p2pNetworkNode) } - async function setUpWebsocketClient() { + async function setUpWebsocketClient(callerRole) { return new Promise(connectToNewtwork) @@ -85,8 +75,8 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb let message = { messageType: 'Handshake', - callerRole: 'Network Node', - callerProfileHandle: SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).userProfileHandle, + callerRole: callerRole, + callerProfileHandle: SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle, callerTimestamp: callerTimestamp, step: 'One' } @@ -116,7 +106,7 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb We will check that the blockchain account taken from the signature matches the one we have on record for the user profile of the Network Node we are calling. */ - if (called.blockchainAccount !== selectedNetworkNode.blockchainAccount) { + if (called.blockchainAccount !== p2pNetworkNode.userProfile.blockchainAccount) { console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node called does not have the expected Profile Handle.') reject() return @@ -138,7 +128,7 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb We will check that the Network Node that responded has the same User Profile Handle that we have on record, otherwise something is wrong and we should not proceed. */ - if (signedMessage.calledProfileHandle !== selectedNetworkNode.userProfileHandle) { + if (signedMessage.calledProfileHandle !== p2pNetworkNode.userProfile.userProfileHandle) { console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node called does not have the expected Profile Handle.') reject() return @@ -147,7 +137,7 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb We will check that the profile handle we sent to the Network Node, is returned at the signed message, to avoid man in the middle attackts. */ - if (signedMessage.callerProfileHandle !== SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).userProfileHandle) { + if (signedMessage.callerProfileHandle !== SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle) { console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node callerProfileHandle does not match my own userProfileHandle.') reject() return @@ -177,7 +167,7 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb */ socketClient.onmessage = socketMessage => { stepTwoResponse(socketMessage) } - let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), SA.secrets.map.get(global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT).privateKey) + let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle) let message = { messageType: 'Handshake', diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index b281f405f..7417a6826 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1376,12 +1376,6 @@ "propertyName": "webSocketsInterface", "functionName": "newNetworkModulesWebSocketsInterface", "fileName": "WebSocketsInterface.js" - }, - { - "name": "Web Sockets Network Client", - "propertyName": "webSocketsNetworkClient", - "functionName": "newNetworkModulesWebSocketsNetworkClient", - "fileName": "WebSocketsNetworkClient.js" } ], "utilities": [] @@ -1397,11 +1391,11 @@ ], "modules": [ { - "name": "Web Sockets App Client", - "propertyName": "webSocketsAppClient", - "functionName": "newNetworkModulesWebSocketsAppClient", - "fileName": "WebSocketsAppClient.js" - }, + "name": "Web Sockets Network Client", + "propertyName": "webSocketsNetworkClient", + "functionName": "newNetworkModulesWebSocketsNetworkClient", + "fileName": "WebSocketsNetworkClient.js" + } { "name": "User Profiles", "propertyName": "userProfiles", From 198a2690cd36b44deabfae6a14b6e3fe8a2ccec1 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 4 Nov 2021 14:07:50 +0100 Subject: [PATCH 08/39] Network is running with the changes --- Network/NetwokNode.js | 2 +- Projects/Network/SA/Modules/UserProfiles.js | 10 +++++----- Projects/ProjectsSchema.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Network/NetwokNode.js b/Network/NetwokNode.js index 5aa0f2eb9..f70c5a100 100644 --- a/Network/NetwokNode.js +++ b/Network/NetwokNode.js @@ -28,7 +28,7 @@ exports.newNetworkNode = function newNetworkNode() { /* We can join now the P2P Network as a new peer there. */ - thisObject.p2pMetwork = SA.projects.network.modules.p2pMetwork.newNetworkModulesP2PNetwork() + thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() await thisObject.p2pMetwork.initialize('Network Peer') } } diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index 8e473c7d6..63a6d2d61 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -71,11 +71,11 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() */ if ( signingAccount.signingAccountChild.type === "P2P Network Node" && - signingAccount.signingAccountChild.config === undefined + signingAccount.signingAccountChild.config !== undefined ) { - let condig + let config try { - condig = JSON.parse(signingAccount.signingAccountChild.config) + config = JSON.parse(signingAccount.signingAccountChild.config) } catch (err) { console.log('P2P Network Node Config not in JSON format. userProfileHandle = ' + userHandle + ' NodeId = ' + signingAccount.signingAccountChild.id) continue @@ -87,8 +87,8 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() continue } - p2pNetworkNode = SA.projects.network.modules.p2pMetworkNode.newNetworkModulesP2PNetworkNode() - p2pMetworkNode.initialize(signingAccount.signingAccountChild, userPofile) + p2pNetworkNode = SA.projects.network.modules.p2pNetworkNode.newNetworkModulesP2PNetworkNode() + p2pNetworkNode.initialize(signingAccount.signingAccountChild, userProfile) SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.push(p2pNetworkNode) } } diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 7417a6826..49ec0b489 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1395,7 +1395,7 @@ "propertyName": "webSocketsNetworkClient", "functionName": "newNetworkModulesWebSocketsNetworkClient", "fileName": "WebSocketsNetworkClient.js" - } + }, { "name": "User Profiles", "propertyName": "userProfiles", From 7e0b5cdb5e0cd0c96f51b7218c77986fed8b134b Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 4 Nov 2021 14:37:29 +0100 Subject: [PATCH 09/39] Bug Fixes --- Desktop/DesktopApp.js | 2 +- Projects/Network/SA/Modules/P2PNetworkNode.js | 11 +++++++---- Projects/Network/SA/Modules/UserProfiles.js | 5 ++--- .../Network/SA/Modules/WebSocketsNetworkClient.js | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Desktop/DesktopApp.js b/Desktop/DesktopApp.js index 329542347..78a592757 100644 --- a/Desktop/DesktopApp.js +++ b/Desktop/DesktopApp.js @@ -21,7 +21,7 @@ exports.newDesktopApp = function newDesktopApp() { /* We can join now the P2P Network as a client app. */ - thisObject.p2pMetwork = SA.projects.network.modules.p2pMetwork.newNetworkModulesP2PNetwork() + thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() await thisObject.p2pMetwork.initialize('Network Client') /* Here we will pick a Network Node from all users profiles available that do have a Network Node running. diff --git a/Projects/Network/SA/Modules/P2PNetworkNode.js b/Projects/Network/SA/Modules/P2PNetworkNode.js index a3a821653..1fc44ec94 100644 --- a/Projects/Network/SA/Modules/P2PNetworkNode.js +++ b/Projects/Network/SA/Modules/P2PNetworkNode.js @@ -5,7 +5,8 @@ exports.newNetworkModulesP2PNetworkNode = function newNetworkModulesP2PNetworkNo let thisObject = { node: undefined, - userPofile: undefined, + blockchainAccount: undefined, + userProfile: undefined, /* Framework Functions */ initialize: initialize, @@ -16,14 +17,16 @@ exports.newNetworkModulesP2PNetworkNode = function newNetworkModulesP2PNetworkNo function finalize() { thisObject.node = undefined - thisObject.userPofile = undefined + thisObject.blockchainAccount = undefined + thisObject.userProfile = undefined } - async function initialize(node, userPofile) { + async function initialize(node, userProfile, blockchainAccount) { /* We will setup here the maps and arryas we will need to operate within the P2P Network. */ thisObject.node = node - thisObject.userPofile = userPofile + thisObject.userProfile = userProfile + thisObject.blockchainAccount = blockchainAccount } } \ No newline at end of file diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index 63a6d2d61..c9493dc31 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -64,8 +64,7 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() let config = JSON.parse(signingAccount.config) let signatureObject = config.signature let web3 = new SA.nodeModules.web3() - let blockchainAccount = web3.eth.accounts.recover(signatureObject) - SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOKCHAIN_ACCOUNT.set(blockchainAccount, userProfile) + let blockchainAccount = web3.eth.accounts.recover(signatureObject) /* If the Signing Account is for a P2P node, we will add the node to the array of available nodes at the p2p network. */ @@ -88,7 +87,7 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() } p2pNetworkNode = SA.projects.network.modules.p2pNetworkNode.newNetworkModulesP2PNetworkNode() - p2pNetworkNode.initialize(signingAccount.signingAccountChild, userProfile) + p2pNetworkNode.initialize(signingAccount.signingAccountChild, userProfile, blockchainAccount) SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.push(p2pNetworkNode) } } diff --git a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js index a41ef6eae..15b34ecba 100644 --- a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js +++ b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js @@ -106,7 +106,7 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb We will check that the blockchain account taken from the signature matches the one we have on record for the user profile of the Network Node we are calling. */ - if (called.blockchainAccount !== p2pNetworkNode.userProfile.blockchainAccount) { + if (called.blockchainAccount !== p2pNetworkNode.blockchainAccount) { console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node called does not have the expected Profile Handle.') reject() return From 386ead6907154baf9c45cb13daa4848eb17c1421 Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Thu, 4 Nov 2021 17:45:35 +0300 Subject: [PATCH 10/39] Welcome To Superalgos 033-042 --- ...-tutorial-step-careful-with-your-data.json | 56 ++++++++++++++++--- ...gos-034-tutorial-step-the-bright-side.json | 24 +++++++- ...os-035-tutorial-step-break-on-through.json | 24 +++++++- ...torial-step-navigating-the-white-room.json | 24 +++++++- ...-037-tutorial-step-talkin-time-travel.json | 32 +++++++++-- ...ralgos-038-tutorial-step-bending-time.json | 32 +++++++++-- ...ralgos-039-tutorial-step-size-matters.json | 32 +++++++++-- ...tutorial-step-putting-things-in-order.json | 32 +++++++++-- ...041-tutorial-step-get-in-the-wormhole.json | 32 +++++++++-- ...os-042-tutorial-step-the-elegant-way..json | 40 +++++++++++-- 10 files changed, 287 insertions(+), 41 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json index a95f88feb..0fa0facd9 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Es kann Minuten dauern, bis alle Aufgaben zum getoppt sind. Sie sollten das System niemals schließen, bevor alle Aufgaben beendet sind.", - "updated": 1634173343328 + "updated": 1634173343328, + "style": "Definition" + }, + { + "language": "TR", + "text": "Tüm görevlerin durması bir dakika kadar sürebilir. Tüm görevler durmadan sistemi asla kapatmamalısınız.", + "updated": 1636033722512 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Überprüfen Sie die Kommandozeile Ihres Systems, um zu sehen, ob die Aufgaben gestoppt wurden!", - "updated": 1634173091261 + "updated": 1634173091261, + "style": "Callout" + }, + { + "language": "TR", + "text": "Görevlerin durduğunu görmek için konsol uygulamasını kontrol edin! Görevler çalışırken düğümlerin altında 1/1, 1/2 gibi kaç görev olduğu ve kaçının çalıştığına dair bir gösterge görürsünüz.", + "updated": 1636033793821 } ], "updated": 1616416021973 @@ -84,7 +96,13 @@ { "language": "DE", "text": "Der richtige Weg, Superalgos zu schließen, ist:", - "updated": 1634173103809 + "updated": 1634173103809, + "style": "Text" + }, + { + "language": "TR", + "text": "Superalgos'u kapatmanın doğru yolu şudur:", + "updated": 1636033807278 } ] }, @@ -108,7 +126,13 @@ { "language": "DE", "text": "Alle Aufgaben beenden, ein paar Minuten warten.", - "updated": 1634173410210 + "updated": 1634173410210, + "style": "List" + }, + { + "language": "TR", + "text": "Tüm görevleri durdurun ve birkaç dakika bekleyin.", + "updated": 1636033819254 } ] }, @@ -132,7 +156,13 @@ { "language": "DE", "text": "Wenn alle Aufgaben beendet sind, können Sie die Konsolenanwendung schließen oder den Prozess mit Ctrl + Key-C beenden.", - "updated": 1634173253123 + "updated": 1634173253123, + "style": "List" + }, + { + "language": "TR", + "text": "Tüm görevler durduğunda konsol uygulamasını kapatabilir veya Ctrl + Key-C ile işlemi durdurabilirsiniz", + "updated": 1636033864602 } ] }, @@ -155,7 +185,13 @@ { "language": "DE", "text": "Sie können den Browser jederzeit schließen und die Aufgaben im Hintergrund weiterlaufen lassen.", - "updated": 1634173156784 + "updated": 1634173156784, + "style": "List" + }, + { + "language": "TR", + "text": "Tarayıcıyı istediğiniz zaman kapatabilir ve görevlerin arka planda işlenmesini bırakabilirsiniz.", + "updated": 1636033884326 } ] }, @@ -179,7 +215,13 @@ { "language": "DE", "text": "Wenn Sie den Client schließen, bevor die Tasks beendet sind, können Ihre Daten beschädigt werden!", - "updated": 1634173172953 + "updated": 1634173172953, + "style": "Warning" + }, + { + "language": "TR", + "text": "Görevler durmadan İstemciyi ( Client ) kapatmak, verilerinizin bozulmasına neden olabilir!", + "updated": 1636033906258 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json index 038b221f4..67277fc2d 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Bislang waren Sie auf die dunkle Seite von Superalgos beschränkt. Machen Sie sich bereit, die helle Seite kennenzulernen: den Charting Space.", - "updated": 1634174936126 + "updated": 1634174936126, + "style": "Definition" + }, + { + "language": "TR", + "text": "Şimdiye kadar Superalgos'un karanlık tarafıyla sınırlı kaldınız. Parlak tarafa maruz kalmaya hazır olun: Grafik Alanı ( Charting Space )", + "updated": 1636034022706 } ] }, @@ -61,7 +67,13 @@ { "language": "DE", "text": "Der Charting-Bereich befindet sich über dem Design-Bereich, getrennt durch einen türkisfarbenen Schieberegler. Wie Sie es von Superalgos gewohnt sind, ist der Charting Space konfigurierbar und hochflexibel. Alles, was dort geschieht, wird in der Charting Space Hierarchie definiert.", - "updated": 1634174969494 + "updated": 1634174969494, + "style": "Text" + }, + { + "language": "TR", + "text": "Grafik alanı, turkuaz bir kaydırıcı ile ayrılmış tasarım alanının üstünde bulunur. Superalgos'tan beklendiği gibi, grafik alanı yapılandırılabilir ve oldukça esnektir. Orada olan her şey Grafik Alanı ( Charting Space ) hiyerarşisinde tanımlanır.", + "updated": 1636034080988 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Der Charting Space ist dafür bekannt, dass er die Leute umhaut. Bitte fahren Sie mit diesem Tutorial nicht fort, wenn Sie unter dem Einfluss von psychoaktiven Substanzen stehen.", - "updated": 1634174978126 + "updated": 1634174978126, + "style": "Warning" + }, + { + "language": "TR", + "text": "Grafik alanı, insanların aklını başından almasıyla bilinir. Lütfen şu anda psikoaktif maddelerin etkisi altındaysanız bu eğitime devam etmekten kaçının :)", + "updated": 1636034105076 } ], "updated": 1616416552336 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json index c3cf9f025..9715c5b87 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ich bringe Sie in kürzester Zeit dazu, sich im Charting Space zu bewegen und zu blättern... Kümmern wir uns zuerst um den Schieberegler!", - "updated": 1634205702474 + "updated": 1634205702474, + "style": "Definition" + }, + { + "language": "TR", + "text": "Hiç vakit kaybetmeden dolaşarak ve çizelge alanına göz atarak sizi hızlandıracağım... Önce kaydırıcıyı ele alalım!", + "updated": 1636034139286 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Klicken Sie ihn an und ziehen Sie ihn nach unten, um den Design Space zu schließen und den Charting Space zu öffnen. Um den umgekehrten Effekt zu erzielen, machen Sie das Gegenteil. Drücken Sie Ctrl + Shift + ↓. um dies mit der Tastatur zu tun. Versuchen Sie auch ↑ ← →", - "updated": 1634205728640 + "updated": 1634205728640, + "style": "Callout" + }, + { + "language": "TR", + "text": "Tasarım alanını kapatmak ve grafik alanını açmak için turkuaz bölgeyi tıklayarak aşağıya çekin. Kapatmak için tersini yapabilirsiniz. Bunu klavyeyle yapmak için Ctrl + Shift + ↓ tuşlarına basın. ↑ ← →.. Diğer yön tuşlarını da deneyin!", + "updated": 1636034296397 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Es ist eine gute Idee, einen der beiden Bereiche vollständig zu schließen, um Ressourcen zu sparen, es sei denn, Sie brauchen beide Bereiche nur teilweise geöffnet zu haben.", - "updated": 1634205372068 + "updated": 1634205372068, + "style": "Success" + }, + { + "language": "TR", + "text": "Her iki alanın da kısmen açık olmasına ihtiyacınız yoksa, makinenizdeki bilgi işlem kaynaklarından tasarruf etmek için her ikisini de tamamen kapatmak her zaman iyi bir fikirdir.", + "updated": 1636034332675 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json index 9eadd92c9..f6e70f3e2 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Genau wie der Design Space bietet auch der Charting Space einen riesigen Bereich, in dem Sie Diagramme einrichten können... so viele, wie Ihre Hardware verkraften kann!", - "updated": 1634205591674 + "updated": 1634205591674, + "style": "Definition" + }, + { + "language": "TR", + "text": "Tasarım alanı gibi, çizelge alanı da çizelgeler oluşturabileceğiniz devasa bir alana sahiptir... donanımınızın üstesinden gelebileceği kadar!", + "updated": 1636034379426 } ] }, @@ -61,7 +67,13 @@ { "language": "DE", "text": "Um die Dinge für Neulinge einfach zu halten, gibt es in diesem Workspace des Getting Started Tutorials nur zwei Charts. Fortgeschrittene Benutzer überwachen Charts von mehreren Börsen und Märkten.", - "updated": 1634205603337 + "updated": 1634205603337, + "style": "Text" + }, + { + "language": "TR", + "text": "Yeni başlayanlar için işleri basit tutmak gerektiğinden bu ( Getting Started Tutorial ) alanında yalnızca iki çizelge vardır. İleri düzey kullanıcılar, birden çok borsadan ve birden çok pazardan gelen tabloları izleyebilirler.", + "updated": 1636034464247 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Um sich im Viewport zu bewegen, klicken Sie auf einen leeren Bereich und ziehen Sie mit der Maus. Die Tastaturkombination ist Shift plus die Pfeiltasten ↑ ← → ↓", - "updated": 1634205660486 + "updated": 1634205660486, + "style": "Callout" + }, + { + "language": "TR", + "text": "Görünüm Alanında (Viewport) gezinmek için farenizi kullanarak boş alana tıklayın ve sürükleyin. Klavye ile şu tuş kombinasyonunu kullanarakta gezinebilirsin. Shift artı ok tuşları ↑ ← → ↓", + "updated": 1636034607617 } ], "updated": 1622198195729 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json index 5e36775f5..648ca3a1f 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ich habe bereits erwähnt, dass es in diesem Workspace zwei Diagramme gibt. In Superalgos nennen wir jedes dieser Diagramme eine Time Machine.", - "updated": 1634205940397 + "updated": 1634205940397, + "style": "Definition" + }, + { + "language": "TR", + "text": "Daha önce bahsetmiştim, bu çalışma alanında iki çizelge var. Superalgos'ta bu çizelgelerin her birine bir Zaman Makinesi ( Time Machine ) diyoruz.", + "updated": 1636035055393 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Eine Time Machine kann einen oder mehere Timeline Charts enthalten. Wir nennen sie Time Machines, weil alle Timeline Charts innerhalb einer Time Machine zeitlich synchronisiert sind. Diese Eigenschaft der Time Machines ermöglicht es, verschiedene Datenebenen auf derselben Time Scale zu überlagern.", - "updated": 1634206096721 + "updated": 1634206096721, + "style": "Text" + }, + { + "language": "TR", + "text": "Bir zaman makinesi, bir veya daha fazla Zaman Çizelgesi Grafiği tutabilir. Onlara zaman makineleri diyoruz çünkü bir zaman makinesindeki tüm zaman çizelgeleri zamanla senkronize edilir. Zaman makinelerinin bu özelliği, aynı Zaman Ölçeğini paylaşan farklı veri katmanlarının üst üste binmesine izin verir.", + "updated": 1636035067580 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Fahren Sie mit dem Mauszeiger über die Time Machines!", - "updated": 1634206006623 + "updated": 1634206006623, + "style": "Callout" + }, + { + "language": "TR", + "text": "Fare imlecinizi zaman makinelerinin üzerine getirin!", + "updated": 1636035197351 } ] }, @@ -119,7 +137,13 @@ { "language": "DE", "text": "Beachten Sie die Beschriftung auf der linken Seite, aus der hervorgeht, mit welchen Börsen und Märkten die Daten verbunden sind. Eine einzige Time Machine kann Daten von mehreren Märkten und mehreren Börsen enthalten!", - "updated": 1634206050433 + "updated": 1634206050433, + "style": "Text" + }, + { + "language": "TR", + "text": "Sol tarafta beliren ve verilerin hangi borsalar ve pazarlarla ilişkili olduğunu gösteren etikete dikkat edin. Tek bir zaman makinesi birden fazla pazardan ve birden fazla borsadan veri tutabilir!", + "updated": 1636035233840 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json index 348346ca9..08dc282de 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ok... vielleicht ist es nicht wirklich wie Raumkrümmung, aber habt Nachsicht mit mir... Du wirst begeistert sein, wie du Zeitmaschinen in jedes beliebige Format bringen kannst.", - "updated": 1634206247154 + "updated": 1634206247154, + "style": "Definition" + }, + { + "language": "TR", + "text": "Tamam,belki zamanı bükmek gibi değil, ama inan bana bu harika birşey... Zaman makinelerini istediğin formatta şekillendirebiliyor olmana bayılacaksın.", + "updated": 1636035360393 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Bewegen Sie Ihren Mauszeiger über einen der Ränder des türkisfarbenen Rahmens, der die Time Machine definiert, und sehen Sie, was passiert. Sehen Sie, wie der Rand gelb hervorgehoben wird?", - "updated": 1634206251264 + "updated": 1634206251264, + "style": "Text" + }, + { + "language": "TR", + "text": "Fare imlecinizi zaman makinesini tanımlayan turkuaz çerçevenin herhangi bir kenarının üzerine getirin ve ne olduğunu görün. Kenarın sarı ile nasıl vurgulandığını gördünüz mü?", + "updated": 1636035384197 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Sehr gut! Klicken Sie nun mit der linken Maustaste auf den Rahmen und ziehen Sie!", - "updated": 1634206263662 + "updated": 1634206263662, + "style": "Callout" + }, + { + "language": "TR", + "text": "Güzel! Şimdi çerçeveye tıklayın ve çekin!", + "updated": 1636035404981 } ] }, @@ -118,7 +136,13 @@ { "language": "DE", "text": "Auf diese Weise können Sie die Time Machines nach Ihren Wünschen gestalten.", - "updated": 1634206284213 + "updated": 1634206284213, + "style": "Note" + }, + { + "language": "TR", + "text": "Böylece zaman makinelerini kendi zevkinize veya ihtiyacınıza göre şekillendirebilirsiniz.", + "updated": 1636035425014 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json index 358a6a04d..70bf5d4f6 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Zusammenfassung: Wie wäre es, die Time Machine genau an das Seitenverhältnis Ihres Bildschirms anzupassen?", - "updated": 1634206350448 + "updated": 1634206350448, + "style": "Definition" + }, + { + "language": "TR", + "text": "Zaman makinesini ekranınızın tam en boy oranına göre şekillendirmeye ne dersiniz?", + "updated": 1636035470271 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Die Anpassung des Seitenverhältnisses Ihrer Zeitmaschinen an das Seitenverhältnis Ihres Bildschirms ist entscheidend dafür, dass die Diagramme beim Heranzoomen genau auf Ihren Bildschirm passen!", - "updated": 1634206368643 + "updated": 1634206368643, + "style": "Text" + }, + { + "language": "TR", + "text": "Zaman makinelerinizin en boy oranını ekranınızın en boy oranıyla eşleştirmek, yakınlaştırırken grafiklerin ekranınıza sığabilmesi için çok önemlidir!", + "updated": 1636035504803 } ], "updated": 1622198491208 @@ -91,7 +103,13 @@ { "language": "DE", "text": "Richten Sie Ihre Maus auf eine der Time Machines und drücken Sie Ctrl + Shift + Alt + Key-A. Machen Sie dasselbe mit der anderen Maschine!", - "updated": 1634206401027 + "updated": 1634206401027, + "style": "Callout" + }, + { + "language": "TR", + "text": "Farenizi zaman makinelerinden birine yönlendirin ve Ctrl + Shift + Alt + Key-A tuşlarına basın. Aynısını diğeriyle yapın!", + "updated": 1636035527567 } ] }, @@ -121,7 +139,13 @@ { "language": "DE", "text": "Lassen Sie die beiden Time Machines von nun an auf das Seitenverhältnis Ihres Bildschirms abgestimmt!", - "updated": 1634206411265 + "updated": 1634206411265, + "style": "Success" + }, + { + "language": "TR", + "text": "Şu andan itibaren ekranınızın en boy oranıyla eşleşen iki zaman makinesini görmen lazım.", + "updated": 1636035706936 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json index 4ab71e3d0..658581e37 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Bevor wir in die Tabellen eintauchen, noch eine Sache. Sie müssen wissen, wie Sie das Haus in Ordnung bringen können!", - "updated": 1634206589741 + "updated": 1634206589741, + "style": "Definition" + }, + { + "language": "TR", + "text": "Tablolara girmeden önce bir şey daha var. Bu alanı nasıl düzene sokacağını bilmelisin!", + "updated": 1636035747714 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Es wird die Zeit kommen, in der Sie vielleicht mit Dutzenden von Diagrammen arbeiten werden. Sie wissen bereits, wie Sie deren Format ändern können. Jetzt müssen Sie lernen, wie Sie die Diagramme verschieben können, damit Sie die gewünschten Arrangements erstellen können. Das ist ganz einfach:", - "updated": 1634206671224 + "updated": 1634206671224, + "style": "Text" + }, + { + "language": "TR", + "text": "Onlarca çizelge ile çalışmanız gereken zamanar gelecek. Biçimlerini nasıl değiştireceğinizi öğrenmiştik. Şimdi, ihtiyaç duyduğunuz düzenlemeleri oluşturabilmeniz için onları nasıl hareket ettireceğinizi öğrenmeniz gerekiyor. Oldukça kolay:", + "updated": 1636035803888 } ], "updated": 1616416902513 @@ -91,7 +103,13 @@ { "language": "DE", "text": "Drücken Sie die Shift, klicken Sie mit der linken Maustaste, und ziehen Sie!", - "updated": 1634206723517 + "updated": 1634206723517, + "style": "Callout" + }, + { + "language": "TR", + "text": "Shift 'e basın, sol tıklayın ve sürükleyin!", + "updated": 1636035874767 } ] }, @@ -120,7 +138,13 @@ { "language": "DE", "text": "Ich glaube, wir haben jetzt alles über die Verwaltung des Charting Space gesagt. Jetzt ist es Zeit, in die Diagramme einzutauchen!", - "updated": 1634206736658 + "updated": 1634206736658, + "style": "Success" + }, + { + "language": "TR", + "text": "Grafik alanını nasıl yöneteceğimizle ilgili her şeyi ele aldığımıza inanıyorum. Grafiklere dalmanın zamanı geldi!", + "updated": 1636035867318 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json index 1af9a5537..796a44aeb 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json @@ -30,7 +30,13 @@ { "language": "DE", "text": " Es ist an der Zeit, in eine Time Machine einzutauchen und zu sehen, was passiert! Sind Sie bereit für ein umfassendes, immersives Erlebnis?", - "updated": 1634207146163 + "updated": 1634207146163, + "style": "Definition" + }, + { + "language": "TR", + "text": "Bir Zaman Makinesine ( Time Machine ) dalıp ne olduğunu görmenin zamanı geldi! Tamamen sürükleyici bir deneyime hazır mısınız?", + "updated": 1636036023943 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Der Charting Space ist so etwas wie das Google Maps der Marktcharts. Wie Sie bereits wissen, können Sie mit der linken Maustaste klicken und ziehen, um sich in der im Charting Space zu bewegen... aber wie zoomen Sie hinein, um die Details zu sehen?", - "updated": 1634207179395 + "updated": 1634207179395, + "style": "Text" + }, + { + "language": "TR", + "text": "Grafik alanı, piyasa verilerinin Google Haritaları gibidir. Bildiğiniz gibi, haritalarda gezinmek için sol tıklayıp sürüklersiniz... ama detayları görmek için nasıl yakınlaştırıyorsunuz?", + "updated": 1636036084427 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Mit dem Rad der Maus! Probieren Sie es aus!", - "updated": 1634207215883 + "updated": 1634207215883, + "style": "Callout" + }, + { + "language": "TR", + "text": "Farenin tekerleği ile! Dene!", + "updated": 1636036095610 } ] }, @@ -119,7 +137,13 @@ { "language": "DE", "text": "Ganz genau! Genau wie in Google Maps! Zeigen Sie mit der Maus auf den Bereich, der Sie interessiert, und drehen Sie dann das Mausrad nach vorne, um hineinzuzoomen, und nach hinten, um herauszuzoomen! ", - "updated": 1634207338450 + "updated": 1634207338450, + "style": "Text" + }, + { + "language": "TR", + "text": "Aynen öyle! Tıpkı Google Haritalar'daki gibi! Fareyi ilgilenilen alana doğrultun, ardından yakınlaştırmak için farenin tekerleğini ileri, uzaklaştırmak için geri çevirin!", + "updated": 1636036116439 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json index 76e7fa684..a12599183 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ich weiß! Wenn Sie auf eine beliebige Stelle zoomen, ist es unwahrscheinlich, dass Sie die Karte im rechten Winkel zu Ihrem Bildschirm positionieren, oder? Keine Sorge... versuchen Sie diesen Trick!", - "updated": 1634207830054 + "updated": 1634207830054, + "style": "Definition" + }, + { + "language": "TR", + "text": "Biliyorum! Rastgele bir noktaya zum yapmak, grafiği ekranınızla kare şeklinde konumlandırmak pek mümkün değil, değil mi? Endişelenme... bu numarayı dene!", + "updated": 1636036151336 } ], "updated": 1616417516192 @@ -56,7 +62,13 @@ { "language": "DE", "text": "Stellen Sie das Seitenverhältnis ein: Zeigen Sie mit der Maus auf den Chart der Backtesting Session (den oberen) und drücken Sie Ctrl + Shift + Alt + Key-A", - "updated": 1634207859976 + "updated": 1634207859976, + "style": "List" + }, + { + "language": "TR", + "text": "En-boy oranını ayarlayın: Farenizi Backtesting Session grafiğine (üstteki) getirin ve Ctrl + Shift + Alt + Key-A tuşlarına basın", + "updated": 1636036205725 } ] }, @@ -79,7 +91,13 @@ { "language": "DE", "text": "Verkleinern: Benutzen Sie das Mausrad, um zur äußersten Verkleinerungsposition zu gelangen; nur von dieser Position aus funktioniert der nächste Befehl!", - "updated": 1634207868032 + "updated": 1634207868032, + "style": "List" + }, + { + "language": "TR", + "text": "Uzaklaştır: en uzak uzaklaştırma konumuna gitmek için fare tekerleğini kullanın; sadece bu konumdan sonraki komut çalışacaktır!", + "updated": 1636036274866 } ] }, @@ -108,7 +126,13 @@ { "language": "DE", "text": "Doppelklicken Sie einmal: Dies zentriert das Diagramm und bringt Sie zu einer bestimmten Zoomstufe; es wird ein Rand gelassen, damit der Name und die Registerkarte des Diagramms in die obere linke Ecke passen.", - "updated": 1634207894965 + "updated": 1634207894965, + "style": "List" + }, + { + "language": "TR", + "text": "Bir kez çift tıklayın: bu, grafiği ortalar ve sizi belirli bir yakınlaştırma düzeyine götürür; sol üst köşede grafiğin adına ve sekmesine uyacak şekilde bir kenar boşluğu bırakılır.", + "updated": 1636037063264 } ], "updated": 1616418234728 @@ -138,7 +162,13 @@ { "language": "DE", "text": "Ein weiterer Doppelklick: bringt Sie weiter in das Diagramm, bis zu einer Zoomstufe, in der das Diagramm perfekt auf den Bildschirm passt und die Layer Manager erscheinen.", - "updated": 1634207914480 + "updated": 1634207914480, + "style": "List" + }, + { + "language": "TR", + "text": "Tekrar çift tıklayın: bu sizi grafikte daha ileri götürür, grafiğin ekrana tam olarak oturduğu ve Katman Yöneticilerinin ortaya çıktığı yakınlaştırma düzeyine gidersiniz.", + "updated": 1636037090275 } ], "updated": 1622198926988 From bf0acdd0fef57cafd8cc55f975f0346a34150f34 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Thu, 4 Nov 2021 17:18:50 +0100 Subject: [PATCH 11/39] claims& governance --- .../C/Claim/Claim-Power/claim-power.json | 33 +++++ .../claim-votes-switch.json | 81 ++++++++++-- .../Claims/Claims-Program/claims-program.json | 117 ++++++++++++++++-- ...s-001-beta-11-claim-governance-system.json | 35 ++++-- 4 files changed, 232 insertions(+), 34 deletions(-) create mode 100644 Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json diff --git a/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json new file mode 100644 index 000000000..3eb4e45b4 --- /dev/null +++ b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json @@ -0,0 +1,33 @@ +{ + "type": "Claim Power", + "definition": { + "text": "Claim Power is the Token Power that goes into the Claims Program, and determines the number of tokens you are claiming with any of the existing types of claims: Position Contribution Claim, Feature Contribution Claim, and Asset Contribution Claim.", + "updated": 1624781372494, + "translations": [ + { + "language": "ES", + "text": "Claim Power (poder de la solicitud) es el Token Power que va al Claims Program, y determina el número de tokens que ha solicitado con cualquiera de los tipos existentes de solicitudes : Position Contribution Claim (Contribución de posición), Feature Contribution Claim Contribución de función), y Asset Contribution Claim( contribución de activo).", + "updated": 1636039210184 + } + ] + }, + "paragraphs": [ + { + "style": "Block", + "text": "Content", + "updated": 1624781499321 + }, + { + "style": "Callout", + "text": "Claim Power is the Token Power that goes into the Claims Program, and determines the number of tokens you are claiming with any of the existing types of claims: Position Contribution Claim, Feature Contribution Claim, and Asset Contribution Claim.", + "updated": 1630254492262, + "translations": [ + { + "language": "ES", + "text": "Claim Power es el Token Power los Claims Program, y determina el número de tokens que ha solicitado con cualquiera de los tipos existentes de solicitudes: Position Contribution Claim, Feature Contribution Claim, y Asset Contribution Claim.", + "updated": 1636039401303 + } + ] + } + ] +} \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Nodes/C/Claim/Claim-Votes-Switch/claim-votes-switch.json b/Projects/Governance/Schemas/Docs-Nodes/C/Claim/Claim-Votes-Switch/claim-votes-switch.json index 004e18f3a..c04b5eb92 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/C/Claim/Claim-Votes-Switch/claim-votes-switch.json +++ b/Projects/Governance/Schemas/Docs-Nodes/C/Claim/Claim-Votes-Switch/claim-votes-switch.json @@ -2,7 +2,14 @@ "type": "Claim Votes Switch", "definition": { "text": "Use this switch to spawn different types of Claim Votes, and to reference Claims Folder types of nodes within the Claims Program section of the User Profile hierarchy to map large structures of claims.", - "updated": 1630349853006 + "updated": 1630349853006, + "translations": [ + { + "language": "ES", + "text": "Use este switch abrir tipos diferentes de Claim Votes, y para referenciar tipos de nodos Claims Folder incluídos en el Claims Program en la sección de la jerarquía del User Profilepara mapear grandes estructuras de solicitudess.", + "updated": 1636039814895 + } + ] }, "paragraphs": [ { @@ -13,41 +20,97 @@ { "style": "Text", "text": "You may use this switch for three different purposes:", - "updated": 1630345326820 + "updated": 1630345326820, + "translations": [ + { + "language": "ES", + "text": "Puede usar este interruptor para tres propósitos diferentes:", + "updated": 1636039855908 + } + ] }, { "style": "List", "text": "As an organizational device: You may create arbitrary arrangements of votes, spawning more switches and votes.", - "updated": 1630345425238 + "updated": 1630345425238, + "translations": [ + { + "language": "ES", + "text": "Como un dispositivo organizacional: puede crear arbitrariamente arreglos de votos, desplegando más switches y votos.", + "updated": 1636040002945 + } + ] }, { "style": "List", "text": "As a switch: You may control the flow of Claim Support Power, pretty much like with the Token Power Switch, but within the Voting Program. If you need a reminder, read about how Token Power Flows.", - "updated": 1630355954531 + "updated": 1630355954531, + "translations": [ + { + "language": "ES", + "text": "Como un switch: Ypuede controlar el flujo del Claim Support Power, muy parecido al Token Power Switch, pero sin el Voting Program. Si necesita un recordatorio, lea como fluye el Token Power Flows.", + "updated": 1636040127007 + } + ] }, { "style": "List", "text": "As a data-structure mapper: Use the node to reference Claims Folder types of nodes to map entire structures of claims on other User Profile hierarchies.", - "updated": 1630345729468 + "updated": 1630345729468, + "translations": [ + { + "language": "ES", + "text": "Como mapeador de estructuras de datos: Use el nodo para referir Claims Foldertipo de nodo para mapear estructuras enteras de solicitudes, en otra jerarquía del User Profile.", + "updated": 1636040291714 + } + ] }, { "style": "Text", "text": "The first two use cases are self-explanatory. Let's explore the third one in more detail.", - "updated": 1630349876232 + "updated": 1630349876232, + "translations": [ + { + "language": "ES", + "text": "Los primeros dos casos de uso son autoexplicativo. Exploremos el tercer caso con más detalle.", + "updated": 1636040377996 + } + ] }, { "style": "Callout", "text": "Use a Claim Votes Switch node to establish a reference with a Claims Folder type of node — Position Claims Folder, Feature Claims Folder, or Asset Claims Folder — within the Claims Program section of your colleague's User Profile node. Then use the Install Missing Votes option on the menu of the Claim Votes Switch to map the entire Claims Folder! ", - "updated": 1630497475900 + "updated": 1630497475900, + "translations": [ + { + "language": "ES", + "text": "Use un nodo Claim Votes Switch para establecer la referencia de Claims Folde con un tipo de nodo — Position Claims Folder, Feature Claims Folder, o Asset Claims Folder — incluídos en la sección de Claims Program en el nodo del User Profile de un colega. Entonces use la opción de Install Missing Votes en el menú del Claim Votes Switch para mapear por completo el Claims Folder!", + "updated": 1636040586880 + } + ] }, { "style": "Note", - "text": "The process creates a Claim Votes Switch for each Claims Folder, and matching Claim Votes for each Asset Contribution Claim, Feature Contribution Claim, or Position Contribution Claim defined within each folder." + "text": "The process creates a Claim Votes Switch for each Claims Folder, and matching Claim Votes for each Asset Contribution Claim, Feature Contribution Claim, or Position Contribution Claim defined within each folder.", + "translations": [ + { + "language": "ES", + "text": "El proceso crea un Claim Votes Switch para cada Claims Folder, y emparejando Claim Votes fpara cada Asset Contribution Claim, Feature Contribution Claim, o Position Contribution Claim definida en cada carpeta.", + "updated": 1636040713515 + } + ] }, { "style": "Success", "text": "If something changes on the side of the definitions, you may always go back a run the Install Missing Votes process again. The process will remap the structure with the appropriate votes and switches.", - "updated": 1630348162382 + "updated": 1630348162382, + "translations": [ + { + "language": "ES", + "text": "Si algo cambia del lado de las definiciones, puede siempre retroceder yhacer correr nuevamente el proceso de Install Missing Votes . E proceso remapeará la estructura con los votos y los switches adecuados.", + "updated": 1636040878722 + } + ] }, { "style": "Block", diff --git a/Projects/Governance/Schemas/Docs-Nodes/C/Claims/Claims-Program/claims-program.json b/Projects/Governance/Schemas/Docs-Nodes/C/Claims/Claims-Program/claims-program.json index 28ac2d2c0..9b86bd498 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/C/Claims/Claims-Program/claims-program.json +++ b/Projects/Governance/Schemas/Docs-Nodes/C/Claims/Claims-Program/claims-program.json @@ -2,7 +2,14 @@ "type": "Claims Program", "definition": { "text": "When you contribute to Superalgos, you must produce a claim for your contribution, and you must harness the support of people working close to you, who will vouch or vote for your claims.", - "updated": 1630256293740 + "updated": 1630256293740, + "translations": [ + { + "language": "ES", + "text": "cuando contribuye con Superalgos, debe producir una solicitud por dicha contribución, y debeand you must aprovechar el apoyo de las personas que trabajan cerca de usted, quienes responderá o votará por sus solicitudes.", + "updated": 1636041066589 + } + ] }, "paragraphs": [ { @@ -13,15 +20,36 @@ { "style": "Important", "text": "Governance is decentralized. There is no central authority controlling who contributes what or what rewards contributors get. Instead, the project delegates in the Community the capacity to establish the value of contributions and to determine who contributed what.", - "updated": 1630256982050 + "updated": 1630256982050, + "translations": [ + { + "language": "ES", + "text": "La gobernanza es descentralizada. No hay una autoridad central controlando quien contribuye queo que recompensas reciben los contribuyentes. En lugar de eso, el proyecto delega en la comunidad la capacidad de establecer el valor de las contribuciones y de determinar quien contribuye que.", + "updated": 1636041621066 + } + ] }, { "style": "Text", - "text": "As such, governance is a social system. When you get involved with Superalgos, you interact with the Community and find ways to contribute. While doing so, you relate to or associate with community members that have similar interests or are focused on the same areas of the project you may be working in. It is these people that will vouch for your claims!" + "text": "As such, governance is a social system. When you get involved with Superalgos, you interact with the Community and find ways to contribute. While doing so, you relate to or associate with community members that have similar interests or are focused on the same areas of the project you may be working in. It is these people that will vouch for your claims!", + "translations": [ + { + "language": "ES", + "text": "Como tal, la gobernanza es un sistema social. Cuando se involucra con Superalgos, interactúa con la comunidad y encuentra modos de contribuir. Mientras hace eso, entra en relación o se asocia con miembros de la comunidad que tienen intereses similares o que están focalizados en las mismas áreas del proyecto en las que está trabajando. Esta es la gente que los respaldará en sus solicitudes!", + "updated": 1636041930754 + } + ] }, { "style": "Text", - "text": "There are three different types of claims you may place: " + "text": "There are three different types of claims you may place: ", + "translations": [ + { + "language": "ES", + "text": "Hay tres tipos diferentes de solicitudes que puede realizar:", + "updated": 1636041961553 + } + ] }, { "style": "List", @@ -38,7 +66,14 @@ }, { "style": "Text", - "text": "There are also three different folder types of nodes that act as organizational devices from which you may spawn the above claim nodes:" + "text": "There are also three different folder types of nodes that act as organizational devices from which you may spawn the above claim nodes:", + "translations": [ + { + "language": "ES", + "text": "También hay tres tipos de carpetas de nodos diferentes que actúan como dispositivos organizativos a partir de los cuales puede generar los nodos de solicitudes anteriores.:", + "updated": 1636042005643 + } + ] }, { "style": "List", @@ -56,7 +91,14 @@ }, { "style": "Text", - "text": "These three types of claims match the three types of definition hierarchies used to describe the project:" + "text": "These three types of claims match the three types of definition hierarchies used to describe the project:", + "translations": [ + { + "language": "ES", + "text": "Estos tres tipos de declaraciones coinciden con los tres tipos de jerarquías de definición que se utilizan para describir el proyecto:", + "updated": 1636042035723 + } + ] }, { "style": "List", @@ -73,35 +115,84 @@ { "style": "Callout", "text": "To place a claim, use the appropriate type of contribution claim node to reference the matching type of definition. For example, use an Asset Contribution Claim node to reference an Asset node within an Assets hierarchy. When you do that, you are effectively placing a claim on that asset.", - "updated": 1630323960334 + "updated": 1630323960334, + "translations": [ + { + "language": "ES", + "text": "Para colocar un reclamo, use el tipo apropiado de nodo de reclamo de contribución para hacer referencia al tipo de definición coincidente.Por ejemplo, use un nodo de Asset Contribution Claim para referenciar un nodo de Asset node con una jerarquía Assets. Cuando hace esto, está efectivamente colocando una solicituda en dicho asset.", + "updated": 1636042322243 + } + ] }, { "style": "Note", - "text": "This claim means that you declare that you have worked on that asset, either creating or improving it, and that you expect to be rewarded accordingly." + "text": "This claim means that you declare that you have worked on that asset, either creating or improving it, and that you expect to be rewarded accordingly.", + "translations": [ + { + "language": "ES", + "text": "Esta afirmación significa que declara que ha trabajado en ese activo, ya sea creándolo o mejorándolo, y que espera ser recompensado en consecuencia.", + "updated": 1636042350532 + } + ] }, { "style": "Text", "text": "How a claim is resolved depends on three interrelated concepts:", - "updated": 1630256564789 + "updated": 1630256564789, + "translations": [ + { + "language": "ES", + "text": "La forma en que se resuelve una reclamación depende de tres conceptos interrelacionados:", + "updated": 1636042384399 + } + ] }, { "style": "List", "text": "The Claim Power you drive into the node that places the claim.", - "updated": 1630256658386 + "updated": 1630256658386, + "translations": [ + { + "language": "ES", + "text": "El Claim Power que dirija hacia el nodo que coloca la solicitud.", + "updated": 1636042424716 + } + ] }, { "style": "List", - "text": "The Claim Votes your claim gets from other users, and the Voting Power they drive into those votes." + "text": "The Claim Votes your claim gets from other users, and the Voting Power they drive into those votes.", + "translations": [ + { + "language": "ES", + "text": "Los Claim Votes que su solicitud obtenga de otros usuarios, y el Voting Power ellos dirijen a esos votos.", + "updated": 1636042491572 + } + ] }, { "style": "List", "text": "The Token Rewards available within the definition node you are claiming.", - "updated": 1630256728009 + "updated": 1630256728009, + "translations": [ + { + "language": "ES", + "text": "LasToken Rewards disponibles con la definición del nodo que ha presentado la solicitud.", + "updated": 1636042546324 + } + ] }, { "style": "Success", "text": "To learn all the details about claims resolution, read the How Claims are Resolved page in the Governance Flow topic of The Governance Project book.", - "updated": 1630257166423 + "updated": 1630257166423, + "translations": [ + { + "language": "ES", + "text": "Para aprender estos detalles acerca de las claims resolution, leer la página How Claims are Resolved (como se resuelven las solicitudes)en el topico del flujo de gobernanza del libro Governance Project.", + "updated": 1636042664873 + } + ] }, { "style": "Text", diff --git a/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json b/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json index 6f08ed864..b20cea307 100644 --- a/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json +++ b/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json @@ -8,8 +8,9 @@ "translations": [ { "language": "ES", - "text": "La gobernanza del proyecto de Superalgos Project es distribuída sentre todos los miembros de la Superalgos Community que deseen participar. El Governance System ( sistema de gobernanza) seconstruye en la Superalgos Platform, por lo que participar es bastante sencillo.", - "updated": 1633533118734 + "text": "La gobernanza del proyecto de Superalgos Project es distribuída entre todos los miembros de la Superalgos Community que deseen participar. El Governance System ( sistema de gobernanza) se construye en la Superalgos Platform, por lo que es bastante sencillo participar.", + "updated": 1636038871200, + "style": "Definition" } ] }, @@ -30,7 +31,8 @@ { "language": "ES", "text": "Para participar en la gobernanza, los miembros de la comunidad, promedian su tentencia de Superalgos SA Token, ejerciendo una influencia proporcional a su Token Power. La influencia combinada de todos los que tienen token participando en la gobernanza determina como el token se distribuye encada liberación.", - "updated": 1633533342249 + "updated": 1633533342249, + "style": "Text" } ] }, @@ -41,7 +43,8 @@ { "language": "ES", "text": "Aún cuando no tenga tokens para comenzar, la comunidad delegará Token Power a su profile para que pueda comenzar!", - "updated": 1633533429717 + "updated": 1633533429717, + "style": "Success" } ] }, @@ -57,7 +60,8 @@ { "language": "ES", "text": "Qué Positions, Features, Assets, o actividades de desarrollo del proyecto, en general, son incentivados y cómo.", - "updated": 1633533525021 + "updated": 1633533525021, + "style": "List" } ] }, @@ -68,7 +72,8 @@ { "language": "ES", "text": "Qué Contribuyentes son recompensados y por cuáles contribuciones.", - "updated": 1633533586785 + "updated": 1633533586785, + "style": "List" } ] }, @@ -79,7 +84,8 @@ { "language": "ES", "text": "Qué Programs son creados y cómo.", - "updated": 1633533612445 + "updated": 1633533612445, + "style": "List" } ] }, @@ -90,7 +96,8 @@ { "language": "ES", "text": "La gobernanza está diseñada como un sistema flexible que la comunidad dinámicamente dirija influencia en direcciones arbitrarias.", - "updated": 1633533779710 + "updated": 1633533779710, + "style": "Text" } ] }, @@ -106,7 +113,8 @@ { "language": "ES", "text": "Una Community comprometida en la gobernanza es crucial para el desarrollo del proyecto, por lo tanto se incentiva la participación. En otras palabras, ganará Superalgos SA Tokens simplemente por ser parte de la gobernanza de Superalgos.", - "updated": 1633542770033 + "updated": 1633542770033, + "style": "Text" } ] }, @@ -117,7 +125,8 @@ { "language": "ES", "text": "El sistema permite que la gobernanza evolucione con el proyecto. Tambien motiva a la innovación sin permiso, ya que los contribuyentes pueden proponer nuevas áreas de desarrollo y manejar a la comunidad para que se motive para expandir nuevas lineas.", - "updated": 1633543011570 + "updated": 1633543011570, + "style": "Text" } ] }, @@ -132,7 +141,8 @@ { "language": "ES", "text": "El sistema de gobierno fue construído sobre los bocetos de un nuevo proyecto de Software incluído en el código de base de Superalgos.", - "updated": 1633543179992 + "updated": 1633543179992, + "style": "Text" } ] }, @@ -143,7 +153,8 @@ { "language": "ES", "text": "Los siguientes programas de Governance Programs fueron desarrollados en este tiempo:", - "updated": 1633543245169 + "updated": 1633543245169, + "style": "Text" } ] }, From d5a7adee8a123ba1fda72712d8b4fbcaee3f9f56 Mon Sep 17 00:00:00 2001 From: Raplh2502 Date: Thu, 4 Nov 2021 23:21:51 +0100 Subject: [PATCH 12/39] add trend intensity to Weighted EMA cross DM --- .../Weighted EMA cross strategy.json | 6970 +++++++++++++++-- 1 file changed, 6326 insertions(+), 644 deletions(-) diff --git a/Projects/Data-Mining/Plugins/Data-Mines/Weighted EMA cross strategy.json b/Projects/Data-Mining/Plugins/Data-Mines/Weighted EMA cross strategy.json index 632836900..a88077051 100644 --- a/Projects/Data-Mining/Plugins/Data-Mines/Weighted EMA cross strategy.json +++ b/Projects/Data-Mining/Plugins/Data-Mines/Weighted EMA cross strategy.json @@ -26,15 +26,15 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Market MBO", "project": "Foundations", - "id": "6971d576-8871-4776-8d23-f1d3d514332d", + "id": "b7059345-37cb-4e17-af14-e997fed08797", "savedPayload": { "position": { - "x": 7102.444654158541, - "y": 12513.530878232032 + "x": 8233.105128254463, + "y": 13896.024474025693 }, "targetPosition": { - "x": 7141.267510923919, - "y": 12658.419752175392 + "x": 8382.283412559704, + "y": 13911.703743515842 }, "floatingObject": { "isPinned": false, @@ -50,7 +50,7 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Market", - "id": "5f8f7770-5174-4e13-8c73-4e6c8811987b" + "id": "11140d3f-6121-4bf7-9c2c-a7ee18b4f819" }, "referenceParentCombinedNodePath": [ [ @@ -79,23 +79,81 @@ ] ] } + }, + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Market EMAs", + "project": "Foundations", + "id": "be0c8c42-1ab7-45c3-99b9-0bfa833829b8", + "savedPayload": { + "position": { + "x": 8470.451200403575, + "y": 13790.3511943596 + }, + "targetPosition": { + "x": 8382.283412559704, + "y": 13911.703743515842 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "aa281954-7b77-453f-bcf5-6934a7253827" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Mean Breakout", + "Indicator Bot", + "Data-Mining", + "978e5aa4-470e-48c2-adfc-8a4bb3dc85e1" + ], + [ + "EMAs", + "Product Definition", + "Foundations", + "1c06c9e7-971c-440f-9360-fa85809ea6d3" + ], + [ + "Multi-Time-Frame-Market", + "Dataset Definition", + "Foundations", + "a447c51c-de05-447e-93fe-ef0fa6b3b50c" + ] + ] + } } ], "outputDatasetFolders": [], - "id": "1896d804-75e3-4f58-af4a-e2cee5ef34f4", + "id": "92cf13c2-b7f5-4359-a52a-8b0083a8e704", "savedPayload": { "position": { - "x": 7141.267510923919, - "y": 12658.419752175392 + "x": 7213.283412559704, + "y": 12572.703743515842 }, "targetPosition": { - "x": 7180.090367689297, - "y": 12803.308626118753 + "x": 7274.293909021074, + "y": 12709.735562162232 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 2, "distanceToParent": 2, "arrangementStyle": 0 @@ -115,15 +173,15 @@ "name": "Mean Breakout Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "6f08d7d1-4bf9-45c6-8cf6-7a884fb9cd67", + "id": "28b359cd-7caa-4ed7-8b22-c9ed7c84f8e5", "savedPayload": { "position": { - "x": 7068.939963905102, - "y": 12280.38708979494 + "x": 7082.709000358152, + "y": 12210.639811644092 }, "targetPosition": { - "x": 7257.736081220053, - "y": 12513.530878232032 + "x": 7305.6524480013695, + "y": 12411.37899355175 }, "floatingObject": { "isPinned": false, @@ -139,7 +197,7 @@ "referenceParent": { "type": "Status Report", "name": "MBO", - "id": "d1f9fd44-30b5-471f-92bf-d6a76d232646" + "id": "08935813-b948-402f-9eda-9db80723125a" }, "referenceParentCombinedNodePath": [ [ @@ -174,15 +232,15 @@ "name": "Candles Volumes Multi-Time-Frame-Market", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "3e8417de-7dae-44ca-9738-3db54c58b0e0", + "id": "e9f0e9f9-e46b-4a0f-8ffe-4b6a2cad661b", "savedPayload": { "position": { - "x": 7242.03529434717, - "y": 12213.942017805659 + "x": 7243.278940756041, + "y": 12117.93471333161 }, "targetPosition": { - "x": 7257.736081220053, - "y": 12513.530878232032 + "x": 7305.6524480013695, + "y": 12411.37899355175 }, "floatingObject": { "isPinned": false, @@ -234,15 +292,15 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Market", "project": "Foundations", - "id": "36f92613-e6a5-4c84-9e1a-4b1b240297ab", + "id": "9cacb139-175f-46e4-a4d7-76d5a20757e9", "savedPayload": { "position": { - "x": 7421.127791724562, - "y": 12261.929707848405 + "x": 7427.67344092411, + "y": 12137.31535625897 }, "targetPosition": { - "x": 7257.736081220053, - "y": 12513.530878232032 + "x": 7305.6524480013695, + "y": 12411.37899355175 }, "floatingObject": { "isPinned": false, @@ -292,15 +350,15 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Market", "project": "Foundations", - "id": "6fae4c2a-d7d8-4e20-b559-c0504767ac67", + "id": "a089c8df-d029-4688-8a58-1315531725c8", "savedPayload": { "position": { - "x": 7537.8102091692135, - "y": 12406.020493368442 + "x": 7565.460069136701, + "y": 12261.37899355175 }, "targetPosition": { - "x": 7257.736081220053, - "y": 12513.530878232032 + "x": 7305.6524480013695, + "y": 12411.37899355175 }, "floatingObject": { "isPinned": false, @@ -348,15 +406,15 @@ } ], "dataMineDataDependencies": [], - "id": "7452ca29-0e7f-4579-83f4-1a4f005dcce2", + "id": "8cb23374-4fc8-4f9d-a70b-6a96f2bab6a9", "savedPayload": { "position": { - "x": 7257.736081220053, - "y": 12513.530878232032 + "x": 7305.6524480013695, + "y": 12411.37899355175 }, "targetPosition": { - "x": 7180.090367689297, - "y": 12803.308626118753 + "x": 7274.293909021074, + "y": 12709.735562162232 }, "floatingObject": { "isPinned": false, @@ -375,15 +433,15 @@ "type": "Status Report", "name": "MBO", "project": "Foundations", - "id": "d1f9fd44-30b5-471f-92bf-d6a76d232646", + "id": "08935813-b948-402f-9eda-9db80723125a", "savedPayload": { "position": { - "x": 7392.222402045261, - "y": 12591.176591762789 + "x": 7450.629484708816, + "y": 12467.030463849747 }, "targetPosition": { - "x": 7180.090367689297, - "y": 12803.308626118753 + "x": 7274.293909021074, + "y": 12709.735562162232 }, "floatingObject": { "isPinned": false, @@ -402,15 +460,15 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "fa0591b3-b728-4185-9fce-04969569b412", + "id": "f476cbcb-d0ee-4623-803b-7f487a09bf49", "savedPayload": { "position": { - "x": 7469.868115576017, - "y": 12725.662912587997 + "x": 7548.357546313854, + "y": 12587.714569239492 }, "targetPosition": { - "x": 7180.090367689297, - "y": 12803.308626118753 + "x": 7274.293909021074, + "y": 12709.735562162232 }, "floatingObject": { "isPinned": false, @@ -460,15 +518,15 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "907541bf-f29d-41da-82ef-9394d198ccf6", + "id": "d3b56aa3-ed6e-415b-8b73-e7465da9f94b", "savedPayload": { "position": { - "x": 7469.868115576017, - "y": 12880.954339649508 + "x": 7572.650477631556, + "y": 12741.094101142528 }, "targetPosition": { - "x": 7180.090367689297, - "y": 12803.308626118753 + "x": 7274.293909021074, + "y": 12709.735562162232 }, "floatingObject": { "isPinned": false, @@ -483,11 +541,11 @@ } } }, - "id": "c73e506a-720b-4caa-bee4-1129c3a55e18", + "id": "ddaef703-ecd4-4124-a80f-ab9306d8bd2c", "savedPayload": { "position": { - "x": 7310.090367689297, - "y": 12740.308626118753 + "x": 7274.293909021074, + "y": 12709.735562162232 }, "targetPosition": { "x": 7097.958333333332, @@ -520,15 +578,15 @@ "type": "Output Dataset", "name": "Multi-Time-Frame-Daily MBO", "project": "Foundations", - "id": "b885d7fb-42b9-47f8-9db4-da1e7e07d86a", + "id": "c70d2bd9-a944-4e5e-aed8-142dd8af95fd", "savedPayload": { "position": { - "x": 8503.958333333332, - "y": 11919.21017593339 + "x": 7607.929060976112, + "y": 11609.507993632371 }, "targetPosition": { - "x": 8203.958333333332, - "y": 12438.825418204053 + "x": 7793.33925760108, + "y": 12180.141903409463 }, "floatingObject": { "isPinned": false, @@ -544,7 +602,7 @@ "referenceParent": { "type": "Dataset Definition", "name": "Multi-Time-Frame-Daily", - "id": "ff180851-6492-4510-a66c-e93b29775c09" + "id": "8f9472fc-07b9-4cd3-9084-6002a185ab4a" }, "referenceParentCombinedNodePath": [ [ @@ -573,23 +631,81 @@ ] ] } + }, + { + "type": "Output Dataset", + "name": "Multi-Time-Frame-Daily EMAs", + "project": "Foundations", + "id": "cf5434a7-5501-4629-873b-590b3819d26e", + "savedPayload": { + "position": { + "x": 8194.817621416394, + "y": 11734.255008123027 + }, + "targetPosition": { + "x": 7793.33925760108, + "y": 12180.141903409463 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "8d18e878-69c5-40c7-9462-6a0297c2039c" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Mean Breakout", + "Indicator Bot", + "Data-Mining", + "978e5aa4-470e-48c2-adfc-8a4bb3dc85e1" + ], + [ + "EMAs", + "Product Definition", + "Foundations", + "1c06c9e7-971c-440f-9360-fa85809ea6d3" + ], + [ + "Multi-Time-Frame-Daily", + "Dataset Definition", + "Foundations", + "e6d71153-7a5d-42c6-ad3d-755d11b9c6ba" + ] + ] + } } ], "outputDatasetFolders": [], - "id": "0209e612-70e4-4842-bc4a-d42f7ca382c8", + "id": "fdd4fae0-ca4a-40ff-8272-461dfdd84e1b", "savedPayload": { "position": { - "x": 8203.958333333332, - "y": 12438.825418204053 + "x": 7793.33925760108, + "y": 12180.141903409463 }, "targetPosition": { - "x": 7903.958333333332, - "y": 12958.440660474716 + "x": 7668.5922431104245, + "y": 12767.030463849747 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 @@ -609,7 +725,7 @@ "name": "Mean Breakout Multi-Time-Frame-Daily", "config": "{\n \"mainUtility\": \"Self Reference\"\n}", "project": "Foundations", - "id": "568a9a37-4612-410b-9f38-858b7d1e152b", + "id": "abb3ff57-e33a-4b14-94a1-e27c79da83fc", "savedPayload": { "position": { "x": 8723.573575603996, @@ -633,7 +749,7 @@ "referenceParent": { "type": "Status Report", "name": "MBO", - "id": "58ad06f7-b4a5-49da-9ba3-c59b18485800" + "id": "38f46123-4573-41ed-865f-a96d8e8cdb83" }, "referenceParentCombinedNodePath": [ [ @@ -668,7 +784,7 @@ "name": "", "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", "project": "Foundations", - "id": "184478bc-72af-4b46-a6d5-5ff1405d2d8e", + "id": "09820a7a-a95b-4ee6-8fe8-2a8f5679c3c2", "savedPayload": { "position": { "x": 8847.837644315925, @@ -727,7 +843,7 @@ "name": "Exchange Raw Data Historic-OHLCVs", "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", "project": "Foundations", - "id": "a2ba5a3a-eb14-4a7a-b23b-adfde1b86fb3", + "id": "4f9fb973-ef2f-4be6-8f29-c462bf02b682", "savedPayload": { "position": { "x": 8943.18881787466, @@ -787,7 +903,7 @@ "type": "Data Dependency", "name": "Candles Multi-Time-Frame-Daily", "project": "Foundations", - "id": "ef9764e6-c427-4fc8-92e8-a7fc8324950b", + "id": "951541a0-a74a-410f-ad72-bfe0c5e32b9e", "savedPayload": { "position": { "x": 9003.129071377436, @@ -845,7 +961,7 @@ "type": "Data Dependency", "name": "Volumes Multi-Time-Frame-Daily", "project": "Foundations", - "id": "69b08895-908b-4275-a084-2e07d6fe1515", + "id": "866ea680-477e-4e23-8461-a393c8143e97", "savedPayload": { "position": { "x": 9023.573575603996, @@ -901,15 +1017,15 @@ } ], "dataMineDataDependencies": [], - "id": "4612edb1-5c54-4ba0-82ef-a2c4dbaf9bed", + "id": "71b98fa9-09ca-4037-892a-984bcab3e372", "savedPayload": { "position": { - "x": 8423.573575603996, - "y": 12658.440660474716 + "x": 8070.070606925739, + "y": 12321.143568563311 }, "targetPosition": { - "x": 7903.958333333332, - "y": 12958.440660474716 + "x": 7668.5922431104245, + "y": 12767.030463849747 }, "floatingObject": { "isPinned": false, @@ -928,15 +1044,15 @@ "type": "Status Report", "name": "MBO", "project": "Foundations", - "id": "58ad06f7-b4a5-49da-9ba3-c59b18485800", + "id": "38f46123-4573-41ed-865f-a96d8e8cdb83", "savedPayload": { "position": { - "x": 8203.958333333332, - "y": 12958.440660474716 + "x": 7953.909197998971, + "y": 12674.325365537263 }, "targetPosition": { - "x": 7903.958333333332, - "y": 12958.440660474716 + "x": 7668.5922431104245, + "y": 12767.030463849747 }, "floatingObject": { "isPinned": false, @@ -955,15 +1071,15 @@ "type": "Execution Started Event", "name": "", "project": "Foundations", - "id": "017b7dea-552b-407d-83d0-8ba2f1296f24", + "id": "77d0eeec-5abf-4b45-bd4f-2a31eb830332", "savedPayload": { "position": { - "x": 8163.765954468664, - "y": 13108.440660474716 + "x": 7962.0365233305665, + "y": 12829.403971095075 }, "targetPosition": { - "x": 7903.958333333332, - "y": 12958.440660474716 + "x": 7668.5922431104245, + "y": 12767.030463849747 }, "floatingObject": { "isPinned": false, @@ -1013,15 +1129,15 @@ "type": "Execution Finished Event", "name": "New Execution Finished Event", "project": "Foundations", - "id": "e4a46778-a093-430c-884c-7175c2085baa", + "id": "88570f0b-33c6-4984-8336-4d7f3d76ef5e", "savedPayload": { "position": { - "x": 8053.958333333332, - "y": 13218.248281610047 + "x": 7891.5356907536425, + "y": 12967.769645757406 }, "targetPosition": { - "x": 7903.958333333332, - "y": 12958.440660474716 + "x": 7668.5922431104245, + "y": 12767.030463849747 }, "floatingObject": { "isPinned": false, @@ -1036,20 +1152,20 @@ } } }, - "id": "6dabdded-07ec-4df7-90e9-0fb6143b9f92", + "id": "273c3f25-15af-4833-8a33-378d57d2a353", "savedPayload": { "position": { - "x": 7903.958333333332, - "y": 12958.440660474716 + "x": 7668.5922431104245, + "y": 12767.030463849747 }, "targetPosition": { "x": 7097.958333333332, "y": 12952.440660474716 }, "floatingObject": { - "isPinned": true, + "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 2, "distanceToParent": 5, "arrangementStyle": 0 @@ -1072,15 +1188,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": "5f8f7770-5174-4e13-8c73-4e6c8811987b", + "id": "11140d3f-6121-4bf7-9c2c-a7ee18b4f819", "savedPayload": { "position": { - "x": 7860.61613813509, - "y": 13200.243202740558 + "x": 7889.991413134877, + "y": 12826.99494441183 }, "targetPosition": { - "x": 7416.156384867279, - "y": 13270.638712008662 + "x": 7525.933765666151, + "y": 13091.498307943442 }, "floatingObject": { "isPinned": false, @@ -1100,15 +1216,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": "ff180851-6492-4510-a66c-e93b29775c09", + "id": "8f9472fc-07b9-4cd3-9084-6002a185ab4a", "savedPayload": { "position": { - "x": 7817.109320752044, - "y": 13474.934436891457 + "x": 7975.933765666151, + "y": 13091.498307943442 }, "targetPosition": { - "x": 7416.156384867279, - "y": 13270.638712008662 + "x": 7525.933765666151, + "y": 13091.498307943442 }, "floatingObject": { "isPinned": false, @@ -1139,15 +1255,15 @@ "name": "New Formula", "code": "record.current.begin", "project": "Foundations", - "id": "85fdbb50-387e-4006-8dc5-1030f1ea5adf", + "id": "dfce95f3-c330-4b06-96d6-f1ea22a100f9", "savedPayload": { "position": { - "x": 8482.03754370542, - "y": 13918.937167462045 + "x": 8497.667034902732, + "y": 14019.584694161898 }, "targetPosition": { - "x": 8262.940974014571, - "y": 13970.139639567427 + "x": 8273.360634812778, + "y": 14037.237990700663 }, "floatingObject": { "isPinned": false, @@ -1162,347 +1278,11 @@ } } }, - "id": "da245407-f774-43d6-8028-af39b1c86abf", + "id": "4a267a0b-4ae1-40fb-b80b-38c720c307d6", "savedPayload": { "position": { - "x": 8262.940974014571, - "y": 13970.139639567427 - }, - "targetPosition": { - "x": 7824.747834632871, - "y": 14072.544583778194 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Record Property", - "name": "End", - "config": "{\n \"codeName\": \"end\",\n \"isString\": false,\n \"isCalculated\": false\n}", - "project": "Foundations", - "recordFormula": { - "type": "Record Formula", - "name": "New Formula", - "code": "record.current.end", - "project": "Foundations", - "id": "450e5456-e1a6-4360-bd85-fe8888441516", - "savedPayload": { - "position": { - "x": 8499.698560210409, - "y": 14080.700443166144 - }, - "targetPosition": { - "x": 8274.714985017896, - "y": 14077.98182337016 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "68de3b60-3837-4775-b26f-1c4e451c8174", - "savedPayload": { - "position": { - "x": 8274.714985017896, - "y": 14077.98182337016 - }, - "targetPosition": { - "x": 7824.747834632871, - "y": 14072.544583778194 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Record Property", - "name": "EMA p1", - "config": "{\n \"codeName\": \"ema1\",\n \"isString\": false,\n \"isCalculated\": false\n}", - "project": "Foundations", - "recordFormula": { - "type": "Record Formula", - "name": "New Record Formula", - "code": "variable.EMAp1", - "project": "Foundations", - "id": "5e371f92-9f35-4fd6-b0f2-29c929a7900e", - "savedPayload": { - "position": { - "x": 8478.133893890892, - "y": 14241.98972996796 - }, - "targetPosition": { - "x": 8260.338540804885, - "y": 14185.508014571371 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "f5321183-dc1a-4139-8c54-ace6acc0f081", - "savedPayload": { - "position": { - "x": 8260.338540804885, - "y": 14185.508014571371 - }, - "targetPosition": { - "x": 7824.747834632871, - "y": 14072.544583778194 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Record Property", - "name": "EMA p2", - "config": "{\n \"codeName\": \"ema2\",\n \"isString\": false,\n \"isCalculated\": false\n}", - "project": "Foundations", - "recordFormula": { - "type": "Record Formula", - "name": "New Record Formula", - "code": "variable.EMAp2", - "project": "Foundations", - "id": "7e9bdf0d-1ab1-4cda-8c4f-04645353e0ec", - "savedPayload": { - "position": { - "x": 8418.596804768997, - "y": 14393.431480781272 - }, - "targetPosition": { - "x": 8220.647148056954, - "y": 14286.469181780245 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "fbc3d5b0-a2c7-4aaa-984c-49f0415e7262", - "savedPayload": { - "position": { - "x": 8220.647148056954, - "y": 14286.469181780245 - }, - "targetPosition": { - "x": 7824.747834632871, - "y": 14072.544583778194 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Record Property", - "name": "EMA p3", - "config": "{\n \"codeName\": \"ema3\",\n \"isString\": false,\n \"isCalculated\": false\n}", - "project": "Foundations", - "recordFormula": { - "type": "Record Formula", - "name": "New Record Formula", - "code": "variable.EMAp3", - "project": "Foundations", - "id": "99facb45-c592-4af3-9d67-aef64da4cd3d", - "savedPayload": { - "position": { - "x": 8324.547372055964, - "y": 14526.224451517177 - }, - "targetPosition": { - "x": 8157.9475262482665, - "y": 14374.997828937516 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "4aafd37e-4509-4d77-bc15-28bfc245e5ae", - "savedPayload": { - "position": { - "x": 8157.9475262482665, - "y": 14374.997828937516 - }, - "targetPosition": { - "x": 7824.747834632871, - "y": 14072.544583778194 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Record Property", - "name": "EMA p4", - "config": "{\n \"codeName\": \"ema4\",\n \"isString\": false,\n \"isCalculated\": false\n}", - "project": "Foundations", - "recordFormula": { - "type": "Record Formula", - "name": "New Record Formula", - "code": "variable.EMAp4", - "project": "Foundations", - "id": "a2bf9d40-f1c5-4331-aec6-01102eb8fbda", - "savedPayload": { - "position": { - "x": 8201.451406925304, - "y": 14632.651197399315 - }, - "targetPosition": { - "x": 8075.883549494492, - "y": 14445.948992858941 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "285a8b13-3aca-4ea4-8535-cc40178ce16e", - "savedPayload": { - "position": { - "x": 8075.883549494492, - "y": 14445.948992858941 - }, - "targetPosition": { - "x": 7824.747834632871, - "y": 14072.544583778194 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Record Property", - "name": "EMA p5", - "config": "{\n \"codeName\": \"ema5\",\n \"isString\": false,\n \"isCalculated\": false\n}", - "project": "Foundations", - "recordFormula": { - "type": "Record Formula", - "name": "New Record Formula", - "code": "variable.EMAp5", - "project": "Foundations", - "id": "2916df6b-717e-4700-8bee-c9650ad90635", - "savedPayload": { - "position": { - "x": 8056.4627994347775, - "y": 14706.526582802497 - }, - "targetPosition": { - "x": 7979.224477834142, - "y": 14495.199249794396 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 2, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "4f36f755-37fa-4858-8a66-49308e0ae345", - "savedPayload": { - "position": { - "x": 7979.224477834142, - "y": 14495.199249794396 + "x": 8273.360634812778, + "y": 14037.237990700663 }, "targetPosition": { "x": 7824.747834632871, @@ -1531,15 +1311,15 @@ "name": "New Record Formula", "code": "variable.MBO1", "project": "Foundations", - "id": "76033b75-c945-420a-b149-fb54a53594ef", + "id": "ebd3e7e0-445d-434c-a411-6532d21a0684", "savedPayload": { "position": { - "x": 7898.007760439593, - "y": 14743.557238853187 + "x": 8466.7109831321, + "y": 14281.131054981282 }, "targetPosition": { - "x": 7873.5877851706855, - "y": 14519.88635382819 + "x": 8252.72326696569, + "y": 14211.60223124692 }, "floatingObject": { "isPinned": false, @@ -1554,11 +1334,11 @@ } } }, - "id": "9f0b8687-5c28-4ae4-9918-b0b394dad50e", + "id": "472ad8b3-c377-43b5-9700-615979dfe921", "savedPayload": { "position": { - "x": 7873.5877851706855, - "y": 14519.88635382819 + "x": 8252.72326696569, + "y": 14211.60223124692 }, "targetPosition": { "x": 7824.747834632871, @@ -1587,15 +1367,15 @@ "name": "New Record Formula", "code": "variable.MBO2", "project": "Foundations", - "id": "10689c1e-b54b-4bcc-9c86-e17f78e12704", + "id": "67f5f5d4-4b6e-4755-a94b-71cdad1906a4", "savedPayload": { "position": { - "x": 7735.295120845517, - "y": 14741.591078422682 + "x": 8338.021861412892, + "y": 14510.922016401068 }, "targetPosition": { - "x": 7765.1126921079685, - "y": 14518.575580207853 + "x": 8166.930519152885, + "y": 14364.796205526776 }, "floatingObject": { "isPinned": false, @@ -1610,11 +1390,11 @@ } } }, - "id": "107db7f2-f4bf-433b-bea1-bfbb865ac18f", + "id": "ebe4b868-65ac-44c6-81f9-ea83929e0129", "savedPayload": { "position": { - "x": 7765.1126921079685, - "y": 14518.575580207853 + "x": 8166.930519152885, + "y": 14364.796205526776 }, "targetPosition": { "x": 7824.747834632871, @@ -1643,15 +1423,15 @@ "name": "New Record Formula", "code": "variable.MBO3", "project": "Foundations", - "id": "fc6a0ee7-19d2-4b6d-a23e-e4c04428f5f6", + "id": "61c37e7d-903a-4309-9dbc-3119a9c38eac", "savedPayload": { "position": { - "x": 7577.781147829378, - "y": 14700.742367608498 + "x": 8131.191421957064, + "y": 14673.97398760534 }, "targetPosition": { - "x": 7660.1033767638755, - "y": 14491.34310633173 + "x": 8029.043559515667, + "y": 14473.497519662958 }, "floatingObject": { "isPinned": false, @@ -1666,11 +1446,11 @@ } } }, - "id": "60a79269-6b11-43bc-91b4-58ca25fb7c67", + "id": "3c6cc634-fbaa-4212-8b3b-fda171c82183", "savedPayload": { "position": { - "x": 7660.1033767638755, - "y": 14491.34310633173 + "x": 8029.043559515667, + "y": 14473.497519662958 }, "targetPosition": { "x": 7824.747834632871, @@ -1699,15 +1479,15 @@ "name": "New Record Formula", "code": "variable.MBO4", "project": "Foundations", - "id": "2addcf82-3944-4e4f-8119-fd14e88d986d", + "id": "ea793af3-5cda-4734-b1a7-d7b006ba8c8e", "savedPayload": { "position": { - "x": 7434.619980962875, - "y": 14623.385085004133 + "x": 7877.707724249166, + "y": 14745.463784048055 }, "targetPosition": { - "x": 7564.662598852874, - "y": 14439.771584595486 + "x": 7860.054427710401, + "y": 14521.157383958101 }, "floatingObject": { "isPinned": false, @@ -1722,11 +1502,11 @@ } } }, - "id": "57544241-cf61-41d7-b807-7f5abf244fae", + "id": "a6e10ffd-650f-40ab-a996-6916afb4e13c", "savedPayload": { "position": { - "x": 7564.662598852874, - "y": 14439.771584595486 + "x": 7860.054427710401, + "y": 14521.157383958101 }, "targetPosition": { "x": 7824.747834632871, @@ -1755,15 +1535,15 @@ "name": "New Record Formula", "code": "variable.MBO5", "project": "Foundations", - "id": "a2b794ad-4ae1-4373-9d90-de7ffc582b12", + "id": "a028a4b0-1263-463a-8472-54aef9d312cd", "savedPayload": { "position": { - "x": 7314.131626894624, - "y": 14514.01495469227 + "x": 7616.161363429782, + "y": 14714.507732277423 }, "targetPosition": { - "x": 7484.33702947404, - "y": 14366.858164387577 + "x": 7685.690187164145, + "y": 14500.520016111013 }, "floatingObject": { "isPinned": false, @@ -1778,11 +1558,67 @@ } } }, - "id": "4e657112-d935-4fbd-bbe9-5dddf422aeec", + "id": "0bedcb3d-2911-4ed1-8b6e-00f4012f65e1", "savedPayload": { "position": { - "x": 7484.33702947404, - "y": 14366.858164387577 + "x": 7685.690187164145, + "y": 14500.520016111013 + }, + "targetPosition": { + "x": 7824.747834632871, + "y": 14072.544583778194 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "End", + "config": "{\n \"codeName\": \"end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Formula", + "code": "record.current.end", + "project": "Foundations", + "id": "976befb9-5d3c-40fb-a21f-2b220c921985", + "savedPayload": { + "position": { + "x": 7386.370402009997, + "y": 14585.818610558215 + }, + "targetPosition": { + "x": 7532.496212884288, + "y": 14414.727268298207 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "41051e53-cf74-4cf2-af4b-3508eb09a434", + "savedPayload": { + "position": { + "x": 7532.496212884288, + "y": 14414.727268298207 }, "targetPosition": { "x": 7824.747834632871, @@ -1802,15 +1638,2264 @@ } } ], - "id": "8ad13a6d-f0da-4795-9a0a-3ca4949bd0bb", + "id": "9f38f1d1-c072-4451-889a-1c4aebd17325", "savedPayload": { "position": { - "x": 7824.747834632871, - "y": 14072.544583778194 + "x": 8254.049060603604, + "y": 13620.505035006669 }, "targetPosition": { - "x": 7416.156384867279, - "y": 13270.638712008662 + "x": 7525.933765666151, + "y": 13091.498307943442 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 5, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "dataBuilding": { + "type": "Data Building Procedure", + "name": "New Data Building Procedure", + "project": "Foundations", + "loop": { + "type": "Procedure Loop", + "name": "New Procedure Loop", + "project": "Foundations", + "procedureJavascriptCode": { + "type": "Procedure Javascript Code", + "name": "New Procedure Javascript Code", + "code": "//Mean breakout indicator\nlet candle = record.current\nlet P1 = 13\nlet P2 = 48\nlet P3 = 2 * P2\nlet P4 = 2 * P3\nlet P5 = 2 * P4\n\nif(variable.previousEMAp1 === undefined){\n\tvariable.previousEMAp1 = candle.close\n}\nif(variable.previousEMAp2 === undefined){\n\tvariable.previousEMAp2 = candle.close\n}\nif(variable.previousEMAp3 === undefined){\n\tvariable.previousEMAp3 = candle.close\n}\nif(variable.previousEMAp4 === undefined){\n\tvariable.previousEMAp4 = candle.close\n}\nif(variable.previousEMAp5 === undefined){\n\tvariable.previousEMAp5 = candle.close\n}\n\nvariable.EMAp1 = calculateEMA(P1,candle.close,variable.previousEMAp1)\nvariable.EMAp2 = calculateEMA(P2,candle.close,variable.previousEMAp2)\nvariable.EMAp3 = calculateEMA(P3,candle.close,variable.previousEMAp3)\nvariable.EMAp4 = calculateEMA(P4,candle.close,variable.previousEMAp4)\nvariable.EMAp5 = calculateEMA(P5,candle.close,variable.previousEMAp5)\n\nvariable.previousEMAp1 = variable.EMAp1\nvariable.previousEMAp2 = variable.EMAp2\nvariable.previousEMAp3 = variable.EMAp3\nvariable.previousEMAp4 = variable.EMAp4\nvariable.previousEMAp5 = variable.EMAp5\n\nvariable.cC1.push(candle.close)\nif(variable.cC1.length > P1){\n\tvariable.cC1.splice(0,1)\n}\nvariable.cC2.push(candle.close)\nif(variable.cC2.length > P2){\n\tvariable.cC2.splice(0,1)\n}\nvariable.cC3.push(candle.close)\nif(variable.cC3.length > P3){\n\tvariable.cC3.splice(0,1)\n}\nvariable.cC4.push(candle.close)\nif(variable.cC4.length > P4){\n\tvariable.cC4.splice(0,1)\n}\nvariable.cC5.push(candle.close)\nif(variable.cC5.length > P5){\n\tvariable.cC5.splice(0,1)\n}\n\nif(variable.cC1.length === P1){\n\tvariable.Max1 = Math.max.apply(null, variable.cC1)\n\tvariable.Min1 = Math.min.apply(null, variable.cC1)\n}else{\n\tvariable.Max1 = candle.max\n\tvariable.Min1 = candle.min\n}\n\nif(variable.cC2.length === P2){\n\tvariable.Max2 = Math.max.apply(null, variable.cC2)\n\tvariable.Min2 = Math.min.apply(null, variable.cC2)\n}else{\n\tvariable.Max2 = candle.max\n\tvariable.Min2 = candle.min\n}\n\nif(variable.cC3.length === P3){\n\tvariable.Max3 = Math.max.apply(null, variable.cC3)\n\tvariable.Min3 = Math.min.apply(null, variable.cC3)\n}else{\n\tvariable.Max3 = candle.max\n\tvariable.Min3 = candle.min\n}\n\nif(variable.cC4.length === P4){\n\tvariable.Max4 = Math.max.apply(null, variable.cC4)\n\tvariable.Min4 = Math.min.apply(null, variable.cC4)\n}else{\n\tvariable.Max4 = candle.max\n\tvariable.Min4 = candle.min\n}\n\nif(variable.cC5.length === P5){\n\tvariable.Max5 = Math.max.apply(null, variable.cC5)\n\tvariable.Min5 = Math.min.apply(null, variable.cC5)\n}else{\n\tvariable.Max5 = candle.max\n\tvariable.Min5 = candle.min\n}\n\nvariable.MBO1 = (candle.close - variable.EMAp1) / (variable.Max1 - variable.Min1)\nvariable.MBO2 = (candle.close - variable.EMAp2) / (variable.Max2 - variable.Min2)\nvariable.MBO3 = (candle.close - variable.EMAp3) / (variable.Max3 - variable.Min3)\nvariable.MBO4 = (candle.close - variable.EMAp4) / (variable.Max4 - variable.Min4)\nvariable.MBO5 = (candle.close - variable.EMAp5) / (variable.Max5 - variable.Min5)\n\n\n//EMA calculation\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}", + "project": "Foundations", + "id": "8ade90c9-681c-4803-8804-053a54e30329", + "savedPayload": { + "position": { + "x": 8539.311757873891, + "y": 15079.654439335402 + }, + "targetPosition": { + "x": 8294.224192117128, + "y": 14702.252683759962 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "82eb99f8-f1c8-4f64-89bb-8aa0625eff93", + "savedPayload": { + "position": { + "x": 8294.224192117128, + "y": 14702.252683759962 + }, + "targetPosition": { + "x": 7804.049060603604, + "y": 13947.44917260908 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "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.cC1 = []\nvariable.cC2 = []\nvariable.cC3 = []\nvariable.cC4 = []\nvariable.cC5 = []", + "project": "Foundations", + "id": "09af02f8-e48f-41b6-b9c0-1113e0667ea2", + "savedPayload": { + "position": { + "x": 7874.702601531579, + "y": 15295.599044527755 + }, + "targetPosition": { + "x": 7851.151421222254, + "y": 14846.215753888197 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "7e73f49d-0c70-46b6-a5f8-751fd059c166", + "savedPayload": { + "position": { + "x": 7851.151421222254, + "y": 14846.215753888197 + }, + "targetPosition": { + "x": 7804.049060603604, + "y": 13947.44917260908 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "ef314ecc-9ed4-4943-bb9f-c5dd4b2264b2", + "savedPayload": { + "position": { + "x": 7804.049060603604, + "y": 13947.44917260908 + }, + "targetPosition": { + "x": 7525.933765666151, + "y": 13091.498307943442 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 5, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "c71668ec-cf2a-4f5e-8ee6-b889124d8b3e", + "savedPayload": { + "position": { + "x": 7525.933765666151, + "y": 13091.498307943442 + }, + "targetPosition": { + "x": 7097.958333333332, + "y": 12952.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Plotter Module", + "name": "MBO", + "id": "4f685453-cf2b-44b2-b6df-ca2ffae7bfef" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "MBO", + "Plotter", + "Foundations", + "cca23a4f-9f3f-4484-b136-79601b91f422" + ], + [ + "MBO", + "Plotter Module", + "Foundations", + "d5690f7b-1a51-4308-8ae3-b5610cd5bf27" + ] + ] + } + }, + { + "type": "Product Definition", + "name": "EMAs", + "config": "{\n \"codeName\": \"EMA\",\n \"singularVariableName\": \"EMA\",\n \"pluralVariableName\": \"EMAs\"\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": "aa281954-7b77-453f-bcf5-6934a7253827", + "savedPayload": { + "position": { + "x": 8037.461696864945, + "y": 13316.498307943442 + }, + "targetPosition": { + "x": 7362.461696864945, + "y": 13316.498307943442 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "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": "8d18e878-69c5-40c7-9462-6a0297c2039c", + "savedPayload": { + "position": { + "x": 7908.548168068035, + "y": 13713.253353240862 + }, + "targetPosition": { + "x": 7362.461696864945, + "y": 13316.498307943442 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "record": { + "type": "Record Definition", + "name": "New Record Definition", + "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": "d63b5ec9-2882-4939-bc5b-17f7ddb0469a", + "savedPayload": { + "position": { + "x": 7837.978944468602, + "y": 13770.95368508441 + }, + "targetPosition": { + "x": 7725.825744423625, + "y": 13762.127036815027 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "38212797-32f6-45a6-b204-1f47ec903159", + "savedPayload": { + "position": { + "x": 7725.825744423625, + "y": 13762.127036815027 + }, + "targetPosition": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "End", + "config": "{\n \"codeName\": \"end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "record.current.end", + "project": "Foundations", + "id": "6f1b8f17-52ee-42b4-8ca7-22dbaddea099", + "savedPayload": { + "position": { + "x": 7802.234046247245, + "y": 13897.695533938358 + }, + "targetPosition": { + "x": 7701.995812276054, + "y": 13846.62160271766 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "0899d5b5-0c2f-4e9f-ab79-f1cdc4e46f94", + "savedPayload": { + "position": { + "x": 7701.995812276054, + "y": 13846.62160271766 + }, + "targetPosition": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "EMA p1", + "config": "{\n \"codeName\": \"ema1\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.EMAp1", + "project": "Foundations", + "id": "1588a3cf-ad7d-4b8e-9910-bc13c9352ecc", + "savedPayload": { + "position": { + "x": 7720.708060645108, + "y": 14001.110753666271 + }, + "targetPosition": { + "x": 7647.6451552079625, + "y": 13915.565082536268 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "098c1c23-c6d1-4b2e-860e-3f4fe9ea7a4a", + "savedPayload": { + "position": { + "x": 7647.6451552079625, + "y": 13915.565082536268 + }, + "targetPosition": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "EMA p2", + "config": "{\n \"codeName\": \"ema2\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.EMAp2", + "project": "Foundations", + "id": "6f84a711-bef3-4575-8406-b90e8bfeec02", + "savedPayload": { + "position": { + "x": 7605.812579935216, + "y": 14065.455314525876 + }, + "targetPosition": { + "x": 7571.048168068034, + "y": 13958.461456442672 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "c970c6ac-5ba7-450c-8065-6e47ba267bc0", + "savedPayload": { + "position": { + "x": 7571.048168068034, + "y": 13958.461456442672 + }, + "targetPosition": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "EMA p3", + "config": "{\n \"codeName\": \"ema3\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.EMAp3", + "project": "Foundations", + "id": "ddcb1abb-c12a-429a-a7da-07a5f0f7b7ab", + "savedPayload": { + "position": { + "x": 7475.039399525524, + "y": 14080.933340411193 + }, + "targetPosition": { + "x": 7483.866047794906, + "y": 13968.780140366216 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "748fe2d0-2120-4bda-9479-cb1bf084dd49", + "savedPayload": { + "position": { + "x": 7483.866047794906, + "y": 13968.780140366216 + }, + "targetPosition": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "EMA p4", + "config": "{\n \"codeName\": \"ema4\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.EMAp4", + "project": "Foundations", + "id": "8ca9d9ff-9ca9-4319-ba8d-c14b79fedbee", + "savedPayload": { + "position": { + "x": 7348.297550671575, + "y": 14045.188442189836 + }, + "targetPosition": { + "x": 7399.371481892274, + "y": 13944.950208218645 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "aef3bee7-33db-461e-8da2-13b13cde5c10", + "savedPayload": { + "position": { + "x": 7399.371481892274, + "y": 13944.950208218645 + }, + "targetPosition": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "EMA p5", + "config": "{\n \"codeName\": \"ema5\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.EMAp5", + "project": "Foundations", + "id": "f3b0c52e-944f-4bc7-8916-84df4b03f25d", + "savedPayload": { + "position": { + "x": 7244.882330943661, + "y": 13963.6624565877 + }, + "targetPosition": { + "x": 7330.428002073664, + "y": 13890.599551150553 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "6dd12ea5-9f10-4434-a14e-c84e8ead2ba0", + "savedPayload": { + "position": { + "x": 7330.428002073664, + "y": 13890.599551150553 + }, + "targetPosition": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "63d7579e-0a03-487c-92ba-38cc32cd8b5c", + "savedPayload": { + "position": { + "x": 7501.519344333671, + "y": 13744.473740276262 + }, + "targetPosition": { + "x": 7362.461696864945, + "y": 13316.498307943442 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "dataBuilding": { + "type": "Data Building Procedure", + "name": "New Data Building Procedure", + "project": "Foundations", + "loop": { + "type": "Procedure Loop", + "name": "New Procedure Loop", + "project": "Foundations", + "procedureJavascriptCode": { + "type": "Procedure Javascript Code", + "name": "New Procedure Javascript Code", + "code": "let candle = record.current\nlet P1 = 13\nlet P2 = 48\nlet P3 = 2 * P2\nlet P4 = 2 * P3\nlet P5 = 2 * P4\n\nif(variable.previousEMAp1 === undefined){\n\tvariable.previousEMAp1 = candle.close\n}\nif(variable.previousEMAp2 === undefined){\n\tvariable.previousEMAp2 = candle.close\n}\nif(variable.previousEMAp3 === undefined){\n\tvariable.previousEMAp3 = candle.close\n}\nif(variable.previousEMAp4 === undefined){\n\tvariable.previousEMAp4 = candle.close\n}\nif(variable.previousEMAp5 === undefined){\n\tvariable.previousEMAp5 = candle.close\n}\n\nvariable.EMAp1 = calculateEMA(P1,candle.close,variable.previousEMAp1)\nvariable.EMAp2 = calculateEMA(P2,candle.close,variable.previousEMAp2)\nvariable.EMAp3 = calculateEMA(P3,candle.close,variable.previousEMAp3)\nvariable.EMAp4 = calculateEMA(P4,candle.close,variable.previousEMAp4)\nvariable.EMAp5 = calculateEMA(P5,candle.close,variable.previousEMAp5)\n\nvariable.previousEMAp1 = variable.EMAp1\nvariable.previousEMAp2 = variable.EMAp2\nvariable.previousEMAp3 = variable.EMAp3\nvariable.previousEMAp4 = variable.EMAp4\nvariable.previousEMAp5 = variable.EMAp5\n\n//EMA calculation\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}", + "project": "Foundations", + "id": "85fa0598-6b82-4d8b-8a27-6763c9171b11", + "savedPayload": { + "position": { + "x": 7340.354375481209, + "y": 14294.681765689029 + }, + "targetPosition": { + "x": 7270.184179830215, + "y": 13964.556950441369 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "e866c1d4-c482-4a87-9e50-4ab6d76a73e9", + "savedPayload": { + "position": { + "x": 7270.184179830215, + "y": 13964.556950441369 + }, + "targetPosition": { + "x": 7223.404049396219, + "y": 13744.473740276262 + }, + "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": "// Type your code", + "project": "Foundations", + "id": "e2284f1f-dda6-449e-bc76-a2381502c612", + "savedPayload": { + "position": { + "x": 6805.385085065185, + "y": 14120.85970635312 + }, + "targetPosition": { + "x": 7056.196463663806, + "y": 13895.028126707006 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "9937d8aa-b3b3-43a1-9ede-8b60ea6b38e4", + "savedPayload": { + "position": { + "x": 7056.196463663806, + "y": 13895.028126707006 + }, + "targetPosition": { + "x": 7223.404049396219, + "y": 13744.473740276262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "e3899249-c073-4cf3-ace8-3894c6665b5f", + "savedPayload": { + "position": { + "x": 7223.404049396219, + "y": 13744.473740276262 + }, + "targetPosition": { + "x": 7362.461696864945, + "y": 13316.498307943442 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "065a8177-95a9-40e6-8c6a-8ed44444dca9", + "savedPayload": { + "position": { + "x": 7362.461696864945, + "y": 13316.498307943442 + }, + "targetPosition": { + "x": 7097.958333333332, + "y": 12952.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 4, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Plotter Module", + "name": "EMAs", + "id": "5a5c9bf2-e38b-4d5f-bb6c-6efd13e3e4c9" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ] + ] + } + } + ], + "id": "c0cd61c4-0c48-456d-8c4c-0437b0ab88a7", + "savedPayload": { + "position": { + "x": 7097.958333333332, + "y": 12952.440660474716 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 12952.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Indicator Bot", + "name": "Trend Intensity Indicator", + "config": "{\n \"codeName\": \"T2I\"\n}", + "project": "Data-Mining", + "processes": [ + { + "type": "Process Definition", + "name": "Multi-Time-Frame-Market", + "config": "{\n \"codeName\": \"Multi-Time-Frame-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\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 T2I", + "project": "Foundations", + "id": "264e349f-5519-485d-88cb-4e4593ed9824", + "savedPayload": { + "position": { + "x": 7299.868115576018, + "y": 13386.926981299923 + }, + "targetPosition": { + "x": 7154.979241632657, + "y": 13425.749838065301 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "f153acd6-b8d2-4bb3-88d8-b32600ae93c4" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity Indicator", + "Indicator Bot", + "Data-Mining", + "703e4b8f-a75c-4794-a734-bb3392c18ded" + ], + [ + "T2I", + "Product Definition", + "Foundations", + "60b4fe48-9ebf-46ec-9670-c375dd4f294b" + ], + [ + "Multi-Time-Frame-Market", + "Dataset Definition", + "Foundations", + "fb9ffd7a-5755-4a0f-9ee0-014823cd96eb" + ] + ] + } + } + ], + "outputDatasetFolders": [], + "id": "0d4ae6bd-4d1c-43d0-aefb-4541e75daf92", + "savedPayload": { + "position": { + "x": 7154.979241632657, + "y": 13425.749838065301 + }, + "targetPosition": { + "x": 7010.090367689297, + "y": 13464.57269483068 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "processDependencies": { + "type": "Process Dependencies", + "name": "New Process Dependencies", + "project": "Foundations", + "statusDependencies": [ + { + "type": "Status Dependency", + "name": "Trend Intensity Indicator Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "343ee357-7881-4a22-9881-b1810d806a74", + "savedPayload": { + "position": { + "x": 7533.011904013108, + "y": 13353.422291046485 + }, + "targetPosition": { + "x": 7299.868115576017, + "y": 13542.218408361436 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Status Report", + "name": "T2i", + "id": "fccb2d71-0de9-4023-81a3-bf80164d5423" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity Indicator", + "Indicator Bot", + "Data-Mining", + "703e4b8f-a75c-4794-a734-bb3392c18ded" + ], + [ + "Multi-Time-Frame-Market", + "Process Definition", + "Foundations", + "68c6e322-d2bb-4ec9-b6c6-60a844818fb7" + ], + [ + "T2i", + "Status Report", + "Foundations", + "ba1cb8aa-be01-414e-a188-560eb3e6e063" + ] + ] + } + }, + { + "type": "Status Dependency", + "name": "Candles Volumes Multi-Time-Frame-Market", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "37a1f88a-e757-417e-870e-fc292e15a0e0", + "savedPayload": { + "position": { + "x": 7599.456976002389, + "y": 13526.517621488552 + }, + "targetPosition": { + "x": 7299.868115576017, + "y": 13542.218408361436 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Status Report", + "name": "Candles Volumes Multi-Time-Frame-Market Status Report", + "id": "a0a61ba9-91cb-4ec7-92fe-134ff079de2d" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Multi-Time-Frame-Market", + "Process Definition", + "Foundations", + "9f683143-a33f-42c1-9fa8-c601f01ee4e1" + ], + [ + "Candles Volumes Multi-Time-Frame-Market Status Report", + "Status Report", + "Foundations", + "a0a61ba9-91cb-4ec7-92fe-134ff079de2d" + ] + ] + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Market", + "project": "Foundations", + "id": "7f88082a-ae10-40b0-9d22-58d494a6d03d", + "savedPayload": { + "position": { + "x": 7551.469285959644, + "y": 13705.610118865943 + }, + "targetPosition": { + "x": 7299.868115576017, + "y": 13542.218408361436 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "2b03494a-67d6-47f1-89b6-53fc4c9116a8" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Candles", + "Product Definition", + "Foundations", + "fe6065ec-4d2d-47a0-bae0-8647f0e195d7" + ], + [ + "Multi-Time-Frame-Market", + "Dataset Definition", + "Foundations", + "2b03494a-67d6-47f1-89b6-53fc4c9116a8" + ] + ] + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Market", + "project": "Foundations", + "id": "4bf80157-4e13-4f4c-8388-a371940b3162", + "savedPayload": { + "position": { + "x": 7407.378500439607, + "y": 13822.292536310597 + }, + "targetPosition": { + "x": 7299.868115576017, + "y": 13542.218408361436 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Market", + "id": "9bf0483c-4825-4a46-9cf4-1b5262579fc1" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Volumes", + "Product Definition", + "Foundations", + "1a366aef-efef-470e-88e0-2a6fbe4dd91f" + ], + [ + "Multi-Time-Frame-Market", + "Dataset Definition", + "Foundations", + "9bf0483c-4825-4a46-9cf4-1b5262579fc1" + ] + ] + } + } + ], + "dataMineDataDependencies": [], + "id": "5a68a393-abd7-4a15-9848-360612d6973e", + "savedPayload": { + "position": { + "x": 7299.868115576017, + "y": 13542.218408361436 + }, + "targetPosition": { + "x": 7010.090367689297, + "y": 13464.57269483068 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "T2i", + "project": "Foundations", + "id": "fccb2d71-0de9-4023-81a3-bf80164d5423", + "savedPayload": { + "position": { + "x": 7222.222402045261, + "y": 13676.704729186644 + }, + "targetPosition": { + "x": 7010.090367689297, + "y": 13464.57269483068 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "7032904f-3064-47a3-8082-85fe27899a74", + "savedPayload": { + "position": { + "x": 7087.736081220053, + "y": 13754.350442717401 + }, + "targetPosition": { + "x": 7010.090367689297, + "y": 13464.57269483068 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Execution Finished Event", + "name": "New Execution Finished Event", + "id": "1824fa00-dd30-4cdc-acc0-01c2f29056c5" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Multi-Time-Frame-Market", + "Process Definition", + "Foundations", + "9f683143-a33f-42c1-9fa8-c601f01ee4e1" + ], + [ + "New Execution Finished Event", + "Execution Finished Event", + "Foundations", + "1824fa00-dd30-4cdc-acc0-01c2f29056c5" + ] + ] + } + }, + "executionFinishedEvent": { + "type": "Execution Finished Event", + "name": "New Execution Finished Event", + "project": "Foundations", + "id": "be867e31-f414-4390-aeb4-b32bf738ff83", + "savedPayload": { + "position": { + "x": 6932.44465415854, + "y": 13754.350442717401 + }, + "targetPosition": { + "x": 7010.090367689297, + "y": 13464.57269483068 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "43e00f93-fa9d-4a5e-aea9-38c129ee331a", + "savedPayload": { + "position": { + "x": 7157.965388902327, + "y": 13373.954765285125 + }, + "targetPosition": { + "x": 6890.663431645817, + "y": 13237.757615363262 + }, + "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 \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\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 T2I", + "project": "Foundations", + "id": "096daf78-6541-4f50-944f-bb840bd81763", + "savedPayload": { + "position": { + "x": 7837.188817874659, + "y": 14452.440660474716 + }, + "targetPosition": { + "x": 7317.573575603996, + "y": 14152.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "c48ef5f1-0234-4fb3-92f4-bc4bf21aff66" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity Indicator", + "Indicator Bot", + "Data-Mining", + "703e4b8f-a75c-4794-a734-bb3392c18ded" + ], + [ + "T2I", + "Product Definition", + "Foundations", + "60b4fe48-9ebf-46ec-9670-c375dd4f294b" + ], + [ + "Multi-Time-Frame-Daily", + "Dataset Definition", + "Foundations", + "8c14094f-3de5-4922-96e7-8450972db999" + ] + ] + } + } + ], + "outputDatasetFolders": [], + "id": "6bc53a16-3ef9-43d7-a2a5-5df89bf272e9", + "savedPayload": { + "position": { + "x": 7317.573575603996, + "y": 14152.440660474716 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 13852.440660474716 + }, + "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": "Trend Intensity Indicator Multi-Time-Frame-Daily", + "config": "{\n \"mainUtility\": \"Self Reference\"\n}", + "project": "Foundations", + "id": "e95d1d1d-b5cd-4372-aad8-667315c1f99f", + "savedPayload": { + "position": { + "x": 7617.573575603996, + "y": 14672.05590274538 + }, + "targetPosition": { + "x": 7097.958333333332, + "y": 14372.05590274538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Status Report", + "name": "T2i", + "id": "05a46d64-5395-4780-b3fb-4db70ece6780" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity Indicator", + "Indicator Bot", + "Data-Mining", + "703e4b8f-a75c-4794-a734-bb3392c18ded" + ], + [ + "Multi-Time-Frame-Daily", + "Process Definition", + "Foundations", + "6971f92b-73e5-412b-b60e-4076e95be773" + ], + [ + "T2i", + "Status Report", + "Foundations", + "8e9ee443-4d84-4daa-97fd-7e5e3106c433" + ] + ] + } + }, + { + "type": "Status Dependency", + "name": "", + "config": "{\n \"mainUtility\": \"Market Ending Point\"\n}", + "project": "Foundations", + "id": "559e69fd-313c-4207-9968-ada1c903dcfe", + "savedPayload": { + "position": { + "x": 7522.22240204526, + "y": 14796.31997145731 + }, + "targetPosition": { + "x": 7097.958333333332, + "y": 14372.05590274538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Status Report", + "name": "New Status Report", + "id": "2a021da8-9feb-475e-90ab-1586968c17c7" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Multi-Time-Frame-Daily", + "Process Definition", + "Foundations", + "980ceb1d-7be6-454f-90d9-01ba1fd4a65d" + ], + [ + "New Status Report", + "Status Report", + "Foundations", + "2a021da8-9feb-475e-90ab-1586968c17c7" + ] + ] + } + }, + { + "type": "Status Dependency", + "name": "Exchange Raw Data Historic-OHLCVs", + "config": "{\n \"mainUtility\": \"Market Starting Point\"\n}", + "project": "Foundations", + "id": "db935b68-dd5f-41b6-a97c-ad660de5cf5c", + "savedPayload": { + "position": { + "x": 7397.958333333332, + "y": 14891.671145016044 + }, + "targetPosition": { + "x": 7097.958333333332, + "y": 14372.05590274538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Status Report", + "name": "Exchange-Raw-Data Historic-OHLCVs Status Report", + "id": "181c7c34-7243-497a-9ddb-1b0067c6d66e" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Exchange Raw Data", + "Sensor Bot", + "Data-Mining", + "af924204-66a2-47d4-9910-66ab78acb06f" + ], + [ + "Historic-OHLCVs", + "Process Definition", + "Foundations", + "5eb11d6a-022e-4f60-97c4-d6cf90b249dc" + ], + [ + "Exchange-Raw-Data Historic-OHLCVs Status Report", + "Status Report", + "Foundations", + "181c7c34-7243-497a-9ddb-1b0067c6d66e" + ] + ] + } + } + ], + "dataDependencies": [ + { + "type": "Data Dependency", + "name": "Candles Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "c772747c-816a-493c-950d-1cc65997ab9a", + "savedPayload": { + "position": { + "x": 7253.249760394845, + "y": 14951.61139851882 + }, + "targetPosition": { + "x": 7097.958333333332, + "y": 14372.05590274538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "678a567c-f08d-49b9-813b-4e54fd6afadb" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Candles", + "Product Definition", + "Foundations", + "fe6065ec-4d2d-47a0-bae0-8647f0e195d7" + ], + [ + "Multi-Time-Frame-Daily", + "Dataset Definition", + "Foundations", + "678a567c-f08d-49b9-813b-4e54fd6afadb" + ] + ] + } + }, + { + "type": "Data Dependency", + "name": "Volumes Multi-Time-Frame-Daily", + "project": "Foundations", + "id": "eaa52ffc-cc70-4e77-b256-0e46f3952a6e", + "savedPayload": { + "position": { + "x": 7097.958333333332, + "y": 14972.05590274538 + }, + "targetPosition": { + "x": 7097.958333333332, + "y": 14372.05590274538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 3, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Dataset Definition", + "name": "Multi-Time-Frame-Daily", + "id": "2e683057-f911-4105-bc77-16f2706d1915" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Volumes", + "Product Definition", + "Foundations", + "1a366aef-efef-470e-88e0-2a6fbe4dd91f" + ], + [ + "Multi-Time-Frame-Daily", + "Dataset Definition", + "Foundations", + "2e683057-f911-4105-bc77-16f2706d1915" + ] + ] + } + } + ], + "dataMineDataDependencies": [], + "id": "7fb3daaa-a5d3-4403-ae93-685cecb82b0b", + "savedPayload": { + "position": { + "x": 7097.958333333332, + "y": 14372.05590274538 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 13852.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "statusReport": { + "type": "Status Report", + "name": "T2i", + "project": "Foundations", + "id": "05a46d64-5395-4780-b3fb-4db70ece6780", + "savedPayload": { + "position": { + "x": 6797.958333333332, + "y": 14152.440660474716 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 13852.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "executionStartedEvent": { + "type": "Execution Started Event", + "name": "", + "project": "Foundations", + "id": "7f0a893d-f80f-4c94-8b66-65164dac6906", + "savedPayload": { + "position": { + "x": 6647.958333333332, + "y": 14112.248281610047 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 13852.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Execution Finished Event", + "name": "New Execution Finished Event", + "id": "f29d08f9-e7c8-490c-8fca-14851a0d3dc3" + }, + "referenceParentCombinedNodePath": [ + [ + "Candles", + "Data Mine", + "Data-Mining", + "70c7eea3-a786-4dda-b526-0514e2cb14cc" + ], + [ + "Candles Volumes", + "Indicator Bot", + "Data-Mining", + "285a4618-0423-4ac9-9df9-7a78be6fd915" + ], + [ + "Multi-Time-Frame-Daily", + "Process Definition", + "Foundations", + "980ceb1d-7be6-454f-90d9-01ba1fd4a65d" + ], + [ + "New Execution Finished Event", + "Execution Finished Event", + "Foundations", + "f29d08f9-e7c8-490c-8fca-14851a0d3dc3" + ] + ] + } + }, + "executionFinishedEvent": { + "type": "Execution Finished Event", + "name": "New Execution Finished Event", + "project": "Foundations", + "id": "9f951fe6-715e-4f06-bb28-2955e466baee", + "savedPayload": { + "position": { + "x": 6538.150712198, + "y": 14002.440660474716 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 13852.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "e0b00360-7760-4cb1-9638-2af1b1a7544e", + "savedPayload": { + "position": { + "x": 7076.073628270785, + "y": 13808.391525140354 + }, + "targetPosition": { + "x": 6890.663431645817, + "y": 13237.757615363262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 5, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "products": [ + { + "type": "Product Definition", + "name": "T2I", + "config": "{\n \"codeName\": \"T2I\",\n \"singularVariableName\": \"T2I\",\n \"pluralVariableName\": \"T2Is\"\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": "f153acd6-b8d2-4bb3-88d8-b32600ae93c4", + "savedPayload": { + "position": { + "x": 6890.663431645817, + "y": 13505.059572619772 + }, + "targetPosition": { + "x": 6822.564856684885, + "y": 13371.408593991517 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "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": "c48ef5f1-0234-4fb3-92f4-bc4bf21aff66", + "savedPayload": { + "position": { + "x": 6799.09968692885, + "y": 13519.561845080787 + }, + "targetPosition": { + "x": 6822.564856684885, + "y": 13371.408593991517 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "record": { + "type": "Record Definition", + "name": "New Record Definition", + "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 Formula", + "code": "record.current.begin", + "project": "Foundations", + "id": "96dba8db-5a09-4bd7-a8f3-d3f9e305ca9d", + "savedPayload": { + "position": { + "x": 6649.541438588978, + "y": 13830.462713496265 + }, + "targetPosition": { + "x": 6633.897992084955, + "y": 13731.69387943675 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "7ea2c96b-7c2e-404d-af3a-2362d27ef830", + "savedPayload": { + "position": { + "x": 6633.897992084955, + "y": 13731.69387943675 + }, + "targetPosition": { + "x": 6610.43282232892, + "y": 13583.54062834748 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "End", + "config": "{\n \"codeName\": \"end\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Formula", + "code": "record.current.end", + "project": "Foundations", + "id": "a2b0492d-0dc3-476a-a789-630a570e47a8", + "savedPayload": { + "position": { + "x": 6496.935197394034, + "y": 13806.292259394571 + }, + "targetPosition": { + "x": 6542.334247367989, + "y": 13717.191606975735 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "3419cafa-effe-4949-8ea2-ec8d248413ec", + "savedPayload": { + "position": { + "x": 6542.334247367989, + "y": 13717.191606975735 + }, + "targetPosition": { + "x": 6610.43282232892, + "y": 13583.54062834748 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "T2I1", + "config": "{\n \"codeName\": \"t2i1\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.t2i1", + "project": "Foundations", + "id": "4cc1ec5a-8f6c-45c0-8fce-5b64f62e6099", + "savedPayload": { + "position": { + "x": 6387.681191281828, + "y": 13697.038253282366 + }, + "targetPosition": { + "x": 6476.781843700665, + "y": 13651.639203308412 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "2ab7e865-824e-4f5d-8d9d-77bb62f01182", + "savedPayload": { + "position": { + "x": 6476.781843700665, + "y": 13651.639203308412 + }, + "targetPosition": { + "x": 6610.43282232892, + "y": 13583.54062834748 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Record Property", + "name": "t2i2", + "config": "{\n \"codeName\": \"t2i2\",\n \"isString\": false,\n \"isCalculated\": false\n}", + "project": "Foundations", + "recordFormula": { + "type": "Record Formula", + "name": "New Record Formula", + "code": "variable.t2i2", + "project": "Foundations", + "id": "1d8d7602-b44e-419d-a433-d5a66085feec", + "savedPayload": { + "position": { + "x": 6363.510737180136, + "y": 13544.432012087422 + }, + "targetPosition": { + "x": 6462.27957123965, + "y": 13560.075458591446 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "94102f7c-66b6-424b-a827-9a17ce9e8ac8", + "savedPayload": { + "position": { + "x": 6462.27957123965, + "y": 13560.075458591446 + }, + "targetPosition": { + "x": 6610.43282232892, + "y": 13583.54062834748 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "6d681539-5800-4220-810b-2f0829e5d62b", + "savedPayload": { + "position": { + "x": 6610.43282232892, + "y": 13583.54062834748 + }, + "targetPosition": { + "x": 6822.564856684885, + "y": 13371.408593991517 }, "floatingObject": { "isPinned": false, @@ -1836,17 +3921,17 @@ "procedureJavascriptCode": { "type": "Procedure Javascript Code", "name": "New Procedure Javascript Code", - "code": "//Mean breakout indicator\nlet candle = record.current\nlet P1 = 13\nlet P2 = 48\nlet P3 = 2 * P2\nlet P4 = 2 * P3\nlet P5 = 2 * P4\n\nif(variable.previousEMAp1 === undefined){\n\tvariable.previousEMAp1 = candle.close\n}\nif(variable.previousEMAp2 === undefined){\n\tvariable.previousEMAp2 = candle.close\n}\nif(variable.previousEMAp3 === undefined){\n\tvariable.previousEMAp3 = candle.close\n}\nif(variable.previousEMAp4 === undefined){\n\tvariable.previousEMAp4 = candle.close\n}\nif(variable.previousEMAp5 === undefined){\n\tvariable.previousEMAp5 = candle.close\n}\n\nvariable.EMAp1 = calculateEMA(P1,candle.close,variable.previousEMAp1)\nvariable.EMAp2 = calculateEMA(P2,candle.close,variable.previousEMAp2)\nvariable.EMAp3 = calculateEMA(P3,candle.close,variable.previousEMAp3)\nvariable.EMAp4 = calculateEMA(P4,candle.close,variable.previousEMAp4)\nvariable.EMAp5 = calculateEMA(P5,candle.close,variable.previousEMAp5)\n\nvariable.previousEMAp1 = variable.EMAp1\nvariable.previousEMAp2 = variable.EMAp2\nvariable.previousEMAp3 = variable.EMAp3\nvariable.previousEMAp4 = variable.EMAp4\nvariable.previousEMAp5 = variable.EMAp5\n\nvariable.cC1.push(candle.close)\nif(variable.cC1.length > P1){\n\tvariable.cC1.splice(0,1)\n}\nvariable.cC2.push(candle.close)\nif(variable.cC2.length > P2){\n\tvariable.cC2.splice(0,1)\n}\nvariable.cC3.push(candle.close)\nif(variable.cC3.length > P3){\n\tvariable.cC3.splice(0,1)\n}\nvariable.cC4.push(candle.close)\nif(variable.cC4.length > P4){\n\tvariable.cC4.splice(0,1)\n}\nvariable.cC5.push(candle.close)\nif(variable.cC5.length > P5){\n\tvariable.cC5.splice(0,1)\n}\n\nif(variable.cC1.length === P1){\n\tvariable.Max1 = Math.max.apply(null, variable.cC1)\n\tvariable.Min1 = Math.min.apply(null, variable.cC1)\n}else{\n\tvariable.Max1 = candle.max\n\tvariable.Min1 = candle.min\n}\n\nif(variable.cC2.length === P2){\n\tvariable.Max2 = Math.max.apply(null, variable.cC2)\n\tvariable.Min2 = Math.min.apply(null, variable.cC2)\n}else{\n\tvariable.Max2 = candle.max\n\tvariable.Min2 = candle.min\n}\n\nif(variable.cC3.length === P3){\n\tvariable.Max3 = Math.max.apply(null, variable.cC3)\n\tvariable.Min3 = Math.min.apply(null, variable.cC3)\n}else{\n\tvariable.Max3 = candle.max\n\tvariable.Min3 = candle.min\n}\n\nif(variable.cC4.length === P4){\n\tvariable.Max4 = Math.max.apply(null, variable.cC4)\n\tvariable.Min4 = Math.min.apply(null, variable.cC4)\n}else{\n\tvariable.Max4 = candle.max\n\tvariable.Min4 = candle.min\n}\n\nif(variable.cC5.length === P5){\n\tvariable.Max5 = Math.max.apply(null, variable.cC5)\n\tvariable.Min5 = Math.min.apply(null, variable.cC5)\n}else{\n\tvariable.Max5 = candle.max\n\tvariable.Min5 = candle.min\n}\n\nvariable.MBO1 = (candle.close - variable.EMAp1) / (variable.Max1 - variable.Min1)\nvariable.MBO2 = (candle.close - variable.EMAp2) / (variable.Max2 - variable.Min2)\nvariable.MBO3 = (candle.close - variable.EMAp3) / (variable.Max3 - variable.Min3)\nvariable.MBO4 = (candle.close - variable.EMAp4) / (variable.Max4 - variable.Min4)\nvariable.MBO5 = (candle.close - variable.EMAp5) / (variable.Max5 - variable.Min5)\n\n\n//EMA calculation\nfunction calculateEMA(periods, price, previousEMA) {\n let k = 2 / (periods + 1)\n return price * k + previousEMA * (1-k)\n}", + "code": "\t//Trend intensity indicator\n\tlet candle = record.current\n\tlet P1 = 13\n\tlet P2 = 48\n\n\tif(variable.previousEMAp1 === undefined){\n\t\tvariable.previousEMAp1 = candle.close\n\t}\n\tif(variable.previousEMAp2 === undefined){\n\t\tvariable.previousEMAp2 = candle.close\n\t}\n\t\t\n\tvariable.EMAp1 = calculateEMA(P1,candle.close,variable.previousEMAp1)\n\tvariable.EMAp2 = calculateEMA(P2,candle.close,variable.previousEMAp2)\n\n\tvariable.previousEMAp1 = variable.EMAp1\n\tvariable.previousEMAp2 = variable.EMAp2\n\n\tif(candle.close > variable.EMAp1){\n\t\tvariable.H1.push(1)\n\t}else{\n\t\tvariable.H1.push(0)\n\t}\n\tif(variable.H1.length > P1){\n\t\tvariable.H1.splice(0,1)\n\t}\n\tif(candle.close < variable.EMAp1){\n\t\tvariable.L1.push(1)\n\t}else{\n\t\tvariable.L1.push(0)\n\t}\n\tif(variable.L1.length > P1){\n\t\tvariable.L1.splice(0,1)\n\t}\n\tvariable.up1 = 0\n\tif(variable.L1.length === P1 && variable.H1.length === P1){\n\tfor(var i =0 ; i < P1 ; i++){\n\t\tvariable.up1 += variable.H1[i]\n\t}\n\tvariable.low1 = 0\n\tfor(var i =0 ; i < P1 ; i++){\n\t\tvariable.low1 += variable.L1[i]\n\t}\n\t}else{\n\t\tvariable.up1 = 1\n\t\tvariable.low1 = 1\n\t}\n\n\tvariable.t2i1 = variable.up1 / (variable.up1 + variable.low1) * 100\n\t\n\t\n\tif(candle.close > variable.EMAp2){\n\t\tvariable.H2.push(1)\n\t}else{\n\t\tvariable.H2.push(0)\n\t}\n\tif(variable.H2.length > P2){\n\t\tvariable.H2.splice(0,1)\n\t}\n\tif(candle.close < variable.EMAp2){\n\t\tvariable.L2.push(1)\n\t}else{\n\t\tvariable.L2.push(0)\n\t}\n\tif(variable.L2.length > P2){\n\t\tvariable.L2.splice(0,1)\n\t}\n\tif(variable.L2.length === P2 && variable.H2.length === P2){\n\tvariable.up2 = 0\n\tfor(var i =0 ; i < P2 ; i++){\n\t\tvariable.up2 += variable.H2[i]\n\t}\n\tvariable.low2 = 0\n\tfor(var i =0 ; i < P2 ; i++){\n\t\tvariable.low2 += variable.L2[i]\n\t}\n\t}else{\n\t\tvariable.up2 = 1\n\t\tvariable.low2 = 1\n\t}\n\tvariable.t2i2 = variable.up2 / (variable.up2 + variable.low2) * 100\n\n\t//EMA calculation\n\tfunction calculateEMA(periods, price, previousEMA) {\n\t\tlet k = 2 / (periods + 1)\n\t\treturn price * k + previousEMA * (1-k)\n }", "project": "Foundations", - "id": "34bd5317-5523-4960-ae6d-a00d7646a692", + "id": "a07d3f79-fbe5-49dc-89f8-2e034a431e21", "savedPayload": { "position": { - "x": 7416.478791742403, - "y": 15502.162777291454 + "x": 5584.4903580376385, + "y": 13213.607827524738 }, "targetPosition": { - "x": 7369.440983271958, - "y": 15054.62792437573 + "x": 5721.522176684029, + "y": 13152.597331063369 }, "floatingObject": { "isPinned": false, @@ -1861,15 +3946,15 @@ } } }, - "id": "3618dda5-00ed-4f87-a8e5-4311bd551fd6", + "id": "2b9f737c-0926-43a3-b318-7422e025ced0", "savedPayload": { "position": { - "x": 7369.440983271958, - "y": 15054.62792437573 + "x": 5721.522176684029, + "y": 13152.597331063369 }, "targetPosition": { - "x": 7275.365366331071, - "y": 14159.558218544285 + "x": 5995.585813976809, + "y": 13030.576338140629 }, "floatingObject": { "isPinned": false, @@ -1891,17 +3976,17 @@ "procedureJavascriptCode": { "type": "Procedure Javascript Code", "name": "New Procedure Javascript Code", - "code": " / Initialization Code. /\n\nvariable.cC1 = []\nvariable.cC2 = []\nvariable.cC3 = []\nvariable.cC4 = []\nvariable.cC5 = []", + "code": "variable.H1 = []\nvariable.L1 = []\nvariable.H2 = []\nvariable.L2= []", "project": "Foundations", - "id": "a2feec6a-805f-4b32-9812-d4e3adf5b62c", + "id": "d995f3a9-3479-4abb-8666-32616a8256cd", "savedPayload": { "position": { - "x": 6726.27089817874, - "y": 15392.844586361796 + "x": 5548.050961061086, + "y": 12983.538529670184 }, "targetPosition": { - "x": 6909.3023875628505, - "y": 14981.749130422626 + "x": 5697.229245366327, + "y": 12999.217799160333 }, "floatingObject": { "isPinned": false, @@ -1916,15 +4001,15 @@ } } }, - "id": "9e6ed136-1d2c-4e5e-9e57-a0f990559959", + "id": "ddef453e-7e2d-4f0a-a999-45df1379b529", "savedPayload": { "position": { - "x": 6909.3023875628505, - "y": 14981.749130422626 + "x": 5697.229245366327, + "y": 12999.217799160333 }, "targetPosition": { - "x": 7275.365366331071, - "y": 14159.558218544285 + "x": 5995.585813976809, + "y": 13030.576338140629 }, "floatingObject": { "isPinned": false, @@ -1939,18 +4024,18 @@ } } }, - "id": "a9ec422c-ecda-4d05-85c0-8dbd6f30d35b", + "id": "28b4daeb-854f-49eb-b754-5c242e736683", "savedPayload": { "position": { - "x": 7275.365366331071, - "y": 14159.558218544285 + "x": 5995.585813976809, + "y": 13030.576338140629 }, "targetPosition": { - "x": 7416.156384867279, - "y": 13270.638712008662 + "x": 6822.564856684885, + "y": 13371.408593991517 }, "floatingObject": { - "isPinned": false, + "isPinned": true, "isFrozen": false, "isCollapsed": false, "angleToParent": 2, @@ -1962,22 +4047,22 @@ } } }, - "id": "f353d810-99d6-4606-8b82-0ff852b7f461", + "id": "dc52673f-3fd7-4ce7-a790-47b8cc91cebc", "savedPayload": { "position": { - "x": 7416.156384867279, - "y": 13270.638712008662 + "x": 6822.564856684885, + "y": 13371.408593991517 }, "targetPosition": { - "x": 7097.958333333332, - "y": 12952.440660474716 + "x": 6890.663431645817, + "y": 13237.757615363262 }, "floatingObject": { "isPinned": false, "isFrozen": false, "isCollapsed": true, "angleToParent": 2, - "distanceToParent": 4, + "distanceToParent": 2, "arrangementStyle": 0 }, "uiObject": { @@ -1985,8 +4070,8 @@ }, "referenceParent": { "type": "Plotter Module", - "name": "MBO", - "id": "3ac9d8dc-5e83-40d2-afcc-eef1b523b144" + "name": "Trend Intensity", + "id": "126e5dd4-cb36-4c6a-b628-c1fb6763a243" }, "referenceParentCombinedNodePath": [ [ @@ -1996,26 +4081,26 @@ "96df7884-b792-4210-94c3-a3e7f83d6d85" ], [ - "MBO", + "Trend Intensity", "Plotter", "Foundations", - "cca23a4f-9f3f-4484-b136-79601b91f422" + "36a5735d-0e83-4ab6-a690-4f7845ffaeca" ], [ - "MBO", + "Trend Intensity", "Plotter Module", "Foundations", - "d5690f7b-1a51-4308-8ae3-b5610cd5bf27" + "3d0f3d10-f6ec-4006-a833-ac7c7ee136d5" ] ] } } ], - "id": "37ad4087-afe5-49ab-930e-76e7c7666e15", + "id": "b01abffd-bb18-4d01-b6f6-49fa662f8088", "savedPayload": { "position": { - "x": 7097.958333333332, - "y": 12952.440660474716 + "x": 6890.663431645817, + "y": 13237.757615363262 }, "targetPosition": { "x": 6797.958333333332, @@ -2066,7 +4151,7 @@ "name": "New Point Formula", "code": "x = record.end\ny = record.MBO3", "project": "Foundations", - "id": "6381336a-3801-4dee-acce-a558a1618a26", + "id": "f9a60e71-7883-4fa2-a189-669317668dbf", "savedPayload": { "position": { "x": 6429.269150692614, @@ -2089,7 +4174,7 @@ } } }, - "id": "4db4c6c4-8d80-4d45-bc31-60f879de8bc3", + "id": "39b13bda-c144-4e28-983f-882105c133a1", "savedPayload": { "position": { "x": 6721.938365946742, @@ -2121,7 +4206,7 @@ "name": "New Point Formula", "code": "x = record.begin\ny = record.previous.MBO4", "project": "Foundations", - "id": "b6ca3834-9eeb-4b31-86c3-562866df5794", + "id": "2e13ad4f-def6-42af-a73e-6739a808bb50", "savedPayload": { "position": { "x": 6557.580196294454, @@ -2144,7 +4229,7 @@ } } }, - "id": "bfc21c33-4fa2-4a8f-bcc5-70fddec59f4b", + "id": "5d7fb1ec-17cb-479e-8689-d55dfb7473c7", "savedPayload": { "position": { "x": 6786.093888747662, @@ -2176,7 +4261,7 @@ "name": "New Point Formula", "code": "x = record.end\ny = record.MBO4", "project": "Foundations", - "id": "d4aa9047-e306-463c-956d-f3df50aad002", + "id": "56b34989-3bd0-4923-b3bc-d085168a0ad7", "savedPayload": { "position": { "x": 6790.590708001298, @@ -2199,7 +4284,7 @@ } } }, - "id": "4b69dc7a-d218-41eb-891e-59cf5bd8cb76", + "id": "da65c9fc-b9d9-4e12-96b3-71badf2fd950", "savedPayload": { "position": { "x": 6902.599144601084, @@ -2231,7 +4316,7 @@ "name": "New Point Formula", "code": "x = record.begin\ny = record.previous.MBO5", "project": "Foundations", - "id": "acb55a0c-3276-4710-84a9-bad323320a36", + "id": "01e1b245-4e14-4bab-b4dc-b6fa6d455b67", "savedPayload": { "position": { "x": 7074.920785662181, @@ -2254,7 +4339,7 @@ } } }, - "id": "a1b1a832-ad25-41db-a2e1-d640bf52a41d", + "id": "57343148-daad-4b7b-942f-b2223b6879c0", "savedPayload": { "position": { "x": 7044.764183431525, @@ -2286,7 +4371,7 @@ "name": " ", "code": "x = record.end\ny = record.MBO5", "project": "Foundations", - "id": "93f5153c-dcfb-47e4-a0c5-e2137609706e", + "id": "b2056d20-86b7-49c3-9b42-b8458ff4207d", "savedPayload": { "position": { "x": 7345.433835033885, @@ -2309,7 +4394,7 @@ } } }, - "id": "1eb663f3-874c-46c2-8792-47aac1c8a08b", + "id": "82efdbfb-0d54-4f2b-8333-e5f5aeaf01e5", "savedPayload": { "position": { "x": 7180.020708117378, @@ -2341,7 +4426,7 @@ "name": "New Point Formula", "code": "x = record.begin\ny = record.previous.MBO1", "project": "Foundations", - "id": "fe798d21-f54f-4961-a679-eb6143497e73", + "id": "08e28ebc-d03e-4f2d-bdc2-ee18a0860757", "savedPayload": { "position": { "x": 7540.158576541003, @@ -2364,7 +4449,7 @@ } } }, - "id": "7ec089f3-47e3-4c91-bd55-b914e357db5e", + "id": "a4396ba3-98df-48b5-8dce-6114b8ac660a", "savedPayload": { "position": { "x": 7277.3830788709365, @@ -2396,7 +4481,7 @@ "name": "New Point Formula", "code": "x = record.end\ny = record.MBO1", "project": "Foundations", - "id": "524306a6-ff1f-46f5-9b4a-379f21d1c597", + "id": "7a5709d5-9f84-4101-8af7-1543cc7300ef", "savedPayload": { "position": { "x": 7614.48591859178, @@ -2419,7 +4504,7 @@ } } }, - "id": "5cecdebc-c2d1-415e-9342-a40d116573f8", + "id": "6fdbe188-bd9e-4322-afc4-1725025db464", "savedPayload": { "position": { "x": 7314.546749896325, @@ -2451,7 +4536,7 @@ "name": "New Point Formula", "code": "x = record.begin\ny = record.previous.MBO2", "project": "Foundations", - "id": "264f749a-abf4-43fd-8f09-c28d25ab6f07", + "id": "f27ee3f7-ede3-4916-99ae-e6236f3767aa", "savedPayload": { "position": { "x": 7551.388362863959, @@ -2474,7 +4559,7 @@ } } }, - "id": "297e5d24-a100-4627-934b-ad6bf24526a7", + "id": "98af5f9b-d6ec-4739-897f-bf6bb25d0d92", "savedPayload": { "position": { "x": 7282.9979720324145, @@ -2506,7 +4591,7 @@ "name": "New Point Formula", "code": "x = record.end\ny = record.MBO2", "project": "Foundations", - "id": "5657ea81-fbe2-4086-b13e-e16dc9ffba62", + "id": "22a16e53-6c4c-4224-a941-ffb495bba27e", "savedPayload": { "position": { "x": 7365.3207989668035, @@ -2529,7 +4614,7 @@ } } }, - "id": "b98f11af-ebb6-405e-8f0f-5cfb29f12bbb", + "id": "b6e0b52d-abdf-44cf-b2fe-41797af03774", "savedPayload": { "position": { "x": 7189.964190083837, @@ -2561,7 +4646,7 @@ "name": "New Point Formula", "code": "x = record.begin\ny = record.previous.MBO3", "project": "Foundations", - "id": "33d542b3-5819-41a5-b219-188bf7fce245", + "id": "41258271-07b9-4d56-82d8-7d8683a426e9", "savedPayload": { "position": { "x": 7098.909063431926, @@ -2584,7 +4669,7 @@ } } }, - "id": "bc66b66a-0229-4ffe-932a-bf4c2bd03fa1", + "id": "4d3e9e55-04f8-4726-ad19-1bf0e3016247", "savedPayload": { "position": { "x": 7056.758322316398, @@ -2616,7 +4701,7 @@ "name": "New Point Formula", "code": "x = record.begin\ny = 0", "project": "Foundations", - "id": "f6f77299-9782-4086-8173-eddf9b12d638", + "id": "496c3047-ae3e-427f-b580-d652972feb0d", "savedPayload": { "position": { "x": 6813.184874260906, @@ -2639,7 +4724,7 @@ } } }, - "id": "0e54d6cb-6a55-4c1f-bf63-a3952767ce25", + "id": "45a2027a-0ec1-4abf-a27e-2ec290c37bae", "savedPayload": { "position": { "x": 6913.896227730888, @@ -2671,7 +4756,7 @@ "name": "New Point Formula", "code": "x = record.end\ny = 0", "project": "Foundations", - "id": "84dd74dc-f038-4e65-a6ca-0272914c12c2", + "id": "87e6aee0-4e5c-4942-9549-3b302984d5d1", "savedPayload": { "position": { "x": 6573.604199843073, @@ -2694,7 +4779,7 @@ } } }, - "id": "a6999d13-a1b3-4a64-ac50-4bc840b64c0d", + "id": "02eac3cd-5e46-4c60-8599-79166605310f", "savedPayload": { "position": { "x": 6794.105890521972, @@ -2718,7 +4803,7 @@ } } ], - "id": "60a21300-32da-4e3a-863c-d5069b6fbe8d", + "id": "006b328e-54d0-4bf1-853b-1b3b7c86df0c", "savedPayload": { "position": { "x": 7014.60758120087, @@ -2756,7 +4841,7 @@ "name": "New Style", "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.TRUE_BLUE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", "project": "Foundations", - "id": "6d1e0e8f-5a2c-47df-a8ef-4a9abce23bfe", + "id": "a3bc1ece-c8a1-4c00-8432-8938a2f3753d", "savedPayload": { "position": { "x": 6607.765954468664, @@ -2780,7 +4865,7 @@ } }, "styleConditions": [], - "id": "df63314f-7b6e-4615-b248-8dc0f40eedd4", + "id": "009f1be2-4b8c-4381-b5bf-1485899281d9", "savedPayload": { "position": { "x": 6457.765954468664, @@ -2808,7 +4893,7 @@ "type": "Polygon Vertex", "name": " MBO 1 Begin", "project": "Foundations", - "id": "625e615a-d79d-4a05-869b-4706caeda81d", + "id": "e2bdfebd-6435-4f90-9497-842d94a753bd", "savedPayload": { "position": { "x": 6567.573575603996, @@ -2832,7 +4917,7 @@ "referenceParent": { "type": "Point", "name": "MBO 1 Begin", - "id": "7ec089f3-47e3-4c91-bd55-b914e357db5e" + "id": "a4396ba3-98df-48b5-8dce-6114b8ac660a" }, "referenceParentCombinedNodePath": [ [ @@ -2878,7 +4963,7 @@ "type": "Polygon Vertex", "name": " MBO 1 End", "project": "Foundations", - "id": "8b8caee9-9404-4e27-a8da-54a8ec8e2631", + "id": "2737be5f-3c71-40eb-aefa-b0d5f18de8c1", "savedPayload": { "position": { "x": 6157.765954468664, @@ -2902,7 +4987,7 @@ "referenceParent": { "type": "Point", "name": "MBO 1 End", - "id": "5cecdebc-c2d1-415e-9342-a40d116573f8" + "id": "6fdbe188-bd9e-4322-afc4-1725025db464" }, "referenceParentCombinedNodePath": [ [ @@ -2945,7 +5030,7 @@ } } ], - "id": "3f43e1e7-e75d-4cdf-85c5-dce33741741e", + "id": "e6a5cf8c-6db0-4794-a05d-8201b408079e", "savedPayload": { "position": { "x": 6307.765954468664, @@ -2981,7 +5066,7 @@ "name": "New Style", "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", "project": "Foundations", - "id": "a2d71e60-a2da-4a4e-9135-59aa3e622832", + "id": "424fc2f7-6578-4f11-8b6f-373c955bd2c4", "savedPayload": { "position": { "x": 7261.861583566112, @@ -3005,7 +5090,7 @@ } }, "styleConditions": [], - "id": "a1ca0a53-ffa0-4108-963b-bfcf0003f72f", + "id": "a0d363df-5ea7-4641-9f73-470da8e386fe", "savedPayload": { "position": { "x": 6962.700444411758, @@ -3033,7 +5118,7 @@ "type": "Polygon Vertex", "name": " MBO 2 Begin", "project": "Foundations", - "id": "bace1170-4727-4feb-a167-1195ffbe4412", + "id": "fe614474-3d54-4527-a9fc-8c0766c34f0a", "savedPayload": { "position": { "x": 6641.120277181477, @@ -3057,7 +5142,7 @@ "referenceParent": { "type": "Point", "name": "MBO 2 Begin", - "id": "297e5d24-a100-4627-934b-ad6bf24526a7" + "id": "98af5f9b-d6ec-4739-897f-bf6bb25d0d92" }, "referenceParentCombinedNodePath": [ [ @@ -3103,7 +5188,7 @@ "type": "Polygon Vertex", "name": " MBO 2 End", "project": "Foundations", - "id": "e8d6767b-d0f7-4fd3-b40a-8a3648fde7bf", + "id": "0c3464f0-e39f-4a15-9fcc-9a76d4af8192", "savedPayload": { "position": { "x": 6364.378166103051, @@ -3127,7 +5212,7 @@ "referenceParent": { "type": "Point", "name": "MBO 2 End", - "id": "b98f11af-ebb6-405e-8f0f-5cfb29f12bbb" + "id": "b6e0b52d-abdf-44cf-b2fe-41797af03774" }, "referenceParentCombinedNodePath": [ [ @@ -3170,7 +5255,7 @@ } } ], - "id": "5ce0b261-45e3-41a6-a25b-dacd324393f4", + "id": "05ea8c7d-a5b0-4625-a2a7-ef2152d182a1", "savedPayload": { "position": { "x": 6125.604046864089, @@ -3206,7 +5291,7 @@ "name": "New Style", "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", "project": "Foundations", - "id": "87a39f56-f800-41a1-aa26-3e050ceca15f", + "id": "909d51cd-0eb6-4daa-9fb8-36e425179165", "savedPayload": { "position": { "x": 6776.078735876707, @@ -3230,7 +5315,7 @@ } }, "styleConditions": [], - "id": "fdb946ff-f04d-405e-89bc-8d75ac2d93e1", + "id": "dc89bb68-94a1-4818-affe-faa1c1a0b6fc", "savedPayload": { "position": { "x": 6607.08271845762, @@ -3258,7 +5343,7 @@ "type": "Polygon Vertex", "name": " MBO 3 Begin", "project": "Foundations", - "id": "de991f3c-a72e-4cd3-9be8-3caaefac663e", + "id": "5595ed02-c355-4056-a220-1d478b03de89", "savedPayload": { "position": { "x": 6190.215068743735, @@ -3282,7 +5367,7 @@ "referenceParent": { "type": "Point", "name": "MBO 3 Begin", - "id": "bc66b66a-0229-4ffe-932a-bf4c2bd03fa1" + "id": "4d3e9e55-04f8-4726-ad19-1bf0e3016247" }, "referenceParentCombinedNodePath": [ [ @@ -3328,7 +5413,7 @@ "type": "Polygon Vertex", "name": " MBO 3 End", "project": "Foundations", - "id": "a56288f1-c333-4ae3-a979-1f04515ad3a3", + "id": "fb8a7746-11b0-4df1-a824-ece3dbf714f3", "savedPayload": { "position": { "x": 6269.090683619447, @@ -3352,7 +5437,7 @@ "referenceParent": { "type": "Point", "name": "MBO 3 End", - "id": "4db4c6c4-8d80-4d45-bc31-60f879de8bc3" + "id": "39b13bda-c144-4e28-983f-882105c133a1" }, "referenceParentCombinedNodePath": [ [ @@ -3395,7 +5480,7 @@ } } ], - "id": "a478b83b-f3f5-4573-b0d6-cc571a3f797d", + "id": "3e525e40-2862-40fc-987c-39551b82c82e", "savedPayload": { "position": { "x": 5897.958333333332, @@ -3431,7 +5516,7 @@ "name": "New Style", "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", "project": "Foundations", - "id": "6ecddd7d-ce81-4a22-8a69-cb4eb7f74ea0", + "id": "d9a47ce1-c6e4-42fd-bd30-97d148d6707f", "savedPayload": { "position": { "x": 6222.433386950948, @@ -3455,7 +5540,7 @@ } }, "styleConditions": [], - "id": "26776353-14f2-4a92-a801-b46c2e34f988", + "id": "0ce54c39-efe0-43a3-aa39-a352361359ed", "savedPayload": { "position": { "x": 6310.859939274219, @@ -3483,7 +5568,7 @@ "type": "Polygon Vertex", "name": " MBO 4 Begin", "project": "Foundations", - "id": "d3039fad-e768-4f2e-ba87-f8585fa969f7", + "id": "0d2c7066-173c-4091-a43a-61741e0d5b80", "savedPayload": { "position": { "x": 6112.614649861647, @@ -3507,7 +5592,7 @@ "referenceParent": { "type": "Point", "name": "MBO 4 Begin", - "id": "bfc21c33-4fa2-4a8f-bcc5-70fddec59f4b" + "id": "5d7fb1ec-17cb-479e-8689-d55dfb7473c7" }, "referenceParentCombinedNodePath": [ [ @@ -3553,7 +5638,7 @@ "type": "Polygon Vertex", "name": " MBO 4 End", "project": "Foundations", - "id": "4d04dc7d-8fa2-4f0e-b6a9-212d6eae2337", + "id": "a2405932-db87-4cd9-8ae7-8bd54fc02321", "savedPayload": { "position": { "x": 6487.71304392076, @@ -3577,7 +5662,7 @@ "referenceParent": { "type": "Point", "name": "MBO 4 End", - "id": "4b69dc7a-d218-41eb-891e-59cf5bd8cb76" + "id": "da65c9fc-b9d9-4e12-96b3-71badf2fd950" }, "referenceParentCombinedNodePath": [ [ @@ -3620,7 +5705,7 @@ } } ], - "id": "e1f22dbf-c19b-47f1-904f-2d2fb2a9dace", + "id": "17f2101e-63ba-47c1-8c1e-2e267e718b5f", "savedPayload": { "position": { "x": 5758.180585446612, @@ -3656,7 +5741,7 @@ "name": "New Style", "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.TRUE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", "project": "Foundations", - "id": "70810c41-8546-4fe6-8277-2a73cdbeed71", + "id": "e2d7bc74-31c0-4cc9-93c8-0db85906d163", "savedPayload": { "position": { "x": 5462.831776836891, @@ -3680,7 +5765,7 @@ } }, "styleConditions": [], - "id": "00d721b0-3e36-49a9-8e35-3988d076808a", + "id": "a5618c13-0b4d-4cde-b879-720b700e5fb5", "savedPayload": { "position": { "x": 5742.093901430152, @@ -3708,7 +5793,7 @@ "type": "Polygon Vertex", "name": " MBO 5 End", "project": "Foundations", - "id": "acebeb34-bc03-4d33-b89d-14496a0f3f38", + "id": "4c986866-7c94-428f-9859-d171d243446f", "savedPayload": { "position": { "x": 5911.753718713495, @@ -3732,7 +5817,7 @@ "referenceParent": { "type": "Point", "name": "MBO 5 End", - "id": "1eb663f3-874c-46c2-8792-47aac1c8a08b" + "id": "82efdbfb-0d54-4f2b-8333-e5f5aeaf01e5" }, "referenceParentCombinedNodePath": [ [ @@ -3778,7 +5863,7 @@ "type": "Polygon Vertex", "name": " MBO 5 Begin", "project": "Foundations", - "id": "d32a34bb-9505-446a-921c-4ec17d9ba2c8", + "id": "2fa22f45-83df-4487-9675-94f0ef4eca69", "savedPayload": { "position": { "x": 6300.618150616675, @@ -3802,7 +5887,7 @@ "referenceParent": { "type": "Point", "name": "MBO 5 Begin", - "id": "a1b1a832-ad25-41db-a2e1-d640bf52a41d" + "id": "57343148-daad-4b7b-942f-b2223b6879c0" }, "referenceParentCombinedNodePath": [ [ @@ -3845,7 +5930,7 @@ } } ], - "id": "29e459c7-1795-4541-ba91-71d5c43e9042", + "id": "df14d68b-209e-40e9-9bbe-ee8a2814d7e6", "savedPayload": { "position": { "x": 5788.150712198, @@ -3881,7 +5966,7 @@ "name": "New Style", "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", "project": "Foundations", - "id": "1d67ad3b-e17c-4561-9773-faecc951dfbe", + "id": "68b06973-346a-43f2-bc9a-d111c494c647", "savedPayload": { "position": { "x": 5056.757124029135, @@ -3905,7 +5990,7 @@ } }, "styleConditions": [], - "id": "bb02b22c-0590-432d-8096-435cacf35990", + "id": "9200c219-2d9b-4986-8c9a-5f98fec9fa82", "savedPayload": { "position": { "x": 5346.534871915856, @@ -3933,7 +6018,7 @@ "type": "Polygon Vertex", "name": " Zero Begin", "project": "Foundations", - "id": "664d96a1-c67b-4994-b8c7-0d1af1bbba7e", + "id": "e6046c70-88b4-4ed9-b392-457782730174", "savedPayload": { "position": { "x": 5558.666906271819, @@ -3957,32 +6042,44 @@ "referenceParent": { "type": "Point", "name": "Zero Begin", - "id": "0e54d6cb-6a55-4c1f-bf63-a3952767ce25" + "id": "45a2027a-0ec1-4abf-a27e-2ec290c37bae" }, "referenceParentCombinedNodePath": [ [ "Weighted EMA cross strategy", - "Data Mine" + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" ], [ "MBO", - "Plotter" + "Plotter", + "Foundations", + "cca23a4f-9f3f-4484-b136-79601b91f422" ], [ "MBO", - "Plotter Module" + "Plotter Module", + "Foundations", + "d5690f7b-1a51-4308-8ae3-b5610cd5bf27" ], [ "New Shapes", - "Shapes" + "Shapes", + "Foundations", + "395c3b1c-e753-4022-9f2e-178e0ff689ae" ], [ "New Chart Points", - "Chart Points" + "Chart Points", + "Foundations", + "a64defce-1bca-4d1a-a640-710797bad1bb" ], [ "Zero Begin", - "Point" + "Point", + "Foundations", + "8e7194f2-2115-43c3-8dd9-07ef6fca676c" ] ] } @@ -3991,7 +6088,7 @@ "type": "Polygon Vertex", "name": " Zero End", "project": "Foundations", - "id": "68a50aba-81bf-48cc-bd52-66226fc3530d", + "id": "5254dc6f-cdba-42f2-ba8f-89842f0a6e32", "savedPayload": { "position": { "x": 5926.090367689296, @@ -4015,38 +6112,50 @@ "referenceParent": { "type": "Point", "name": "Zero End", - "id": "a6999d13-a1b3-4a64-ac50-4bc840b64c0d" + "id": "02eac3cd-5e46-4c60-8599-79166605310f" }, "referenceParentCombinedNodePath": [ [ "Weighted EMA cross strategy", - "Data Mine" + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" ], [ "MBO", - "Plotter" + "Plotter", + "Foundations", + "cca23a4f-9f3f-4484-b136-79601b91f422" ], [ "MBO", - "Plotter Module" + "Plotter Module", + "Foundations", + "d5690f7b-1a51-4308-8ae3-b5610cd5bf27" ], [ "New Shapes", - "Shapes" + "Shapes", + "Foundations", + "395c3b1c-e753-4022-9f2e-178e0ff689ae" ], [ "New Chart Points", - "Chart Points" + "Chart Points", + "Foundations", + "a64defce-1bca-4d1a-a640-710797bad1bb" ], [ "Zero End", - "Point" + "Point", + "Foundations", + "2a210337-5a6a-40f0-85f9-fbc8e6b8224b" ] ] } } ], - "id": "c53e4d36-3f84-4889-97a4-d34e5442d2fb", + "id": "6c153f1f-39e8-426f-bded-c0e1b426f1ce", "savedPayload": { "position": { "x": 5636.312619802576, @@ -4072,7 +6181,7 @@ ], "images": [], "texts": [], - "id": "5c5bbb6a-7525-4a54-8fb8-c3a74324ee39", + "id": "09181505-c4e4-482d-820b-39f713b02d60", "savedPayload": { "position": { "x": 6047.958333333332, @@ -4085,7 +6194,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -4112,7 +6221,7 @@ "name": "New Data Formula", "code": "record.MBO1", "project": "Foundations", - "id": "9cc3e0b7-4e52-4c3e-8323-68740bdebc50", + "id": "f1fb55ae-6ce4-4cb9-9d3d-b72d63be1a5a", "savedPayload": { "position": { "x": 5917.958333333332, @@ -4140,7 +6249,7 @@ "name": "New Text Style", "config": "{\n \"paletteColor\": \"UI_COLOR.TRUE_BLUE\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", "project": "Foundations", - "id": "49466779-32ab-4ab7-8464-21f16906cffb", + "id": "880e8a8e-14d5-4beb-9620-7675ceea9e2b", "savedPayload": { "position": { "x": 5467.958333333332, @@ -4163,7 +6272,7 @@ } } }, - "id": "971c8b5b-67ac-46ca-be2d-41e537b4fb8f", + "id": "87deda39-2a9d-4c55-9edd-16cda6732de6", "savedPayload": { "position": { "x": 5897.958333333332, @@ -4196,7 +6305,7 @@ "name": "New Data Formula", "code": "record.MBO2", "project": "Foundations", - "id": "6b12ba65-45a7-48d6-ad4e-c4f2ce8ac11f", + "id": "d776093a-e51c-4a04-9a51-ef20812a03f9", "savedPayload": { "position": { "x": 5467.958333333332, @@ -4224,7 +6333,7 @@ "name": "New Text Style", "config": "{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", "project": "Foundations", - "id": "90e7ec10-2401-4e7a-9a3e-b508c566e2b9", + "id": "d5cd5576-c709-43c4-8a0c-fc9b67b01bc1", "savedPayload": { "position": { "x": 5467.958333333332, @@ -4247,7 +6356,7 @@ } } }, - "id": "03560d7a-b262-4c58-a4bd-8b7264d7084a", + "id": "0843fed9-c9f3-4d2a-aa79-62a500e47269", "savedPayload": { "position": { "x": 5747.958333333332, @@ -4280,7 +6389,7 @@ "name": "New Data Formula", "code": "record.MBO3", "project": "Foundations", - "id": "1acef258-187c-4dfe-814f-7ce9b15cb7c8", + "id": "821fd37c-9796-4389-867d-326d4049bb45", "savedPayload": { "position": { "x": 5467.958333333332, @@ -4308,7 +6417,7 @@ "name": "New Text Style", "config": "{\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", "project": "Foundations", - "id": "016da53c-00c8-4cf3-a18e-d11d88b29f5d", + "id": "30823510-566e-4d00-9022-4c3257549e41", "savedPayload": { "position": { "x": 5917.958333333332, @@ -4331,7 +6440,7 @@ } } }, - "id": "4a197540-7edd-430e-aa64-259f63a38c46", + "id": "e6a912b1-a91d-42f6-ae7d-f221f8a46e58", "savedPayload": { "position": { "x": 5897.958333333332, @@ -4364,7 +6473,7 @@ "name": "New Data Formula", "code": "record.MBO4", "project": "Foundations", - "id": "cceea5fe-3567-4853-8941-87d6faac07c9", + "id": "f86a44da-cc39-429e-b1ba-498392001a60", "savedPayload": { "position": { "x": 5917.958333333332, @@ -4392,7 +6501,7 @@ "name": "New Text Style", "config": "{\n \"paletteColor\": \"UI_COLOR.BLACK\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", "project": "Foundations", - "id": "db47398f-ef40-4084-8fd1-b787a1830af0", + "id": "788845fe-0771-4d30-8f02-2fe827326901", "savedPayload": { "position": { "x": 6367.958333333332, @@ -4415,7 +6524,7 @@ } } }, - "id": "48910da2-4a6c-4756-b6d7-921588e822a7", + "id": "41ab24d7-8a18-4275-a667-f75c9f71638b", "savedPayload": { "position": { "x": 6197.958333333332, @@ -4448,7 +6557,7 @@ "name": "New Data Formula", "code": "record.MBO5", "project": "Foundations", - "id": "fb466866-8da8-4593-af20-50ea0d0a8f46", + "id": "2bcb893c-bc82-4d59-ba5d-df448c861b87", "savedPayload": { "position": { "x": 6367.958333333332, @@ -4476,7 +6585,7 @@ "name": "New Text Style", "config": "{\n \"paletteColor\": \"UI_COLOR.TRUE_PURPLE\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", "project": "Foundations", - "id": "4b13060c-d6b2-408f-ae50-03fb80ff37ac", + "id": "fa45c1c8-3c71-4e9f-bdd9-02b73e539eb7", "savedPayload": { "position": { "x": 6367.958333333332, @@ -4499,7 +6608,7 @@ } } }, - "id": "687909f7-423a-4602-a11f-42045c0462e8", + "id": "7dc6e63d-b9de-4ade-b84e-540ae89b9374", "savedPayload": { "position": { "x": 6347.958333333332, @@ -4523,7 +6632,7 @@ } } ], - "id": "b1ab3a75-a45e-4f06-89fe-f6712497a08b", + "id": "09eaca4d-f9d7-42d1-a402-ed9c954ac0bb", "savedPayload": { "position": { "x": 6047.958333333332, @@ -4547,7 +6656,7 @@ } } ], - "id": "3ac9d8dc-5e83-40d2-afcc-eef1b523b144", + "id": "4f685453-cf2b-44b2-b6df-ca2ffae7bfef", "savedPayload": { "position": { "x": 6197.958333333332, @@ -4571,11 +6680,11 @@ } } ], - "id": "8583e4a4-8856-454d-b5f6-603dd8eae886", + "id": "ddaecc57-05c4-45a2-80b7-9530786184bf", "savedPayload": { "position": { - "x": 6497.958333333332, - "y": 12952.440660474716 + "x": 6555.253235020848, + "y": 13128.77623616246 }, "targetPosition": { "x": 6797.958333333332, @@ -4593,9 +6702,3582 @@ "isRunning": false } } + }, + { + "type": "Plotter", + "name": "EMAs", + "config": "{\n \"codeName\": \"EMAs\"\n}", + "project": "Foundations", + "modules": [ + { + "type": "Plotter Module", + "name": "EMAs", + "config": "{\n \"codeName\": \"emas\",\n \"icon\": \"oscillator\"\n}", + "project": "Foundations", + "shapes": { + "type": "Shapes", + "name": "New Shapes", + "project": "Foundations", + "chartPoints": [ + { + "type": "Chart Points", + "name": "New Chart Points", + "project": "Foundations", + "points": [ + { + "type": "Point", + "name": "EMA3 End", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.end\ny = record.ema3", + "project": "Foundations", + "id": "af9276b3-f481-4833-b093-ad13115989c5", + "savedPayload": { + "position": { + "x": 5512.911481868651, + "y": 12067.49334323026 + }, + "targetPosition": { + "x": 5543.458377879801, + "y": 12365.934103087362 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "2d905229-b3de-4523-b7a1-8d0cc973fba9", + "savedPayload": { + "position": { + "x": 5543.458377879801, + "y": 12365.934103087362 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA4 Begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = record.previous.ema4", + "project": "Foundations", + "id": "e0a83292-2631-4ff9-bc55-e7b614471b2d", + "savedPayload": { + "position": { + "x": 5845.308418260563, + "y": 12129.216378142846 + }, + "targetPosition": { + "x": 5709.656846075757, + "y": 12396.795620543655 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "bc75b99d-1ec4-4911-ad22-7a8bc9188ef9", + "savedPayload": { + "position": { + "x": 5709.656846075757, + "y": 12396.795620543655 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA4 End", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.end\ny = record.ema4", + "project": "Foundations", + "id": "6fd4de80-79a2-4214-9a3e-d2cf546148ec", + "savedPayload": { + "position": { + "x": 6091.56852325154, + "y": 12360.848450730784 + }, + "targetPosition": { + "x": 5832.786898571246, + "y": 12512.611656837624 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "6f35c6e6-660e-4535-8c76-c7576581bdba", + "savedPayload": { + "position": { + "x": 5832.786898571246, + "y": 12512.611656837624 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA5 Begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = record.previous.ema5", + "project": "Foundations", + "id": "aa384db6-a601-4d87-948f-66a437da12c3", + "savedPayload": { + "position": { + "x": 6173.505953497702, + "y": 12688.848014581414 + }, + "targetPosition": { + "x": 5873.755613694327, + "y": 12676.611438762939 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "051d53cc-8a41-49a0-9e68-782a8f26fcf7", + "savedPayload": { + "position": { + "x": 5873.755613694327, + "y": 12676.611438762939 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA5 End", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": " ", + "code": "x = record.end\ny = record.ema5", + "project": "Foundations", + "id": "1e655e02-7cd3-4fbf-9677-a8113da62f8c", + "savedPayload": { + "position": { + "x": 6065.106153838108, + "y": 13009.077525706343 + }, + "targetPosition": { + "x": 5819.55571386453, + "y": 12836.726194325403 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "338b5e2f-7ec6-4652-8687-0ce6d7904ec0", + "savedPayload": { + "position": { + "x": 5819.55571386453, + "y": 12836.726194325403 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA1 Begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = record.previous.ema1", + "project": "Foundations", + "id": "63e53056-31af-4689-b09a-7a2cdf05de08", + "savedPayload": { + "position": { + "x": 5800.785294748296, + "y": 13219.866376957001 + }, + "targetPosition": { + "x": 5687.395284319624, + "y": 12942.120619950732 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "4753ab15-1778-4fe1-93ea-9f52fd5a17a9", + "savedPayload": { + "position": { + "x": 5687.395284319624, + "y": 12942.120619950732 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA1 End", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.end\ny = record.ema1", + "project": "Foundations", + "id": "b8eb7392-d018-4d74-bc65-8722b746d0c2", + "savedPayload": { + "position": { + "x": 5464.463381387334, + "y": 13254.290597424166 + }, + "targetPosition": { + "x": 5519.234327639143, + "y": 12959.332730184315 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "8b04cb68-e346-41ed-943c-b2daf2800805", + "savedPayload": { + "position": { + "x": 5519.234327639143, + "y": 12959.332730184315 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA2 Begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = record.previous.ema2", + "project": "Foundations", + "id": "49de5e7d-4651-4ac2-a310-57760f3063ef", + "savedPayload": { + "position": { + "x": 5162.920244910246, + "y": 13101.420740339425 + }, + "targetPosition": { + "x": 5368.462759400599, + "y": 12882.897801641944 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "5317bdec-1ced-410d-b77f-2bd2d60ef68c", + "savedPayload": { + "position": { + "x": 5368.462759400599, + "y": 12882.897801641944 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA2 End", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.end\ny = record.ema2", + "project": "Foundations", + "id": "fef305fa-d6b4-479e-8913-19ab4145620a", + "savedPayload": { + "position": { + "x": 4991.893700546513, + "y": 12809.791905200389 + }, + "targetPosition": { + "x": 5282.949487218732, + "y": 12737.083384072426 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "d67b85dc-b2c4-426c-9b2e-34847e1f621c", + "savedPayload": { + "position": { + "x": 5282.949487218732, + "y": 12737.083384072426 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "EMA3 Begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = record.previous.ema3", + "project": "Foundations", + "id": "c76f5fb5-d08c-494d-ab57-e9f7c6c984c3", + "savedPayload": { + "position": { + "x": 5005.683467715805, + "y": 12471.994186612821 + }, + "targetPosition": { + "x": 5289.844370803378, + "y": 12568.184524778642 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "1c4c48c9-c171-4ab9-ab2a-4d0ed547cca1", + "savedPayload": { + "position": { + "x": 5289.844370803378, + "y": 12568.184524778642 + }, + "targetPosition": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "cef26a6d-b78f-4bb2-8511-403fff7bb8df", + "savedPayload": { + "position": { + "x": 5574.005273890952, + "y": 12664.374862944464 + }, + "targetPosition": { + "x": 5386.958333333332, + "y": 12429.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "polygons": [ + { + "type": "Polygon", + "name": "EMA1", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.TRUE_BLUE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "1027ddda-bb0f-40e6-952b-74fe81aff995", + "savedPayload": { + "position": { + "x": 5905.1588004555315, + "y": 12855.816352232392 + }, + "targetPosition": { + "x": 5612.680426800985, + "y": 12789.060072045497 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "ad38a27f-18f7-427d-b4e5-773a9144d02e", + "savedPayload": { + "position": { + "x": 5612.680426800985, + "y": 12789.060072045497 + }, + "targetPosition": { + "x": 5320.202053146438, + "y": 12722.303791858601 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " EMA1 Begin", + "project": "Foundations", + "id": "dd9ff2c6-3665-4f5f-8ed3-0945e2dd6f12", + "savedPayload": { + "position": { + "x": 5253.445772959543, + "y": 13014.782165513148 + }, + "targetPosition": { + "x": 5320.202053146438, + "y": 12722.303791858601 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA1 Begin", + "id": "4753ab15-1778-4fe1-93ea-9f52fd5a17a9" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA1 Begin", + "Point", + "Foundations", + "ba6be738-d8e9-4fef-b0f3-4af66a167cf6" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " EMA1 End", + "project": "Foundations", + "id": "bbe225bf-27f7-4817-b83c-7657d629b485", + "savedPayload": { + "position": { + "x": 5027.723679491891, + "y": 12655.547511671706 + }, + "targetPosition": { + "x": 5320.202053146438, + "y": 12722.303791858601 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA1 End", + "id": "8b04cb68-e346-41ed-943c-b2daf2800805" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA1 End", + "Point", + "Foundations", + "26e2c269-de9c-4f7e-ac1e-b6557afa7f2d" + ] + ] + } + } + ], + "id": "1a8d5665-4e11-4339-82c5-2c834a3d5957", + "savedPayload": { + "position": { + "x": 5320.202053146438, + "y": 12722.303791858601 + }, + "targetPosition": { + "x": 5386.958333333332, + "y": 12429.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Polygon", + "name": "EMA2", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "8aca93e7-b586-4d10-9e9f-80a207076b19", + "savedPayload": { + "position": { + "x": 7414.361583566111, + "y": 13732.247476916256 + }, + "targetPosition": { + "x": 7115.200444411757, + "y": 13709.82844884033 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "e8848df1-d65f-4a2d-aae9-74f4ae507778", + "savedPayload": { + "position": { + "x": 7115.200444411757, + "y": 13709.82844884033 + }, + "targetPosition": { + "x": 6816.039305257404, + "y": 13687.409420764403 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " EMA2 Begin", + "project": "Foundations", + "id": "4fff7331-bde1-469c-9e2f-a580b2ec2e6b", + "savedPayload": { + "position": { + "x": 6793.620277181476, + "y": 13986.570559918757 + }, + "targetPosition": { + "x": 6816.039305257404, + "y": 13687.409420764403 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA2 Begin", + "id": "5317bdec-1ced-410d-b77f-2bd2d60ef68c" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA2 Begin", + "Point", + "Foundations", + "efcbf0e3-2041-40b0-9964-bc08b021a38d" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " EMA2 End", + "project": "Foundations", + "id": "0325fdd3-56a3-4fad-af25-9fe1cb43e9b8", + "savedPayload": { + "position": { + "x": 6516.87816610305, + "y": 13664.990392688476 + }, + "targetPosition": { + "x": 6816.039305257404, + "y": 13687.409420764403 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA2 End", + "id": "d67b85dc-b2c4-426c-9b2e-34847e1f621c" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA2 End", + "Point", + "Foundations", + "c655f2bd-5648-4e59-8953-f79c84b423d6" + ] + ] + } + } + ], + "id": "121190e2-c956-4671-b495-e1ae5225b495", + "savedPayload": { + "position": { + "x": 5116.667672962607, + "y": 12559.990539939323 + }, + "targetPosition": { + "x": 5386.958333333332, + "y": 12429.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Polygon", + "name": "EMA3", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "12cf982a-3c72-4151-a10a-9159dbd1b6d8", + "savedPayload": { + "position": { + "x": 6928.578735876706, + "y": 14052.987563618733 + }, + "targetPosition": { + "x": 6759.582718457619, + "y": 13805.115931323935 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "2d758b9c-17c5-4bf1-aff1-eda55212d6aa", + "savedPayload": { + "position": { + "x": 6759.582718457619, + "y": 13805.115931323935 + }, + "targetPosition": { + "x": 6590.586701038533, + "y": 13557.244299029137 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " EMA3 Begin", + "project": "Foundations", + "id": "3bbc87bb-a31b-4747-b620-4e09714e81c8", + "savedPayload": { + "position": { + "x": 6342.715068743734, + "y": 13726.240316448224 + }, + "targetPosition": { + "x": 6590.586701038533, + "y": 13557.244299029137 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA3 Begin", + "id": "1c4c48c9-c171-4ab9-ab2a-4d0ed547cca1" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA3 Begin", + "Point", + "Foundations", + "6d6698fd-2e7e-4974-8086-842bf4a5d0c9" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " EMA3 End", + "project": "Foundations", + "id": "49d42983-7ab7-4afd-96d3-1f9483ff6de6", + "savedPayload": { + "position": { + "x": 6421.590683619446, + "y": 13309.372666734338 + }, + "targetPosition": { + "x": 6590.586701038533, + "y": 13557.244299029137 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA3 End", + "id": "2d905229-b3de-4523-b7a1-8d0cc973fba9" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA3 End", + "Point", + "Foundations", + "f9b692a9-9f0f-487f-9a7f-5eabcda50127" + ] + ] + } + } + ], + "id": "076d330b-7034-4d13-9e3f-a4e93fe4818c", + "savedPayload": { + "position": { + "x": 5116.667672962607, + "y": 12299.660296468786 + }, + "targetPosition": { + "x": 5386.958333333332, + "y": 12429.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Polygon", + "name": "EMA4", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.BLACK\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "d0986c9e-203b-4605-b8b4-6f6b6a1332c6", + "savedPayload": { + "position": { + "x": 6374.933386950947, + "y": 13873.165412758462 + }, + "targetPosition": { + "x": 6463.359939274218, + "y": 13586.49357102262 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "55dfe1ca-cd91-4801-b4aa-2243c757eabd", + "savedPayload": { + "position": { + "x": 6463.359939274218, + "y": 13586.49357102262 + }, + "targetPosition": { + "x": 6551.786491597489, + "y": 13299.821729286778 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " EMA4 Begin", + "project": "Foundations", + "id": "6a2a6ecc-c6d5-40db-9c2b-1b619eefa6af", + "savedPayload": { + "position": { + "x": 6265.114649861646, + "y": 13211.395176963506 + }, + "targetPosition": { + "x": 6551.786491597489, + "y": 13299.821729286778 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA4 Begin", + "id": "bc75b99d-1ec4-4911-ad22-7a8bc9188ef9" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA4 Begin", + "Point", + "Foundations", + "142d0ce5-6a5c-4bd6-bdb2-44a079f8185e" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " EMA4 End", + "project": "Foundations", + "id": "6a4436bc-9597-4b7c-9b4f-32842616d355", + "savedPayload": { + "position": { + "x": 6640.213043920759, + "y": 13013.149887550935 + }, + "targetPosition": { + "x": 6551.786491597489, + "y": 13299.821729286778 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA4 End", + "id": "6f35c6e6-660e-4535-8c76-c7576581bdba" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA4 End", + "Point", + "Foundations", + "87242de3-dbe9-454a-a849-c94f56785c01" + ] + ] + } + } + ], + "id": "cc82fb25-7b35-43b6-ada8-eba176f6c96c", + "savedPayload": { + "position": { + "x": 5320.202053146438, + "y": 12137.347044549508 + }, + "targetPosition": { + "x": 5386.958333333332, + "y": 12429.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Polygon", + "name": "EMA5", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.TRUE_PURPLE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "734b84ab-72f0-4937-b80c-51406f4fddfa", + "savedPayload": { + "position": { + "x": 5615.33177683689, + "y": 13597.190771636626 + }, + "targetPosition": { + "x": 5894.593901430151, + "y": 13487.588464326707 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "f2c99fce-484c-48e9-bccc-68d44159cbca", + "savedPayload": { + "position": { + "x": 5894.593901430151, + "y": 13487.588464326707 + }, + "targetPosition": { + "x": 6173.856026023413, + "y": 13377.986157016789 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " EMA5 End", + "project": "Foundations", + "id": "6c413323-f7b7-4366-bb9e-b506584906c6", + "savedPayload": { + "position": { + "x": 6064.253718713494, + "y": 13098.724032423528 + }, + "targetPosition": { + "x": 6173.856026023413, + "y": 13377.986157016789 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA5 End", + "id": "338b5e2f-7ec6-4652-8687-0ce6d7904ec0" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA5 End", + "Point", + "Foundations", + "28f37d9c-f79d-4268-8573-1b00a7801b44" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " EMA5 Begin", + "project": "Foundations", + "id": "015ec8f2-b030-451f-a9a4-4617bd1c016d", + "savedPayload": { + "position": { + "x": 6453.118150616674, + "y": 13268.38384970687 + }, + "targetPosition": { + "x": 6173.856026023413, + "y": 13377.986157016789 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "EMA5 Begin", + "id": "051d53cc-8a41-49a0-9e68-782a8f26fcf7" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "EMAs", + "Plotter", + "Foundations", + "62611f74-6859-42f6-b8f8-88787ba27149" + ], + [ + "EMAs", + "Plotter Module", + "Foundations", + "6ee46841-2717-4160-8000-cb47fe94c79c" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "8a28569f-b97e-41fc-90c2-74d81c09dc0a" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "18e38d9a-00f0-4ea7-a05d-fd1b779c5c5f" + ], + [ + "EMA5 Begin", + "Point", + "Foundations", + "826726fd-3b2d-4b81-af79-a74e3402ed66" + ] + ] + } + } + ], + "id": "a64a0bd3-1d30-4126-96e9-eeb39000b428", + "savedPayload": { + "position": { + "x": 5574.005273890953, + "y": 12195.275973463646 + }, + "targetPosition": { + "x": 5386.958333333332, + "y": 12429.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "images": [], + "texts": [], + "id": "d8e59289-eadf-4163-ad95-97b15f4299e4", + "savedPayload": { + "position": { + "x": 5386.958333333332, + "y": 12429.825418204055 + }, + "targetPosition": { + "x": 6497.958333333332, + "y": 12432.825418204055 + }, + "floatingObject": { + "isPinned": true, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "panels": [ + { + "type": "Plotter Panel", + "name": "EMAs", + "config": "{\n \"codeName\": \"EMA\",\n \"isLegacy\": false\n}", + "project": "Foundations", + "panelData": [ + { + "type": "Panel Data", + "name": "EMA1", + "config": "{\n \"valueDecimals\": 2\n}", + "project": "Foundations", + "dataFormula": { + "type": "Data Formula", + "name": "New Data Formula", + "code": "record.ema1", + "project": "Foundations", + "id": "6d0b32c4-89bd-4825-87fb-887ebec3156e", + "savedPayload": { + "position": { + "x": 6197.958333333332, + "y": 12432.825418204055 + }, + "targetPosition": { + "x": 6347.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "textStyle": { + "type": "Text Style", + "name": "New Text Style", + "config": "{\n \"paletteColor\": \"UI_COLOR.TRUE_BLUE\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", + "project": "Foundations", + "id": "8bdf5347-050f-49fa-bcbb-23b6d641ef83", + "savedPayload": { + "position": { + "x": 6197.958333333332, + "y": 11913.210175933393 + }, + "targetPosition": { + "x": 6347.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "4b8071e1-b359-439a-9e0e-7d2898774249", + "savedPayload": { + "position": { + "x": 6347.958333333332, + "y": 12173.017797068724 + }, + "targetPosition": { + "x": 6647.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Panel Data", + "name": "EMA2", + "config": "{\n \"valueDecimals\": 2\n}", + "project": "Foundations", + "dataFormula": { + "type": "Data Formula", + "name": "New Data Formula", + "code": "record.ema2", + "project": "Foundations", + "id": "0846e6b4-9087-4fed-a2b9-cd464f032b5f", + "savedPayload": { + "position": { + "x": 6197.958333333332, + "y": 11913.210175933393 + }, + "targetPosition": { + "x": 6497.958333333332, + "y": 11913.210175933393 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "textStyle": { + "type": "Text Style", + "name": "New Text Style", + "config": "{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", + "project": "Foundations", + "id": "c4f576b9-522e-4b5e-8f07-5a3959844075", + "savedPayload": { + "position": { + "x": 6647.958333333332, + "y": 11653.402554798062 + }, + "targetPosition": { + "x": 6497.958333333332, + "y": 11913.210175933393 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "09bd09b3-9381-4032-823c-a188d05f20c4", + "savedPayload": { + "position": { + "x": 6497.958333333332, + "y": 11913.210175933393 + }, + "targetPosition": { + "x": 6647.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Panel Data", + "name": "EMA3", + "config": "{\n \"valueDecimals\": 2\n}", + "project": "Foundations", + "dataFormula": { + "type": "Data Formula", + "name": "New Data Formula", + "code": "record.ema3", + "project": "Foundations", + "id": "644d79db-a8f7-4c7c-9f0a-3c9b77733e9b", + "savedPayload": { + "position": { + "x": 6647.958333333332, + "y": 11653.402554798062 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 11913.210175933393 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "textStyle": { + "type": "Text Style", + "name": "New Text Style", + "config": "{\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", + "project": "Foundations", + "id": "afd6d592-be89-41fb-9d7d-58c6cd6feb15", + "savedPayload": { + "position": { + "x": 7097.958333333332, + "y": 11913.210175933393 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 11913.210175933393 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "55642e02-cd3b-4ce9-a07e-bb9bf37d15a3", + "savedPayload": { + "position": { + "x": 6797.958333333332, + "y": 11913.210175933393 + }, + "targetPosition": { + "x": 6647.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Panel Data", + "name": "EMA4", + "config": "{\n \"valueDecimals\": 2\n}", + "project": "Foundations", + "dataFormula": { + "type": "Data Formula", + "name": "New Data Formula", + "code": "record.ema4", + "project": "Foundations", + "id": "4e949cf8-8d04-4556-b5bb-7661682a6058", + "savedPayload": { + "position": { + "x": 7097.958333333332, + "y": 11913.210175933393 + }, + "targetPosition": { + "x": 6947.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "textStyle": { + "type": "Text Style", + "name": "New Text Style", + "config": "{\n \"paletteColor\": \"UI_COLOR.BLACK\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", + "project": "Foundations", + "id": "89bf5e73-a1db-4f77-afca-be6d44d4d3d3", + "savedPayload": { + "position": { + "x": 7097.958333333332, + "y": 12432.825418204055 + }, + "targetPosition": { + "x": 6947.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "7b797b32-6304-470e-a9a8-63c823dbb197", + "savedPayload": { + "position": { + "x": 6947.958333333332, + "y": 12173.017797068724 + }, + "targetPosition": { + "x": 6647.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Panel Data", + "name": "EMA5", + "config": "{\n \"valueDecimals\": 2\n}", + "project": "Foundations", + "dataFormula": { + "type": "Data Formula", + "name": "New Data Formula", + "code": "record.ema5", + "project": "Foundations", + "id": "39bdc194-5521-4096-8544-1a23b172da8f", + "savedPayload": { + "position": { + "x": 7543.958333333332, + "y": 12308.825418204055 + }, + "targetPosition": { + "x": 7243.958333333332, + "y": 12308.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "textStyle": { + "type": "Text Style", + "name": "New Text Style", + "config": "{\n \"paletteColor\": \"UI_COLOR.TRUE_PURPLE\",\n \"opacity\": 1,\n \"fontSize\": 20\n}", + "project": "Foundations", + "id": "e5b07c5f-ac6d-4067-858a-c555fb3c90c3", + "savedPayload": { + "position": { + "x": 7093.958333333332, + "y": 12568.633039339386 + }, + "targetPosition": { + "x": 7243.958333333332, + "y": 12308.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "f95877ba-684c-4e28-9df3-39c0e1eae868", + "savedPayload": { + "position": { + "x": 6797.958333333332, + "y": 12432.825418204055 + }, + "targetPosition": { + "x": 6647.958333333332, + "y": 12173.017797068724 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "79274799-2367-4b37-88a5-526adcc8e51a", + "savedPayload": { + "position": { + "x": 6647.958333333332, + "y": 12173.017797068724 + }, + "targetPosition": { + "x": 6497.958333333332, + "y": 12432.825418204055 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "5a5c9bf2-e38b-4d5f-bb6c-6efd13e3e4c9", + "savedPayload": { + "position": { + "x": 6497.958333333332, + "y": 12432.825418204055 + }, + "targetPosition": { + "x": 6647.958333333332, + "y": 12692.633039339386 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "1d03c286-9bcb-42dd-b4f7-01d8275712ea", + "savedPayload": { + "position": { + "x": 6555.253235020848, + "y": 12776.105084786974 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 12952.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plotter", + "name": "Trend Intensity", + "config": "{\n \"codeName\": \"T2I\"\n}", + "project": "Foundations", + "modules": [ + { + "type": "Plotter Module", + "name": "Trend Intensity", + "config": "{\n \"codeName\": \"Fisher-MFI\",\n \"icon\": \"trend\"\n}", + "project": "Foundations", + "shapes": { + "type": "Shapes", + "name": "New Shapes", + "project": "Foundations", + "chartPoints": [ + { + "type": "Chart Points", + "name": "New Chart Points", + "project": "Foundations", + "points": [ + { + "type": "Point", + "name": "T2I1 Begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = record.previous.t2i1", + "project": "Foundations", + "id": "d7bdafa1-3316-465f-9926-c8c2f3ed6961", + "savedPayload": { + "position": { + "x": 7004.278595918183, + "y": 12244.054433769223 + }, + "targetPosition": { + "x": 6855.953971984413, + "y": 12266.410773695648 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "8c29f302-5163-4941-9b30-79f97511da8d", + "savedPayload": { + "position": { + "x": 6855.953971984413, + "y": 12266.410773695648 + }, + "targetPosition": { + "x": 6707.629348050644, + "y": 12288.767113622074 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "T2I1 End", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.end\ny = record.t2i1", + "project": "Foundations", + "id": "32cf5ca0-0da3-465b-922a-6ec1aeb6aa14", + "savedPayload": { + "position": { + "x": 6927.544909599591, + "y": 12492.81893495335 + }, + "targetPosition": { + "x": 6817.587128825117, + "y": 12390.793024287712 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "2a5c07bd-3cb4-43de-af59-42951505b026", + "savedPayload": { + "position": { + "x": 6817.587128825117, + "y": 12390.793024287712 + }, + "targetPosition": { + "x": 6707.629348050644, + "y": 12288.767113622074 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "T2I2 Begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = record.previous.t2i2", + "project": "Foundations", + "id": "91be0b18-bf33-4a93-9114-a17a300a9f83", + "savedPayload": { + "position": { + "x": 6685.210319974717, + "y": 12587.92825277643 + }, + "targetPosition": { + "x": 6696.41983401268, + "y": 12438.347683199252 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "62039967-842d-4078-bb23-5b285caa9a23", + "savedPayload": { + "position": { + "x": 6696.41983401268, + "y": 12438.347683199252 + }, + "targetPosition": { + "x": 6707.629348050644, + "y": 12288.767113622074 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "T2I2 End", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.end\ny = record.t2i2", + "project": "Foundations", + "id": "5864a40b-46ee-4529-ad9e-f84e43d147ed", + "savedPayload": { + "position": { + "x": 6459.757715755845, + "y": 12457.76313104116 + }, + "targetPosition": { + "x": 6583.693531903245, + "y": 12373.265122331617 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "16267f08-22ef-44f2-a319-8109bbe72bed", + "savedPayload": { + "position": { + "x": 6583.693531903245, + "y": 12373.265122331617 + }, + "targetPosition": { + "x": 6707.629348050644, + "y": 12288.767113622074 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "50 begin", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.begin\ny = 50", + "project": "Foundations", + "id": "76aaee57-126d-4e3f-993c-b42478aee46c", + "savedPayload": { + "position": { + "x": 6420.957506314801, + "y": 12200.340561298803 + }, + "targetPosition": { + "x": 6564.293427182723, + "y": 12244.553837460438 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "c29d12d9-f950-4077-b959-1c7b42ad61ed", + "savedPayload": { + "position": { + "x": 6564.293427182723, + "y": 12244.553837460438 + }, + "targetPosition": { + "x": 6707.629348050644, + "y": 12288.767113622074 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Point", + "name": "50 end", + "project": "Foundations", + "pointFormula": { + "type": "Point Formula", + "name": "New Point Formula", + "code": "x = record.end\ny = 50", + "project": "Foundations", + "id": "d330cab2-4a51-450f-a1e7-e95f041d75a0", + "savedPayload": { + "position": { + "x": 6598.027040740725, + "y": 12009.504989028814 + }, + "targetPosition": { + "x": 6652.8281943956845, + "y": 12149.136051325444 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "80f991e7-57f7-47e6-a9e3-66326a1a6e39", + "savedPayload": { + "position": { + "x": 6652.8281943956845, + "y": 12149.136051325444 + }, + "targetPosition": { + "x": 6707.629348050644, + "y": 12288.767113622074 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "a8d5c2e9-ded2-4202-9f35-1ee69d93f6dd", + "savedPayload": { + "position": { + "x": 6707.629348050644, + "y": 12288.767113622074 + }, + "targetPosition": { + "x": 6782.629348050644, + "y": 12158.863303054408 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 2, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "polygons": [ + { + "type": "Polygon", + "name": "T2I2", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RED\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "6e42ac69-bf20-4951-af52-7768cada1dd8", + "savedPayload": { + "position": { + "x": 6136.00327085655, + "y": 12337.398219226507 + }, + "targetPosition": { + "x": 6358.946718499768, + "y": 12136.659037318848 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "df65d679-2d94-4633-a707-9f2bec5e6fed", + "savedPayload": { + "position": { + "x": 6358.946718499768, + "y": 12136.659037318848 + }, + "targetPosition": { + "x": 6581.890166142986, + "y": 11935.91985541119 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " T2I2 Begin", + "project": "Foundations", + "id": "64078f1c-13d9-4f12-b547-fcf569d51c35", + "savedPayload": { + "position": { + "x": 6381.150984235329, + "y": 11712.976407767972 + }, + "targetPosition": { + "x": 6581.890166142986, + "y": 11935.91985541119 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "T2I2 Begin", + "id": "62039967-842d-4078-bb23-5b285caa9a23" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity", + "Plotter", + "Foundations", + "36a5735d-0e83-4ab6-a690-4f7845ffaeca" + ], + [ + "Trend Intensity", + "Plotter Module", + "Foundations", + "3d0f3d10-f6ec-4006-a833-ac7c7ee136d5" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "82ce8145-ff28-4a14-b3fd-714c816a9e55" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "6811ab96-66db-42c1-9ac1-a7d53a83299d" + ], + [ + "T2I2 Begin", + "Point", + "Foundations", + "1fd0882d-489b-4ef2-b40e-b44c9b451bb9" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " T2I2 End", + "project": "Foundations", + "id": "a5e1bc7e-752a-4216-8797-7e83c104da21", + "savedPayload": { + "position": { + "x": 6804.833613786204, + "y": 11735.180673503532 + }, + "targetPosition": { + "x": 6581.890166142986, + "y": 11935.91985541119 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "T2I2 End", + "id": "16267f08-22ef-44f2-a319-8109bbe72bed" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity", + "Plotter", + "Foundations", + "36a5735d-0e83-4ab6-a690-4f7845ffaeca" + ], + [ + "Trend Intensity", + "Plotter Module", + "Foundations", + "3d0f3d10-f6ec-4006-a833-ac7c7ee136d5" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "82ce8145-ff28-4a14-b3fd-714c816a9e55" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "6811ab96-66db-42c1-9ac1-a7d53a83299d" + ], + [ + "T2I2 End", + "Point", + "Foundations", + "22642b4e-3f5a-46b2-9319-b382c37be452" + ] + ] + } + } + ], + "id": "55f63f1a-2a79-409f-ad32-3e2897e6b8b8", + "savedPayload": { + "position": { + "x": 6489.185067830502, + "y": 12096.48979580908 + }, + "targetPosition": { + "x": 6782.629348050644, + "y": 12158.863303054408 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Polygon", + "name": "T2I1", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.GREEN\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "f915a674-b35c-4676-b059-cd21f4dcdad0", + "savedPayload": { + "position": { + "x": 5882.650712197999, + "y": 13448.863523880716 + }, + "targetPosition": { + "x": 6032.650712197999, + "y": 13189.055902745384 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "555623a4-af44-473c-88a1-ec7c79078951", + "savedPayload": { + "position": { + "x": 6032.650712197999, + "y": 13189.055902745384 + }, + "targetPosition": { + "x": 6182.650712197999, + "y": 12929.248281610051 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " T2I1 Begin", + "project": "Foundations", + "id": "fcfef5d8-a32d-417f-b133-2484bc84df55", + "savedPayload": { + "position": { + "x": 5922.843091062667, + "y": 12779.248281610051 + }, + "targetPosition": { + "x": 6182.650712197999, + "y": 12929.248281610051 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "T2I1 Begin", + "id": "8c29f302-5163-4941-9b30-79f97511da8d" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity", + "Plotter", + "Foundations", + "36a5735d-0e83-4ab6-a690-4f7845ffaeca" + ], + [ + "Trend Intensity", + "Plotter Module", + "Foundations", + "3d0f3d10-f6ec-4006-a833-ac7c7ee136d5" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "82ce8145-ff28-4a14-b3fd-714c816a9e55" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "6811ab96-66db-42c1-9ac1-a7d53a83299d" + ], + [ + "T2I1 Begin", + "Point", + "Foundations", + "73b85369-8d30-4bd2-ad1f-82f0e817be5a" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " T2I1 End", + "project": "Foundations", + "id": "b43bd358-5fe6-4e19-8bb2-e07b121a6185", + "savedPayload": { + "position": { + "x": 6332.650712197999, + "y": 12669.440660474718 + }, + "targetPosition": { + "x": 6182.650712197999, + "y": 12929.248281610051 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "T2I1 End", + "id": "2a5c07bd-3cb4-43de-af59-42951505b026" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity", + "Plotter", + "Foundations", + "36a5735d-0e83-4ab6-a690-4f7845ffaeca" + ], + [ + "Trend Intensity", + "Plotter Module", + "Foundations", + "3d0f3d10-f6ec-4006-a833-ac7c7ee136d5" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "82ce8145-ff28-4a14-b3fd-714c816a9e55" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "6811ab96-66db-42c1-9ac1-a7d53a83299d" + ], + [ + "T2I1 End", + "Point", + "Foundations", + "0f41051d-af21-4481-b4bb-f5ec652f8477" + ] + ] + } + } + ], + "id": "2dc09e96-1c45-47f9-9e5b-fc8938377c4b", + "savedPayload": { + "position": { + "x": 6751.270809070348, + "y": 11860.506734443927 + }, + "targetPosition": { + "x": 6782.629348050644, + "y": 12158.863303054408 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Polygon", + "name": "New Polygon", + "project": "Foundations", + "polygonBorder": { + "type": "Polygon Border", + "name": "New Polygon Border", + "project": "Foundations", + "style": { + "type": "Style", + "name": "New Style", + "config": "{\n \"default\": {\n \"opacity\": 1,\n \"lineWidth\": 1,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.BLUE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [\n 0,\n 0\n ],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}", + "project": "Foundations", + "id": "e389d8b1-7f60-480b-ab37-d404e4074b90", + "savedPayload": { + "position": { + "x": 6812.650999497943, + "y": 11488.715035546107 + }, + "targetPosition": { + "x": 6934.671992420684, + "y": 11762.778672838887 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "styleConditions": [], + "id": "63de25cc-145b-4352-800a-9e7d2da75f7b", + "savedPayload": { + "position": { + "x": 6934.671992420684, + "y": 11762.778672838887 + }, + "targetPosition": { + "x": 7056.692985343424, + "y": 12036.842310131668 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "polygonVertexes": [ + { + "type": "Polygon Vertex", + "name": " 50 begin", + "project": "Foundations", + "id": "5aa24117-2b18-4311-9c21-8dbaee0ff375", + "savedPayload": { + "position": { + "x": 7330.756622636204, + "y": 11914.821317208927 + }, + "targetPosition": { + "x": 7056.692985343424, + "y": 12036.842310131668 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "50 begin", + "id": "c29d12d9-f950-4077-b959-1c7b42ad61ed" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity", + "Plotter", + "Foundations", + "36a5735d-0e83-4ab6-a690-4f7845ffaeca" + ], + [ + "Trend Intensity", + "Plotter Module", + "Foundations", + "3d0f3d10-f6ec-4006-a833-ac7c7ee136d5" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "82ce8145-ff28-4a14-b3fd-714c816a9e55" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "6811ab96-66db-42c1-9ac1-a7d53a83299d" + ], + [ + "50 begin", + "Point", + "Foundations", + "dc0c7245-ea6f-4765-b757-86b3414b72b6" + ] + ] + } + }, + { + "type": "Polygon Vertex", + "name": " 50 end", + "project": "Foundations", + "id": "f33da9cd-4bf6-4131-b450-25eac08b618a", + "savedPayload": { + "position": { + "x": 7178.713978266164, + "y": 12310.905947424448 + }, + "targetPosition": { + "x": 7056.692985343424, + "y": 12036.842310131668 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Point", + "name": "50 end", + "id": "80f991e7-57f7-47e6-a9e3-66326a1a6e39" + }, + "referenceParentCombinedNodePath": [ + [ + "Weighted EMA cross strategy", + "Data Mine", + "Data-Mining", + "96df7884-b792-4210-94c3-a3e7f83d6d85" + ], + [ + "Trend Intensity", + "Plotter", + "Foundations", + "36a5735d-0e83-4ab6-a690-4f7845ffaeca" + ], + [ + "Trend Intensity", + "Plotter Module", + "Foundations", + "3d0f3d10-f6ec-4006-a833-ac7c7ee136d5" + ], + [ + "New Shapes", + "Shapes", + "Foundations", + "82ce8145-ff28-4a14-b3fd-714c816a9e55" + ], + [ + "New Chart Points", + "Chart Points", + "Foundations", + "6811ab96-66db-42c1-9ac1-a7d53a83299d" + ], + [ + "50 end", + "Point", + "Foundations", + "e9927efe-8906-4036-8202-736badd68e09" + ] + ] + } + } + ], + "id": "e5693602-a3cd-4ae8-8477-1910cb53d88c", + "savedPayload": { + "position": { + "x": 7056.692985343424, + "y": 12036.842310131668 + }, + "targetPosition": { + "x": 6782.629348050644, + "y": 12158.863303054408 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "images": [], + "texts": [], + "id": "c8a98cac-2c8c-4dc6-8bf8-5ed5d2ab6ae5", + "savedPayload": { + "position": { + "x": 6782.629348050644, + "y": 12158.863303054408 + }, + "targetPosition": { + "x": 6983.368529958301, + "y": 12381.806750697626 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "panels": [ + { + "type": "Plotter Panel", + "name": "Trend intensity", + "config": "{\n \"codeName\": \"t2i\",\n \"isLegacy\": false\n}", + "project": "Foundations", + "panelData": [ + { + "type": "Panel Data", + "name": "T2I1", + "config": "{\n \"valueDecimals\": 2\n}", + "project": "Foundations", + "dataFormula": { + "type": "Data Formula", + "name": "New Data Formula", + "code": "record.t2i1", + "project": "Foundations", + "id": "19d122ca-8c28-45c6-98d7-d0e2abdd1c44", + "savedPayload": { + "position": { + "x": 7168.77872658327, + "y": 11811.172840920535 + }, + "targetPosition": { + "x": 7369.517908490928, + "y": 12034.116288563753 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "textStyle": { + "type": "Text Style", + "name": "New Text Style", + "config": "{\n \"paletteColor\": \"UI_COLOR.GREEN\",\n \"opacity\": 1,\n \"fontSize\": 14\n}", + "project": "Foundations", + "id": "7be6b1d6-635f-4841-9798-e3d6f58941dd", + "savedPayload": { + "position": { + "x": 7662.96218871107, + "y": 11971.742781318426 + }, + "targetPosition": { + "x": 7369.517908490928, + "y": 12034.116288563753 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "0c874821-63ef-43b0-a871-559b7ca9b892", + "savedPayload": { + "position": { + "x": 7369.517908490928, + "y": 12034.116288563753 + }, + "targetPosition": { + "x": 7276.812810178443, + "y": 12319.433243452298 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Panel Data", + "name": "T2I2", + "config": "{\n \"valueDecimals\": 2\n}", + "project": "Foundations", + "dataFormula": { + "type": "Data Formula", + "name": "New Data Formula", + "code": "record.t2i2", + "project": "Foundations", + "id": "cee3cbe7-ca72-4eb9-8651-6299dcb90489", + "savedPayload": { + "position": { + "x": 7770.996272306243, + "y": 12480.003183850189 + }, + "targetPosition": { + "x": 7477.551992086101, + "y": 12542.376691095516 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "textStyle": { + "type": "Text Style", + "name": "New Text Style", + "config": "{\n \"paletteColor\": \"UI_COLOR.RED\",\n \"opacity\": 1,\n \"fontSize\": 14\n}", + "project": "Foundations", + "id": "61445634-586d-442c-8f3b-fa3d6f20c974", + "savedPayload": { + "position": { + "x": 7384.846893773616, + "y": 12827.693645984062 + }, + "targetPosition": { + "x": 7477.551992086101, + "y": 12542.376691095516 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "2f700239-2aa1-4231-8ac4-ac634cdeb937", + "savedPayload": { + "position": { + "x": 7477.551992086101, + "y": 12542.376691095516 + }, + "targetPosition": { + "x": 7276.812810178443, + "y": 12319.433243452298 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "7a93faa5-0b32-48ff-be83-2a6e0e18b337", + "savedPayload": { + "position": { + "x": 7276.812810178443, + "y": 12319.433243452298 + }, + "targetPosition": { + "x": 6983.368529958301, + "y": 12381.806750697626 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "126e5dd4-cb36-4c6a-b628-c1fb6763a243", + "savedPayload": { + "position": { + "x": 6983.368529958301, + "y": 12381.806750697626 + }, + "targetPosition": { + "x": 6890.663431645817, + "y": 12667.123705586171 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "3aff9848-30a3-4330-878c-87121b6ba209", + "savedPayload": { + "position": { + "x": 6890.663431645817, + "y": 12667.123705586171 + }, + "targetPosition": { + "x": 6797.958333333332, + "y": 12952.440660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false, + "shortcutKey": "" + } + } } ], - "id": "0026afef-42fd-44a8-8eea-c6fcf0970615", + "id": "40a56cdb-a308-46ea-8953-ff26d206a3a4", "savedPayload": { "position": { "x": 6797.958333333332, @@ -4608,7 +10290,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 From 172d095b34bfeb5ee7cda224b2ff63a71b7b211a Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 09:04:00 +0300 Subject: [PATCH 13/39] This is my contribution to Superalgos --- ...43-tutorial-step-moving-in-wonderland.json | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json index 4a1866823..4099eefbd 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json @@ -31,6 +31,11 @@ "language": "DE", "text": "Sie befinden sich also endlich in einem Diagramm. Das erste, was Sie tun möchten, ist, sich zu bewegen und zu lernen, was diese Diagramme für Sie tun können.", "updated": 1634216714226 + }, + { + "language": "TR", + "text": "Sonunda bir grafiğin içindesiniz. Yapmak isteyeceğiniz ilk şey, etrafta dolaşmak ve bu çizelgelerin sizin için neler yapabileceğini öğrenmek.", + "updated": 1636092060224 } ] }, @@ -61,6 +66,11 @@ "language": "DE", "text": "Fangen wir damit an! Wie im Designbereich - wenn Sie sich in einer Time Machine befinden - bewegen Sie sich mit Hilfe Ihrer Maus und Ihrer Tastatur. So geht's:", "updated": 1634216711619 + }, + { + "language": "TR", + "text": "Bununla devam edelim! Tasarım alanında olduğu gibi, bir zaman makinesinin içindeykende farenizi ve klavyenizi kullanarak hareket edersiniz. Nasıl?", + "updated": 1636092104788 } ] }, @@ -90,6 +100,11 @@ "language": "DE", "text": "Mit der Maus klicken Sie mit der linken Maustaste und ziehen. Mit der Tastatur benutzt du die Pfeiltasten: ← → ↑ ↓", "updated": 1634216728013 + }, + { + "language": "TR", + "text": "Fare ile sol tıklayın ve sürükleyin. Klavye ile ok tuşlarını kullanın: ← → ↑ ↓", + "updated": 1636092129919 } ] }, @@ -119,6 +134,11 @@ "language": "DE", "text": "Was? Es funktioniert nicht? Bleiben Sie mit einem eingefrorenen Diagramm hängen? Wie im Video im nächsten Schritt? Keine Sorge! Ich weiß, was hier los ist...", "updated": 1634216736257 + }, + { + "language": "TR", + "text": "Ne? Çalışmıyor mu? Donmuş bir çizelgeye mi takıldınız? Bir sonraki adımdaki videodaki gibi mi? Merak etme! Neler olduğunu biliyorum...", + "updated": 1636092166517 } ] } From c782e23f95524469ed1ad170f2eef4a07d70129f Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 09:23:35 +0300 Subject: [PATCH 14/39] This is my contribution to Superalgos --- ...tep-welcome-charts-scales-auto-locked.json | 5 +++++ ...lgos-045-tutorial-step-unlocking-time.json | 20 +++++++++++++++++++ ...lcome-charts-scales-unlock-time-scale.json | 5 +++++ 3 files changed, 30 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json index e1e06c062..3ce1a5424 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json @@ -21,6 +21,11 @@ "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", "updated": 1634216805054 + }, + { + "language": "TR", + "text": "Bu videoda ne olduğunu görebilirsin.", + "updated": 1636093306641 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json index 8cd674f4a..3134599c6 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Der Grund, warum Sie sich nicht bewegen können, ist, dass die Skalen im automatischen Modus gesperrt sind, damit Sie die Daten nach Ihrer ersten Data-Mining-Operation leicht finden können.", "updated": 1634216885238 + }, + { + "language": "TR", + "text": "Hareket edememenizin nedeni, ilk veri madenciliği işleminizden sonra verileri kolayca bulabilmeniz için skalanın otomatik modda kilitli olmasıdır.", + "updated": 1636093218029 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Wenn Sie die Time Scale im automatischen Modus einstellen, wird der gesamte Zeitbereich der verfügbaren Daten in das Diagramm gezwungen.", "updated": 1634216894224 + }, + { + "language": "TR", + "text": "Zaman Ölçeğini ( Time Scale ) otomatik modda ayarlamak, mevcut verilerin tümünün tarih-saat aralığında gösterilmesine zorlar.", + "updated": 1636093070726 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Um zwischen den verschiedenen automatischen Modi und dem manuellen Modus hin- und herzuschalten, drücken Sie die Umschalttaste und bewegen Sie das Mausrad über dem Time Scale-Feld in einem Schritt. Alternativ können Sie auch den Mauszeiger auf das Skalenfeld setzen und die Pfeiltasten ↑ ↓ drücken.", "updated": 1634216938054 + }, + { + "language": "TR", + "text": "Otomatik mod ve manuel mod arasında geçiş yapmak için Shift 'e basın ve farenizin tekerleği ile zaman ölçeği kutusunun üzerinde birkez döndürün. Alternatif olarak, fare işaretçisini ölçek kutusunun üzerine getirebilir ve yukarı ve aşağı ok tuşlarına ↑ ↓ basabilirsiniz.", + "updated": 1636093154603 } ], "updated": 1622199287763 @@ -97,6 +112,11 @@ "language": "DE", "text": "Sie sollten sich nun frei auf der X-Achse, das heißt der Zeitachse des Diagramms, bewegen können.", "updated": 1634216981937 + }, + { + "language": "TR", + "text": "Artık X ekseninde , yani grafiğin zaman ekseninde serbestçe hareket edebilmeniz gerekir.", + "updated": 1636093193714 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json index a360a64a4..0a9ea2f9c 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json @@ -15,6 +15,11 @@ "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", "updated": 1634217018735 + }, + { + "language": "TR", + "text": "Zaman scalasının üzerine gelin ve fare tekerleğini birkez çevirin.", + "updated": 1636093381620 } ] }, From f572137c49386ab98aaebe38c5a06d6d3cd66a9a Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 09:50:13 +0300 Subject: [PATCH 15/39] This is my contribution to Superalgos --- ...p-welcome-charts-scales-unlock-time-scale.json | 4 ++-- ...superalgos-047-tutorial-step-scaling-time.json | 15 +++++++++++++++ ...tutorial-step-playing-with-the-rate-scale.json | 15 +++++++++++++++ ...p-welcome-charts-scales-unlock-rate-scale.json | 5 +++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json index 0a9ea2f9c..18ae41130 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json @@ -18,8 +18,8 @@ }, { "language": "TR", - "text": "Zaman scalasının üzerine gelin ve fare tekerleğini birkez çevirin.", - "updated": 1636093381620 + "text": "Zaman skalasının üzerine gelin ve fare tekerleğini birkez çevirin.", + "updated": 1636093721117 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json index 737f09bb8..3aff988f7 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Haben Sie den Trick mit der Zeitskala aus dem vorherigen Video verstanden? Wenn nicht, gehen Sie zum vorherigen Schritt und schauen Sie aufmerksam zu!", "updated": 1634217059331 + }, + { + "language": "TR", + "text": "Önceki videodan zamanı ölçeklendirmesini nasılçalıştığını anlayabildiniz mı? Eğer teredütünüz varsa önceki adıma gidin ve dikkatlice izleyin!", + "updated": 1636094066007 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Wenn Sie das Mausrad über dem Zeitskalenfeld drehen, wird die Zeit verkleinert oder vergrößert! Alternativ können Sie mit der Maus auf das Skalenfeld zeigen und die seitlichen Pfeiltasten ← → drücken.", "updated": 1634217078292 + }, + { + "language": "TR", + "text": "Farenin tekerleğini zaman ölçeği kutusunun üzerinde kaydırmak, zamanı küçültür ve genişletir! Alternatif olarak, fareyi ölçek kutusuna yönlendirebilir ve yan ok tuşlarına basabilirsiniz ← →", + "updated": 1636094091641 } ], "updated": 1616495837967 @@ -73,6 +83,11 @@ "language": "DE", "text": "Es gibt noch ein weiteres interessantes Detail aus dem vorherigen Video: Wenn die Zeitskala den automatischen Modus verlässt, verschwinden die beiden kleinen grünen Dreiecke, die das Ende der automatischen Skala anzeigen! Die Skala kann auf einer, keiner oder beiden Seiten automatisch eingestellt werden!", "updated": 1634217088926 + }, + { + "language": "TR", + "text": "Önceki videoda dikkat çeken ilginç bir ayrıntı daha var: zaman ölçeği otomatik moddan çıktığında, otomatik ölçeğin her iki tafafını gösteren iki küçük yeşil üçgen kaybolur! ", + "updated": 1636094195564 } ], "updated": 1616504911488 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json index 56a6e7b35..66ef52b11 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Muss ich Ihnen erklären, wie die Rate Scale funktioniert, oder können Sie es selbst herausfinden? Ok... Ich gebe Ihnen einen Tipp...", "updated": 1634217173850 + }, + { + "language": "TR", + "text": "Size Fiyat Ölçeğinin nasıl çalıştığını söylememe gerek var mı yoksa kendi başınıza çözebilir misiniz? Tamam... Sana bir ipucu vereceğim...", + "updated": 1636094814213 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Die Rate Scale funktioniert wie die Time Scale, aber -wenn du die Tastatur benutzt- musst du die Pfeiltasten umkehren! Mit den Pfeiltasten links und rechts ← → schaltest du zwischen den Automatikmodi um und mit den Pfeiltasten auf und ab ↑ ↓ kannst du die Skala beeinflussen! Schauen Sie sich das nächste Video an, um sich Klarheit zu verschaffen!", "updated": 1634217218782 + }, + { + "language": "TR", + "text": "Fiyat ölçeği, zaman ölçeği gibi çalışır, ancak klavyeyi kullanırken ok tuşlarını tersini kullanmanız gerekir! Otomatik modlar arasında geçiş yapmak için sol ve sağ okları ← → ve ölçeği etkilemek için yukarı ve aşağı okları ↑ ↓ kullanın! Anlamak için bir sonraki videoyu kontrol edin!", + "updated": 1636094888142 } ], "updated": 1616505192799 @@ -73,6 +83,11 @@ "language": "DE", "text": "Spielen Sie auch mit den halbautomatischen Skalenmodi! Sie wissen schon, wenn ein einziges winziges Dreieck nach ein paar Bewegungen des Mausrads sichtbar bleibt.", "updated": 1634217227774 + }, + { + "language": "TR", + "text": "Yarı otomatik ölçek modlarıyla da oynayın! Fare tekerleğinin birkaç hareketinin ardından tek bir küçük üçgen görünür kaldığında yarı otomatik moddasınızdır.", + "updated": 1636094932757 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json index bb9579820..5b2f6d18b 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json @@ -15,6 +15,11 @@ "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", "updated": 1634217315985 + }, + { + "language": "TR", + "text": "Bu adımda bir video izleyeceksiniz.", + "updated": 1636094992004 } ] }, From 07c6944bb27dc0d78074b33118ac8efc359b031e Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 09:54:51 +0300 Subject: [PATCH 16/39] This is my contribution to Superalgos --- ...algos-050-tutorial-step-time-frames-salad.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-050-tutorial-step-time-frames-salad.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-050-tutorial-step-time-frames-salad.json index 9c7455de0..e954e38d7 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-050-tutorial-step-time-frames-salad.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-050-tutorial-step-time-frames-salad.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Kurzmeldung zur Time Frame Scale: Es gibt keinen automatischen Modus!", "updated": 1634217396808 + }, + { + "language": "TR", + "text": "Zaman Çerçevesi Ölçeği ( Time Frame Scale ) hakkında flaş haber: otomatik mod yok!", + "updated": 1636095177127 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Sie können mit dem Mausrad oder den Pfeiltasten ↑ ↓ — in absteigender Reihenfolge - durch alle verfügbaren Zeitrahmen schalten: 24, 12, 8, 6, 4, 3, 2 und 1 Stunde sowie 45, 40, 30, 20, 15, 10, 5, 4, 3, 2 und 1 Minute. ", "updated": 1634217420841 + }, + { + "language": "TR", + "text": "Fare tekerleğini veya yukarı ve aşağı okları kullanarak mevcut tüm zaman dilimleri arasında geçiş yapabilirsiniz ↑ ↓ — Sırasıyla: 24, 12, 8, 6, 4, 3, 2 ve 1 saat ve 45, 40, 30, 20, 15, 10, 5, 4, 3, 2 ve 1 dakika.", + "updated": 1636095217975 } ], "updated": 1616505407890 @@ -73,6 +83,11 @@ "language": "DE", "text": "Wichtig: Seien Sie vorsichtig, wenn Sie die Time Frame Scale auf niedrigere Zeiträume umstellen! Wenn Sie die Zeitrahmen zu schnell und ohne Anpassung der Time Scale verringern, kann dies dazu führen, dass zu viele Informationen auf einmal auf dem Bildschirm dargestellt werden, was Ihren Computer verlangsamt. Wie viel Informationsdichte Ihre Hardware verarbeiten kann, hängt von ihrer CPU- und GPU-Leistung ab.", "updated": 1634217436779 + }, + { + "language": "TR", + "text": "Zaman çerçevesi ölçeğini daha düşük zaman dilimlerine değiştirirken dikkatli olun! Zaman dilimlerini çok hızlı ve zaman ölçeğini ayarlamadan bırakmak, ekranda aynı anda çok fazla bilgi görüntülenmesine neden olarak bilgisayarınızı yavaşlatabilir. Donanımınızın ne kadar bilgi yoğunluğu kaldırabileceği CPU ve GPU performansına bağlıdır.", + "updated": 1636095244874 } ] } From 22c97aa7fc1b638eb47310f1a5a3281338eda47c Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 10:20:23 +0300 Subject: [PATCH 17/39] This is my contribution to Superalgos --- .../charting-space-004-scales.json | 5 +++++ ...os-053-tutorial-step-switching-gears..json | 20 +++++++++++++++++++ ...-welcome-charts-layer-managers-scroll.json | 5 +++++ ...tutorial-step-layers-on-top-of-layers.json | 20 +++++++++++++++++++ ...tutorial-step-welcome-charts-layer-on.json | 5 +++++ ...algos-057-tutorial-step-the-hard-data.json | 20 +++++++++++++++++++ ...rial-step-welcome-charts-layer-panels.json | 5 +++++ 7 files changed, 80 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-004-scales.json b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-004-scales.json index aa9c7692c..a86278b1b 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-004-scales.json +++ b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-004-scales.json @@ -10,6 +10,11 @@ "language": "ES", "text": "Time Machines cuentan con un Time Scale, un Rate Scale, y un Time Frame Scale. Los gráficos de línea de tiempo pueden implementar los dos últimos.", "updated": 1627309210785 + }, + { + "language": "TR", + "text": "Zaman Makinelerinde Zaman Ölçeği, Hız Ölçeği ve Zaman Çerçevesi Ölçeği bulunur. Zaman çizelgesi çizelgeleri son ikisini uygulayabilir.", + "updated": 1636095803708 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-053-tutorial-step-switching-gears..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-053-tutorial-step-switching-gears..json index beddef626..87d6ed395 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-053-tutorial-step-switching-gears..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-053-tutorial-step-switching-gears..json @@ -25,6 +25,11 @@ "language": "DE", "text": "Zusammenfassung: Lassen wir die Skalen hinter uns und schauen wir uns an, wie das System Daten in den Diagrammen verfügbar macht.", "updated": 1634217725509 + }, + { + "language": "TR", + "text": "Ölçekleri geride bırakarak, sistemin verileri grafiklerde nasıl kullanılabilir hale getirdiğine bir göz atalım.", + "updated": 1636096145748 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Jedem Timeline Chart ist ein Layer Manager zugeordnet, der in Form eines Drop-Down-Menüs mit mehreren Layern dargestellt wird.", "updated": 1634217734286 + }, + { + "language": "TR", + "text": "Her Zaman Çizelgesi ( Timeline Chart ) Grafiği, birden çok katmanı listeleyen bir açılır menü olarak temsil edilen ilişkili bir Katman Yöneticisine ( Layer Manager ) sahiptir.", + "updated": 1636096050983 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Um einen Ebenenmanager zu öffnen, fahren Sie mit dem Mausrad über seine Kopfzeile. Verwenden Sie das Mausrad auch, um durch den Inhalt zu blättern!", "updated": 1634217743759 + }, + { + "language": "TR", + "text": "Bir katman yöneticisi (sol üstteki siyah kutular) açmak için farenin tekerleğini başlığında kaydırın. İçeriğinde gezinmek için de farenin tekerleğini kullanın!", + "updated": 1636096113075 } ] }, @@ -95,6 +110,11 @@ "language": "DE", "text": "Zur Verdeutlichung sehen Sie sich das Video im nächsten Schritt an...", "updated": 1634217753499 + }, + { + "language": "TR", + "text": "Netlik için bir sonraki adımdaki videoyu izleyin...", + "updated": 1636096131626 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-054-tutorial-step-welcome-charts-layer-managers-scroll.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-054-tutorial-step-welcome-charts-layer-managers-scroll.json index b5fc0c943..854ea7c70 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-054-tutorial-step-welcome-charts-layer-managers-scroll.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-054-tutorial-step-welcome-charts-layer-managers-scroll.json @@ -15,6 +15,11 @@ "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", "updated": 1634217814739 + }, + { + "language": "TR", + "text": "Katman yöneticlerine buradan ulaşabilir, genişletebilir ve daraltabilirsiniz.", + "updated": 1636096226759 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-055-tutorial-step-layers-on-top-of-layers.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-055-tutorial-step-layers-on-top-of-layers.json index 6be45c067..ac04b23a9 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-055-tutorial-step-layers-on-top-of-layers.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-055-tutorial-step-layers-on-top-of-layers.json @@ -26,6 +26,11 @@ "text": "Ihre Data-Mining-Operation umfasst Bots, die Datenprodukte erstellen. Jedes Produkt wird in den Diagrammen durch einen Layer in einem Layer Manager verfügbar gemacht.", "updated": 1634217919050, "style": "Definition" + }, + { + "language": "TR", + "text": "Veri madenciliği operasyonunuz, veri ürünleri yapan botlara sahiptir. Her ürün, bir Katman Yöneticisindeki ( Layer Manager ) bir Katman ( Layer ) aracılığıyla çizelgelerde kullanılabilir hale getirilir.", + "updated": 1636096341967 } ], "updated": 1616427338175 @@ -52,6 +57,11 @@ "text": "Der erste Layer-Manager auf der linken Seite dieser Time Machine besteht aus drei Layern. Diese Layer stellen die Datenprodukte dar, die das Handelssystem, das wir später testen werden, verwendet, um Handelsentscheidungen zu treffen.", "updated": 1634217907919, "style": "Text" + }, + { + "language": "TR", + "text": "Bu zaman makinesinin solundaki ilk katman yöneticisi üç katmana sahiptir. Bu katmanlar, daha sonra test edeceğimiz Ticaret Sisteminin ( Trading System ) ticaret kararları vermek için kullandığı veri ürünlerini temsil eder.", + "updated": 1636096453476 } ] }, @@ -75,6 +85,11 @@ "language": "DE", "text": "Um Ebenen ein- und auszuschalten, klicken Sie mit der linken Maustaste auf sie!", "updated": 1634221550537 + }, + { + "language": "TR", + "text": "Katmanları açmak ve kapatmak için üzerlerine mouse'un sol tuşuyla tıklayın!", + "updated": 1636096510159 } ] }, @@ -100,6 +115,11 @@ "text": "Superalgos wird mit vielen weiteren Indikatoren ausgeliefert, die jedoch in diesem Workspace nicht konfiguriert sind. Sie werden sie später kennenlernen!", "updated": 1634217927340, "style": "Note" + }, + { + "language": "TR", + "text": "Superalgos daha birçok göstergeyle birlikte gelir, ancak bunlar bu Çalışma Alanında yapılandırılmamıştır. Onları daha sonra öğreneceksiniz!", + "updated": 1636096525958 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-056-tutorial-step-welcome-charts-layer-on.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-056-tutorial-step-welcome-charts-layer-on.json index 29c91e9da..082f78ec8 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-056-tutorial-step-welcome-charts-layer-on.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-056-tutorial-step-welcome-charts-layer-on.json @@ -15,6 +15,11 @@ "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", "updated": 1634218041634 + }, + { + "language": "TR", + "text": "Bu video katman yöneticisi ve katanları öğrenmeniz içindir.", + "updated": 1636096574908 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-057-tutorial-step-the-hard-data.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-057-tutorial-step-the-hard-data.json index 320e56582..6df9de6aa 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-057-tutorial-step-the-hard-data.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-057-tutorial-step-the-hard-data.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Ein Plotter Panel enthält nicht-grafische Darstellungen von Daten, meist in Form von numerischen Werten oder Text.", "updated": 1634218122317 + }, + { + "language": "TR", + "text": "Bir Plotter Paneli, çoğunlukla sayısal değerler veya metin biçiminde verileri içerir.", + "updated": 1636096630769 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Jede Ebene kann ein oder mehrere zugehörige Panels enthalten oder auch nicht. Es liegt im Ermessen des Entwicklers des entsprechenden Indicator Bot, ob er diese definiert oder nicht.", "updated": 1634218128665 + }, + { + "language": "TR", + "text": "Her katman, bir veya daha fazla ilişkili panel içerebilir veya içermeyebilir. Bunları tanımlamak veya tanımlamamak ilgili Gösterge Botunun ( Indicator Bot ) geliştiricisine bağlıdır.", + "updated": 1636096681002 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Um auf die Panels zuzugreifen, klicken Sie mit der linken Maustaste auf das Symbol des Plotter-Panels der gewünschten Ebene.", "updated": 1634218135107 + }, + { + "language": "TR", + "text": "Panellere erişmek için, seçilen katmanın çizici paneli simgesine sol tıklayın.", + "updated": 1636096699582 } ] }, @@ -95,6 +110,11 @@ "language": "DE", "text": "Sie können Ebenen-Manager und Plotter-Panels verschieben, indem Sie mit der linken Maustaste auf ihre Überschriften klicken und sie in eine beliebige Ecke des Bildschirms ziehen.", "updated": 1634218142345 + }, + { + "language": "TR", + "text": "Katman yöneticilerini ve çizici panellerini, başlıklarına sol tıklayarak ve ekranın herhangi bir köşesine sürükleyerek taşıyabilirsiniz.", + "updated": 1636096719299 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-058-tutorial-step-welcome-charts-layer-panels.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-058-tutorial-step-welcome-charts-layer-panels.json index b5365f9ba..16b3ed29d 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-058-tutorial-step-welcome-charts-layer-panels.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-058-tutorial-step-welcome-charts-layer-panels.json @@ -15,6 +15,11 @@ "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", "updated": 1634218191658 + }, + { + "language": "TR", + "text": "Bu videoda Plotter'ın ne olduğunu ve kullanımını görüyorsun.", + "updated": 1636096787151 } ] }, From 7e06aad6d1a3b4eeb8d4ebd0d894f72821309ae4 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 5 Nov 2021 08:56:52 +0100 Subject: [PATCH 18/39] Desktop Working Again --- Desktop/DesktopApp.js | 2 +- .../{DocsStats.js => DocsStatisticsFunctions.js} | 2 +- Projects/Network/SA/Modules/UserProfiles.js | 5 +++-- Projects/Network/SA/Modules/WebSocketsNetworkClient.js | 4 ++-- Projects/ProjectsSchema.json | 6 +++--- 5 files changed, 10 insertions(+), 9 deletions(-) rename Projects/Education/UI/Function-Libraries/{DocsStats.js => DocsStatisticsFunctions.js} (95%) diff --git a/Desktop/DesktopApp.js b/Desktop/DesktopApp.js index 78a592757..df7d7f570 100644 --- a/Desktop/DesktopApp.js +++ b/Desktop/DesktopApp.js @@ -41,7 +41,7 @@ exports.newDesktopApp = function newDesktopApp() { console.log('Desktop Client Web Sockets Interface ....................................... Listening at port ' + global.env.DESKTOP_WEB_SOCKETS_INTERFACE_PORT) - thisObject.webSocketsClient = DK.projects.socialTrading.modules.httpInterface.newDesktopModulesHttpInterface() + thisObject.httpInterface = DK.projects.socialTrading.modules.httpInterface.newDesktopModulesHttpInterface() thisObject.httpInterface.initialize() console.log('Desktop Client Http Interface .............................................. Listening at port ' + global.env.DESKTOP_HTTP_INTERFACE_PORT) diff --git a/Projects/Education/UI/Function-Libraries/DocsStats.js b/Projects/Education/UI/Function-Libraries/DocsStatisticsFunctions.js similarity index 95% rename from Projects/Education/UI/Function-Libraries/DocsStats.js rename to Projects/Education/UI/Function-Libraries/DocsStatisticsFunctions.js index a52432f75..7858aae97 100644 --- a/Projects/Education/UI/Function-Libraries/DocsStats.js +++ b/Projects/Education/UI/Function-Libraries/DocsStatisticsFunctions.js @@ -1,4 +1,4 @@ -function newEducationFunctionLibraryDocsStats() { +function newEducationFunctionLibraryDocsStatisticsFunctions() { let thisObject = { printDocsStats: printDocsStats } diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index c9493dc31..26052d734 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -64,7 +64,8 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() let config = JSON.parse(signingAccount.config) let signatureObject = config.signature let web3 = new SA.nodeModules.web3() - let blockchainAccount = web3.eth.accounts.recover(signatureObject) + let blockchainAccount = web3.eth.accounts.recover(signatureObject) + SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOKCHAIN_ACCOUNT.set(blockchainAccount, userProfile) /* If the Signing Account is for a P2P node, we will add the node to the array of available nodes at the p2p network. */ @@ -84,7 +85,7 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() } if (config.webSocketsPort === undefined) { continue - } + } p2pNetworkNode = SA.projects.network.modules.p2pNetworkNode.newNetworkModulesP2PNetworkNode() p2pNetworkNode.initialize(signingAccount.signingAccountChild, userProfile, blockchainAccount) diff --git a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js index 15b34ecba..c7628e1f9 100644 --- a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js +++ b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js @@ -36,7 +36,7 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb await setUpWebsocketClient(callerRole, p2pNetworkNode) } - async function setUpWebsocketClient(callerRole) { + async function setUpWebsocketClient(callerRole, p2pNetworkNode) { return new Promise(connectToNewtwork) @@ -167,7 +167,7 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb */ socketClient.onmessage = socketMessage => { stepTwoResponse(socketMessage) } - let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).userProfileHandle) + let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), SA.secrets.map.get(global.env.DESKTOP_APP_SIGNING_ACCOUNT).privateKey) let message = { messageType: 'Handshake', diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 49ec0b489..2182d5c83 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1093,7 +1093,7 @@ { "name": "Docs Statistics Functions", "propertyName": "docsStatisticsFunctions", - "functionName": "newEducationFunctionLibraryDocsStats" + "functionName": "newEducationFunctionLibraryDocsStatisticsFunctions" } ], "utilities": [ @@ -1405,13 +1405,13 @@ { "name": "P2P Network", "propertyName": "p2pNetwork", - "functionName": "newSocialTradingModulesP2PNetwork", + "functionName": "newNetworkModulesP2PNetwork", "fileName": "P2PNetwork.js" }, { "name": "P2P Network Node", "propertyName": "p2pNetworkNode", - "functionName": "newSocialTradingModulesP2PNetworkNode", + "functionName": "newNetworkModulesP2PNetworkNode", "fileName": "P2PNetworkNode.js" } ], From d37a1135ceb793319fad8e7c3478bf3dd843b0db Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 5 Nov 2021 09:12:03 +0100 Subject: [PATCH 19/39] deepScan bug fixes --- .../Education/UI/Function-Libraries/DocsStatisticsFunctions.js | 1 + Projects/Network/SA/Modules/UserProfiles.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Projects/Education/UI/Function-Libraries/DocsStatisticsFunctions.js b/Projects/Education/UI/Function-Libraries/DocsStatisticsFunctions.js index 7858aae97..7566d0b9c 100644 --- a/Projects/Education/UI/Function-Libraries/DocsStatisticsFunctions.js +++ b/Projects/Education/UI/Function-Libraries/DocsStatisticsFunctions.js @@ -23,6 +23,7 @@ function newEducationFunctionLibraryDocsStatisticsFunctions() { for (let i = 0; i < UI.projects.education.spaces.docsSpace.searchEngine.docsIndex.length; i++) { documentPage = UI.projects.education.spaces.docsSpace.searchEngine.docsIndex[i] pagesCount += 1 + let lastValue if (projectStats[documentPage.project] !== undefined) { lastValue = projectStats[documentPage.project] } diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index 3d3ac3348..48f8a2f76 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -87,7 +87,7 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() continue } - p2pNetworkNode = SA.projects.network.modules.p2pNetworkNode.newNetworkModulesP2PNetworkNode() + let p2pNetworkNode = SA.projects.network.modules.p2pNetworkNode.newNetworkModulesP2PNetworkNode() p2pNetworkNode.initialize(signingAccount.signingAccountChild, userProfile, blockchainAccount) SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.push(p2pNetworkNode) } From b7f2b96ecee6e9a35ee4f8c811aa73949933dbe0 Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 12:07:53 +0300 Subject: [PATCH 20/39] This is my contribution to Superalgos --- ...superalgos-059-tutorial-step-back-in-time.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-059-tutorial-step-back-in-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-059-tutorial-step-back-in-time.json index d729a3e95..cfe7e470b 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-059-tutorial-step-back-in-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-059-tutorial-step-back-in-time.json @@ -26,6 +26,11 @@ "text": "Dies ist der Aufbau der Charting Space Hierarchie der Time Machine, mit der wir in den Charts gespielt haben.", "updated": 1634218294649, "style": "Definition" + }, + { + "language": "TR", + "text": "Bu, grafiklerde oynadığımız Zaman Makinesinin Grafik Alanı hiyerarşi kurulumudur.", + "updated": 1636103063884 } ] }, @@ -51,6 +56,11 @@ "text": "Nehmen Sie sich ein paar Minuten Zeit, um diese Definitionen zu erkunden! Werfen Sie einen Blick auf die Menüs der verschiedenen Knoten!", "updated": 1634218308224, "style": "Callout" + }, + { + "language": "TR", + "text": "Bu tanımları keşfetmek için birkaç dakikanızı ayırın! Farklı düğümlerin menülerine bir göz atın!", + "updated": 1636103083297 } ] }, @@ -75,6 +85,11 @@ "language": "DE", "text": "Ich hoffe, die Struktur der Knoten ist intuitiv genug, um zu verstehen, wie leistungsfähig das Konzept des Design Space ist. Sie richten eine Time Machine ein, indem Sie Timeline Chart Knoten und die gewünschten Skalen hinzufügen. Dann richten Sie Layer Manager und Layer ein, die auf die entsprechenden Data Mine Products verweisen, so dass die gewünschten Daten auf einem bestimmten Layer Manager in den Charts verfügbar werden. Es ist wie das Legoland® der Handelsdiagramme! Später werden Sie lernen, wie man Charts schneidet!", "updated": 1634221688170 + }, + { + "language": "TR", + "text": "Umarım düğümlerin yapısı, Tasarım Alanı ( Design Space ) kavramının ne kadar güçlü olduğunu kavramaya yetecek kadar sezgiseldir. Zaman Çizelgesi Grafiği ( Timeline Chart ) düğümlerini ve istenen ölçekleri ekleyerek bir zaman makinesi kurarsınız. Ardından, istenen verilerin grafiklerdeki belirli bir katman yöneticisinde kullanılabilir hale gelmesi için ilgili Veri Madeni Ürünleri'ne ( Data Mine Products ) başvuran katman yöneticilerini ve katmanları ayarlarsınız. Ticaret listelerinin Legoland®'ı gibi! Daha sonra çizelgeleri özelleştirmeyi öğreneceksiniz!", + "updated": 1636103227563 } ] } From e898bd950d63345dd4b8afe00c5c3da9cbf1c932 Mon Sep 17 00:00:00 2001 From: MarinitaMarina <88245524+MarinitaMarina@users.noreply.github.com> Date: Fri, 5 Nov 2021 10:46:30 +0100 Subject: [PATCH 21/39] translation into Russian Getting Started Tutorial Step 30-44 --- .../forward-testing-session.json | 8 ++- .../Market-Data-Tasks/market-data-tasks.json | 8 ++- .../paper-trading-session.json | 8 ++- .../Docs-Nodes/P/Point/Point/point.json | 9 ++- .../T/Task/Task-Manager/task-manager.json | 8 ++- .../Schemas/Docs-Nodes/T/Task/Task/task.json | 8 ++- .../T/Time/Time-Machine/time-machine.json | 5 ++ .../T/Time/Time-Scale/time-scale.json | 8 ++- .../Timeline-Chart/timeline-chart.json | 8 ++- .../V/Viewport/Viewport/viewport.json | 8 ++- .../charting-space-005-layer-managers.json | 9 ++- .../introduction-005-workspaces.json | 8 ++- ...-022-tutorial-step-warp-speed-zooming.json | 14 +++-- ...gos-026-tutorial-step-broke-something.json | 14 +++-- ...gos-027-tutorial-step-more-workspaces.json | 32 +++++++++-- ...tutorial-step-the-magic-of-data-mines.json | 24 +++++++- ...orial-step-at-the-core-of-data-mining.json | 32 +++++++++-- ...s-031-tutorial-step-are-we-up-to-date.json | 32 +++++++++-- ...ralgos-032-tutorial-step-time-to-stop.json | 25 +++++++++ ...-tutorial-step-careful-with-your-data.json | 56 ++++++++++++++++--- ...gos-034-tutorial-step-the-bright-side.json | 24 +++++++- ...os-035-tutorial-step-break-on-through.json | 24 +++++++- ...torial-step-navigating-the-white-room.json | 24 +++++++- ...-037-tutorial-step-talkin-time-travel.json | 32 +++++++++-- ...ralgos-038-tutorial-step-bending-time.json | 32 +++++++++-- ...ralgos-039-tutorial-step-size-matters.json | 32 +++++++++-- ...tutorial-step-putting-things-in-order.json | 32 +++++++++-- ...041-tutorial-step-get-in-the-wormhole.json | 36 ++++++++++-- ...os-042-tutorial-step-the-elegant-way..json | 40 +++++++++++-- ...43-tutorial-step-moving-in-wonderland.json | 32 +++++++++-- ...tep-welcome-charts-scales-auto-locked.json | 8 ++- 31 files changed, 558 insertions(+), 82 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json b/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json index fa7af8d92..eeabae87a 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "Un forward testing session es un modo de trading mediante el cual la instancia del Trading Bot realiza transacciones en vivo con una fracción definida por el usuario del capital disponible.\n", - "updated": 1624379829550 + "updated": 1624379829550, + "style": "Definition" + }, + { + "language": "RU", + "text": "Сессия прямого тестирования - это торговый режим, в котором экземпляр торгового бота выполняет реальную торговлю с определенной пользователем долей доступного капитала.", + "updated": 1635848931905 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json b/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json index c8558631a..f0c1c1a41 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "El nodo market data task agrupa tareas de minería de datos que operan en un mercado específico.", - "updated": 1624379923791 + "updated": 1624379923791, + "style": "Definition" + }, + { + "language": "RU", + "text": "Узел Задачи рыночных данных группирует задачи интеллектуального анализа данных, работающие на определенном рынке.", + "updated": 1635848972629 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json b/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json index a13ae69ca..2134cb936 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "Un paper trading session es un modo de trading mediante el cual la instancia del Trading Bot lee una fuente de datos de mercado en vivo, aplica las reglas definidas en el Trading System asociado y genera una simulación de trading.", - "updated": 1624379661697 + "updated": 1624379661697, + "style": "Definition" + }, + { + "language": "RU", + "text": "Административная торговая сессия - это режим торговли, при котором экземпляр торгового бота считывает поток рыночных данных в реальном времени, применяет правила, определенные в соответствующей торговой системе, и генерирует торговую симуляцию.", + "updated": 1635848838918 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json b/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json index 286b85936..0e0540a27 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json @@ -1,7 +1,14 @@ { "type": "Point", "definition": { - "text": "A point is a definition of an [x,y] coordinate. The value [x] usually represents a datetime. The value [y] may refer to a price or some other concept." + "text": "A point is a definition of an [x,y] coordinate. The value [x] usually represents a datetime. The value [y] may refer to a price or some other concept.", + "translations": [ + { + "language": "RU", + "text": "Точка - это определение координаты [x,y]. Значение [x] обычно представляет дату и время. Значение [y] может относиться к цене или какой-либо другой концепции.", + "updated": 1635956829594 + } + ] }, "paragraphs": [ { diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json index 14ad6de62..6fae1fbe0 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "Un task manageres un dispositivo que se utiliza para organizar y controlar cualquier cantidad de tareas que, a su vez, controlan las instancias de bot. Utiliza un administrador de tareas para iniciar o detener varias tareas al mismo tiempo.", - "updated": 1624493800354 + "updated": 1624493800354, + "style": "Definition" + }, + { + "language": "RU", + "text": "Диспетчер задач - это устройство, используемое для организации и управления любым количеством задач, которые, в свою очередь, управляют обоими экземплярами. Вы используете диспетчер задач для запуска или остановки нескольких задач одновременно.", + "updated": 1635845912815 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json index e36f034bf..2912cf191 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "Un task es el dispositivo que se utiliza para controlar las instancias de bots, es decir, para iniciar y detener bots, incluidos sensores, indicadores y trading bots.", - "updated": 1624454879222 + "updated": 1624454879222, + "style": "Definition" + }, + { + "language": "RU", + "text": "Задача - это устройство, используемое для управления обоими экземплярами, т.е. для запуска и остановки ботов, включая датчики, индикаторы и торгового бота.", + "updated": 1635845867630 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json index 8ebb02c09..53f0d9b1c 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json @@ -8,6 +8,11 @@ "text": "Un time machine sincroniza múltiples gráficos de línea de tiempo en la misma línea de tiempo. Gráficos de línea de tiempo dentro de un time machine pueden tener diferentes escalas de tasas o escalas de marco de tiempo, pero su escala de tiempo siempre coincidirá. ", "updated": 1628644798838, "style": "Definition" + }, + { + "language": "RU", + "text": "Машина времени синхронизирует несколько графиков временной шкалы на одной и той же временной шкале. Графики временной шкалы в машине времени могут иметь разные шкалы скорости или шкалы временных рамок, но их шкала времени всегда будет совпадать.", + "updated": 1635952573294 } ], "updated": 1628644911381 diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json index e96b984c2..14548f387 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "The time scale controla la escala del eje horizontal, es decir, la línea de tiempo de el time machine correspondiente y de todos los gráficos de la línea de tiempo que contiene.", - "updated": 1624407014586 + "updated": 1624407014586, + "style": "Definition" + }, + { + "language": "RU", + "text": "Шкала времени управляет масштабом горизонтальной оси, т.е. временной шкалой соответствующей машины времени и всех графиков временной шкалы в ней.", + "updated": 1635953349591 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json index 65fadccc6..0bb37447f 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "Un timeline chart representa un gráfico dentro de una Time Machine, que puede tener escalas de marco de tiempo y tasa independientes, así como capas particulares.", - "updated": 1624406893262 + "updated": 1624406893262, + "style": "Definition" + }, + { + "language": "RU", + "text": "График временной шкалы представляет собой диаграмму в машине времени, которая может иметь независимые шкалы скорости и временных рамок, а также определенные слои.", + "updated": 1635953255753 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json b/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json index 85fb56437..92e2dc01d 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json @@ -6,7 +6,13 @@ { "language": "ES", "text": "El viewport es una ventana a través de la cual puede mirar hacia el charting space.", - "updated": 1624407113080 + "updated": 1624407113080, + "style": "Definition" + }, + { + "language": "RU", + "text": "Окно просмотра - это окно, через которое Вы можете заглянуть в пространство построения графиков.\n\n", + "updated": 1635952209893 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json index 3a8b9d8b3..dbb0b59b1 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json +++ b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json @@ -4,7 +4,14 @@ "type": "Layer Managers", "definition": { "text": "Layer Managers organize layers and link up to the data products to be displayed on the charts.", - "updated": 1610138345819 + "updated": 1610138345819, + "translations": [ + { + "language": "RU", + "text": "Менеджеры слоев организуют слои и связывают их с продуктами данных, которые будут отображаться на диаграммах.", + "updated": 1635958768661 + } + ] }, "paragraphs": [ { diff --git a/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json b/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json index 4e0ed8ab6..41ca92855 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json +++ b/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json @@ -9,7 +9,13 @@ { "language": "ES", "text": "Workspaces son un concepto poderoso. Permiten trabajar en múltiples entornos de forma ordenada.", - "updated": 1629579704727 + "updated": 1629579704727, + "style": "Definition" + }, + { + "language": "RU", + "text": "Рабочие пространства - это мощная концепция. Они позволяют упорядоченно работать с несколькими настройками.", + "updated": 1635948541491 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json index cbeaff00f..58edb73b5 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json @@ -42,7 +42,8 @@ { "language": "RU", "text": "Есть еще один инструмент, который может оказаться полезным для управлением временным простарнством! Встроенная функция масштабирования браузера!", - "updated": 1635609923705 + "updated": 1635609923705, + "style": "Definition" } ] }, @@ -85,7 +86,8 @@ { "language": "RU", "text": " Может, у Вас возникнет желание визуализировать большие участки Design Space , чем позволяет Ваш экран.", - "updated": 1635610025598 + "updated": 1635610025598, + "style": "Text" } ] }, @@ -126,8 +128,9 @@ }, { "language": "RU", - "text": "Нажмите Ctrl и прокрутите колесико мыши в Windows или нажмите ⌘ и \"+\" или \"-\" на Mac.", - "updated": 1635610153211 + "text": "Нажмите Ctrl и прокрутите колесико мыши в Windows, или нажмите ⌘ и \"+\" или \"-\", работая на Mac.", + "updated": 1635952091521, + "style": "Callout" } ] }, @@ -173,7 +176,8 @@ { "language": "RU", "text": "Chrome указывает уровень масштабирования в правом верхнем углу. Когда Вы увеличиваете или уменьшаете масштаб, пространство дизайна центрируется на экране. Используйте карту пространства дизайна, чтобы вернуться туда, где Вы были.", - "updated": 1635610570380 + "updated": 1635610570380, + "style": "Success" } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json index e03c98c3f..7208737fe 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json @@ -36,7 +36,8 @@ { "language": "RU", "text": "Если Вы когда-нибудь что-то нарушили, например, удалили узел или изменили конфигурацию и не знаете, как дальше действовать...", - "updated": 1635627557596 + "updated": 1635627557596, + "style": "Definition" } ] }, @@ -72,7 +73,8 @@ { "language": "RU", "text": "... Вы можете легко начать все сначала с исходного рабочего пространства Getting Started Tutorials Plugin Workspace!", - "updated": 1635628049167 + "updated": 1635628049167, + "style": "Callout" } ], "updated": 1622196973760 @@ -108,7 +110,8 @@ { "language": "RU", "text": "В таком случае просто потяните вкладку с левой стороны, прокрутите, найдите плагин Getting Started Tutorials и нажмите на него! Загрузится исходный Plugin Workspace и учебное пособие появится снова, с самого начала!", - "updated": 1635629001422 + "updated": 1635629001422, + "style": "Text" } ], "updated": 1622634394712 @@ -132,8 +135,9 @@ }, { "language": "RU", - "text": "Plugin Workspaces поставляются вместе с системой. Давайте посмотрим, как вы можете сделать их своими собственными или создать новые рабочие пространства!", - "updated": 1635629610043 + "text": "Plugin Workspaces поставляются вместе с системой. Давайте посмотрим, как Вы можете сделать их своими собственными или создать новые рабочие пространства!", + "updated": 1635844587052, + "style": "Success" } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json index cb9b86faa..8fc820713 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Plugin Workspaces, die mit dem System ausgeliefert werden, haben einen schwarzen Hintergrund in der Registerkarte Workspaces auf der linken Seite.", - "updated": 1634167337552 + "updated": 1634167337552, + "style": "Definition" + }, + { + "language": "RU", + "text": "Plugin Workspaces поставляются вместе с системой и отображаются на черном фоне на вкладке Workspaces - слева.", + "updated": 1635948401452 } ], "updated": 1629803469668 @@ -62,7 +68,13 @@ { "language": "DE", "text": "Workspaces speichern alle Informationen zu den Datenstrukturen, die im Arbeitsbereich enthalten sind.", - "updated": 1634167346842 + "updated": 1634167346842, + "style": "Text" + }, + { + "language": "RU", + "text": "Workspaces сохраняют всю информацию относительно структур данных, включенных в рабочую область.", + "updated": 1635948509600 } ] }, @@ -80,7 +92,13 @@ { "language": "DE", "text": "Erstellen Sie eine Kopie dieses Plugin Workspace um ihn zu Ihrem eigenen zu machen! Drücken Sie dazu: Ctrl + Shift + Key-S", - "updated": 1634167512053 + "updated": 1634167512053, + "style": "Callout" + }, + { + "language": "RU", + "text": "Давайте создадим копию этого Plugin Workspace и сделаем его Вашим собственным! Нажмите следующую комбинацию клавиш: Ctrl + Shift + S", + "updated": 1635948769541 } ] }, @@ -109,7 +127,13 @@ { "language": "DE", "text": "Öffnen Sie nun die Registerkarte Workspaces auf der linken Seite, scrollen Sie ganz nach unten und suchen Sie den einzigen Workspace mit einem lila Hintergrund! Das ist Ihr Arbeitsbereich! Sie brauchen ihn aber nicht anzuklicken!", - "updated": 1634167411161 + "updated": 1634167411161, + "style": "Important" + }, + { + "language": "RU", + "text": "Теперь откройте вкладку Workspaces слева, прокрутите вниз и найдите единственное рабочее пространство с фиолетовым фоном! Это ваше рабочее место! Но не нужно нажимать на него!", + "updated": 1635948844576 } ], "updated": 1629803460646 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json index ff08a47e0..1a4ce5b86 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Innerhalb jedes Marktes ist die Operation nach Data Mine organisiert. Superalgos wird mit mehreren quelloffenen Data Mines ausgeliefert, die jeweils mehrere Indikatoren enthalten.", - "updated": 1634168232166 + "updated": 1634168232166, + "style": "Definition" + }, + { + "language": "RU", + "text": "На каждом рынке операция огранизована с помощью Data Mine. Superalgos посатвляется с несколькими шахтами данных с открытым исходным кодом, каждая - с множеством индикаторов.\n\n", + "updated": 1635844743358 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Betrachten Sie Data Mines als Plugins, die Entwickler erstellen können, um die Datenanalysekapazität des Systems zu erweitern. Ein Indicator Bot kann Daten verarbeiten, die von anderen Indikatoren erzeugt werden, und so einen Mehrwert und eine tiefere und reichhaltigere Analyse liefern.", - "updated": 1634168218271 + "updated": 1634168218271, + "style": "Text" + }, + { + "language": "RU", + "text": "Думайте о шахтах данных как о плагинах, которые разработчики могут создавать для расширения объема анализа данных системы. Indicator Bot может обрабатывать данные, которые производят другие индикаторы, производя более глубокий и насыщенный анализ.", + "updated": 1635845246472 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Wenn Sie ein Grundverständnis von JavaScript haben, können Sie auch Indikatoren erstellen! Wenn Sie eine Data Mine beitragen, verdienen Sie Superalgos SA Tokens!", - "updated": 1634168241958 + "updated": 1634168241958, + "style": "Callout" + }, + { + "language": "RU", + "text": "Если у Вас имеется базовое понимание JavaScript, то Вы тоже можете создать индикаторы! Если Вы внесете свой вклад в Data Mine, то заработаете токены Superalgos (SA)!", + "updated": 1635846329022 } ], "updated": 1622196189467 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json index e7f38a7b9..eca336ba6 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Das Herzstück einer Data-Mining-Operation sind Tasks, die Bots ausführen. Ein Task steuert einen Bot, und ein Task Manager kann mehrere Tasks steuern.", - "updated": 1634168469674 + "updated": 1634168469674, + "style": "Definition" + }, + { + "language": "RU", + "text": "Ядром операции интеллектуального анализа данных являются задачи, над которыми работают боты. Одна Task упавляет одним ботом, а Task Manager может управлять несколькими задачами.\n\n\n", + "updated": 1635845551315 } ] }, @@ -61,7 +67,13 @@ { "language": "DE", "text": "Inzwischen haben Sie sechs verschiedene Geräte kennengelernt, die Sie zur Steuerung der einzelnen Bots in Ihrem Data Mining-Vorgang verwenden können. Auf der höchsten Ebene steuert der Knoten Data Tasks alle Data-Mining-Bots im Netzwerkknoten.", - "updated": 1634168489908 + "updated": 1634168489908, + "style": "Text" + }, + { + "language": "RU", + "text": "К настоящему времени Вы узнали о шести различных устройствах, которые Вы можете использовать для управления каждым ботом в своей операции интеллектуального анализа данных. На самом высоком уровне узел Data Tasks управляет всеми ботами интеллектуального анализа данных в Network Node.", + "updated": 1635845824663 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Wir werden in einer Minute über Netzwerkknoten sprechen...", - "updated": 1634168496945 + "updated": 1634168496945, + "style": "Callout" + }, + { + "language": "RU", + "text": "Мы поговорим о сетевых узлах через минуту...", + "updated": 1635845956734 } ] }, @@ -120,7 +138,13 @@ { "language": "DE", "text": "Auf der untersten Ebene steuert ein einzelner Task einen einzelnen Bot. Die Knoten dazwischen sind Organisationsknoten, die für Ordnung sorgen und eine detaillierte Kontrolle über die verschiedenen Bereiche ermöglichen.", - "updated": 1634168505425 + "updated": 1634168505425, + "style": "Text" + }, + { + "language": "RU", + "text": "На самом низком уровне отдельная Task управляет одним ботом. Промежуточные узлы - это организационные узлы, которые помогают поддерживать порядок в работе и позволяют осуществлять детальный контроль над различными разделами.", + "updated": 1635846467212 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json index f1677ea83..c5df60319 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Inzwischen sollten alle Prozesse zu 100 % laufen. Wenn dies der Fall ist, bezeichnen wir die Data-Mining-Operation als \"up to date\".", - "updated": 1634170269450 + "updated": 1634170269450, + "style": "Definition" + }, + { + "language": "RU", + "text": "К настоящему моменту все процессы должны работать на 100%. Когда это происходит, мы называем операцию интеллектуального анализа данных \"актуальной\".\n", + "updated": 1635847032996 } ], "updated": 1616415623576 @@ -61,7 +67,13 @@ { "language": "DE", "text": "Wenn alle Prozesse auf dem neuesten Stand sind, laufen die Bots weiter und verarbeiten Informationen in Echtzeit, während sie an der Börse produziert werden. Das heißt, die Data-Mining-Operation stoppt nur, wenn Sie sie stoppen!", - "updated": 1634170281567 + "updated": 1634170281567, + "style": "Text" + }, + { + "language": "RU", + "text": "Когда все процессы обновлены, боты продолжают работать, обрабатывая информацию в режиме реального времени по мере ее получения на бирже. То есть операция интеллектуального анализа данных не остановится, пока Вы ее не остановите!", + "updated": 1635847768705 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Schauen Sie sich um und prüfen Sie, ob alle Prozesse zu 100% laufen.", - "updated": 1634170288448 + "updated": 1634170288448, + "style": "Callout" + }, + { + "language": "RU", + "text": "Оглянитесь вокруг и посмотрите, все ли процессы работают на 100%.", + "updated": 1635847797250 } ] }, @@ -119,7 +137,13 @@ { "language": "DE", "text": "Um eine Live Trading Session durchzuführen, benötigen Sie eine ständige Zufuhr von Informationen von der Börse, die in Echtzeit verarbeitet werden, damit der Trading Bot die Regeln Ihres Trading System anwenden kann, um Live-Handelsentscheidungen zu treffen.", - "updated": 1634170296952 + "updated": 1634170296952, + "style": "Text" + }, + { + "language": "RU", + "text": "To run a Live Trading Session, you need a constant feed of information from the exchange processed in realtime so that the Trading Bot may apply the rules of your Trading System to make live trading decisions......", + "updated": 1635847720469 } ], "updated": 1616415667438 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json index 2af510240..17318dff1 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json @@ -32,6 +32,11 @@ "text": "Da wir keine Live Trading Session durchführen, macht es grade keinen Sinn, das Data Mining zu diesem Zeitpunkt laufen zu lassen.", "updated": 1634170784986, "style": "Definition" + }, + { + "language": "RU", + "text": "Мы пока не собирались проводить Live Trading Session, поэтому на данный момент нет мысла продолжать наш интеллектуальный анализ данных.", + "updated": 1635848067290 } ] }, @@ -64,6 +69,11 @@ "text": "Es gibt zwei Anwendungsfälle für die Data Tasks:", "updated": 1634170835236, "style": "Text" + }, + { + "language": "RU", + "text": "Для выполнения Data Tasks существует два основных варианта использования:", + "updated": 1635848266801 } ] }, @@ -95,6 +105,11 @@ "text": "Zur Verarbeitung historischer Daten: Sie möchten für einen bestimmten Zeitraum einen bestimmten Market verarbeiten, um eine Backtesting Session durchzuführen oder Indikatoren testen.", "updated": 1634208005120, "style": "List" + }, + { + "language": "RU", + "text": "To process historic data: Вам может понадобится обработка диапазон дат и времени для любого данного Market, чтобы запустить Backtesting Session или обработать новые индикаторы.", + "updated": 1635848372006 } ] }, @@ -126,6 +141,11 @@ "text": "Eine Live-Sitzung durchführen: Die verschiedenen Arten von Live-Sitzungen, wie Paper Trading Session, Forward Testing Session und Live Trading Session, benötigen alle einen Live-Markt-Feed.", "updated": 1634208020007, "style": "List" + }, + { + "language": "RU", + "text": "To run a live session: сессии в реальном времени бывают разных типов: Paper Trading Session, Forward Testing Session и Live Trading Session - это все, что необходимо для потока рынка в реальном времени. ", + "updated": 1635848628305 } ] }, @@ -156,6 +176,11 @@ "text": "Wenn alle Prozesse auf dem neuesten Stand sind, wählen Sie \"Stop All Tasks\" im Knoten Market Data Tasks. Beachten Sie, dass die Tasks auch von einem anderen Knoten aus gestoppt werden können als von dem aus, mit dem sie gestartet wurden!", "updated": 1634172843262, "style": "Callout" + }, + { + "language": "RU", + "text": "Когда все процессы будут обновлены, выберите \"Stop All Tasks\" в узле Market Data Tasks. Обратите внимание, что мы можем остановить задачи с другого узла, чем тот, который мы использовали для их запуска!", + "updated": 1635848790357 } ], "updated": 1622197433719 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json index a95f88feb..0a01014a8 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Es kann Minuten dauern, bis alle Aufgaben zum getoppt sind. Sie sollten das System niemals schließen, bevor alle Aufgaben beendet sind.", - "updated": 1634173343328 + "updated": 1634173343328, + "style": "Definition" + }, + { + "language": "RU", + "text": "Для остановки всех задач может потребоваться до 1 минуты. Вы никогда не должны закрывать систему до остановки всех задач.", + "updated": 1635949169179 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Überprüfen Sie die Kommandozeile Ihres Systems, um zu sehen, ob die Aufgaben gestoppt wurden!", - "updated": 1634173091261 + "updated": 1634173091261, + "style": "Callout" + }, + { + "language": "RU", + "text": "Проверьте консольное приложение, чтобы увидеть, как прекращается процесс!", + "updated": 1635949207414 } ], "updated": 1616416021973 @@ -84,7 +96,13 @@ { "language": "DE", "text": "Der richtige Weg, Superalgos zu schließen, ist:", - "updated": 1634173103809 + "updated": 1634173103809, + "style": "Text" + }, + { + "language": "RU", + "text": "Правильный способ, чтобы закрыть Superalgos:", + "updated": 1635949241926 } ] }, @@ -108,7 +126,13 @@ { "language": "DE", "text": "Alle Aufgaben beenden, ein paar Minuten warten.", - "updated": 1634173410210 + "updated": 1634173410210, + "style": "List" + }, + { + "language": "RU", + "text": "Остановите все задачи и подождите пару минут.", + "updated": 1635949279017 } ] }, @@ -132,7 +156,13 @@ { "language": "DE", "text": "Wenn alle Aufgaben beendet sind, können Sie die Konsolenanwendung schließen oder den Prozess mit Ctrl + Key-C beenden.", - "updated": 1634173253123 + "updated": 1634173253123, + "style": "List" + }, + { + "language": "RU", + "text": "Когда все задачи остановятся, Вы можете закрыть консольное приложение или остановить процесс с помощью клавиш Ctrl + C .", + "updated": 1635950790788 } ] }, @@ -155,7 +185,13 @@ { "language": "DE", "text": "Sie können den Browser jederzeit schließen und die Aufgaben im Hintergrund weiterlaufen lassen.", - "updated": 1634173156784 + "updated": 1634173156784, + "style": "List" + }, + { + "language": "RU", + "text": "Вы можете закрыть браузер в любой момент и остановить обработку задач в фоновом режиме.", + "updated": 1635949454297 } ] }, @@ -179,7 +215,13 @@ { "language": "DE", "text": "Wenn Sie den Client schließen, bevor die Tasks beendet sind, können Ihre Daten beschädigt werden!", - "updated": 1634173172953 + "updated": 1634173172953, + "style": "Warning" + }, + { + "language": "RU", + "text": "Закрытие Client до остановки задач может привести к поверждению ваших данных!", + "updated": 1635949518016 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json index 038b221f4..947513d21 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Bislang waren Sie auf die dunkle Seite von Superalgos beschränkt. Machen Sie sich bereit, die helle Seite kennenzulernen: den Charting Space.", - "updated": 1634174936126 + "updated": 1634174936126, + "style": "Definition" + }, + { + "language": "RU", + "text": "До сих пор Вы были ограничены темной стороной Superalgos. Приготовьтесь к тому, что Вас ждет яркая сторона - Charting Space.", + "updated": 1635949846573 } ] }, @@ -61,7 +67,13 @@ { "language": "DE", "text": "Der Charting-Bereich befindet sich über dem Design-Bereich, getrennt durch einen türkisfarbenen Schieberegler. Wie Sie es von Superalgos gewohnt sind, ist der Charting Space konfigurierbar und hochflexibel. Alles, was dort geschieht, wird in der Charting Space Hierarchie definiert.", - "updated": 1634174969494 + "updated": 1634174969494, + "style": "Text" + }, + { + "language": "RU", + "text": "Пространство для построения графиков расположено поверх пространства дизайна, разделенного бирюзовым ползунком. Как Вы и ожидаете от Superalgos, это пространство является настраиваемым и очень гибким. Все что там происходит, определено в иерархии Charting Space.", + "updated": 1635950872342 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Der Charting Space ist dafür bekannt, dass er die Leute umhaut. Bitte fahren Sie mit diesem Tutorial nicht fort, wenn Sie unter dem Einfluss von psychoaktiven Substanzen stehen.", - "updated": 1634174978126 + "updated": 1634174978126, + "style": "Warning" + }, + { + "language": "RU", + "text": "Пространство построения графиков известно тем, что будоражит умы людей. Пожалуйста, воздержитесь от продолжения изучения этого материала, если в настоящий момент Вы находитесь под воздействием психоактивных веществ.", + "updated": 1635950393713 } ], "updated": 1616416552336 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json index c3cf9f025..e99862ed8 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ich bringe Sie in kürzester Zeit dazu, sich im Charting Space zu bewegen und zu blättern... Kümmern wir uns zuerst um den Schieberegler!", - "updated": 1634205702474 + "updated": 1634205702474, + "style": "Definition" + }, + { + "language": "RU", + "text": "Я быстро введу Вас в курс дела с перемещением и просмотром простарнства для построения графиков... Давайте сначала разберемся с ползунком!", + "updated": 1635950525926 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Klicken Sie ihn an und ziehen Sie ihn nach unten, um den Design Space zu schließen und den Charting Space zu öffnen. Um den umgekehrten Effekt zu erzielen, machen Sie das Gegenteil. Drücken Sie Ctrl + Shift + ↓. um dies mit der Tastatur zu tun. Versuchen Sie auch ↑ ← →", - "updated": 1634205728640 + "updated": 1634205728640, + "style": "Callout" + }, + { + "language": "RU", + "text": "Щелкните по нему и перетащите вниз, чтобы закрыть область проектирования и открыть область построения графиков. Вернитесь в исходное положение. Чтобы сделать это с помощью клавиатуры, нажмите Ctrl + Shift + ↓. Попробуйте также ↑ ← → !", + "updated": 1635950755868 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Es ist eine gute Idee, einen der beiden Bereiche vollständig zu schließen, um Ressourcen zu sparen, es sei denn, Sie brauchen beide Bereiche nur teilweise geöffnet zu haben.", - "updated": 1634205372068 + "updated": 1634205372068, + "style": "Success" + }, + { + "language": "RU", + "text": "До тех пор пока у Вас не появится необходимость частичного открытия обоих пространств, рекомендуется полностью закрыть каждое из них, чтобы сохранить компьютерные ресурсы на Вашем устройстве.", + "updated": 1635951214809 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json index 9eadd92c9..555bd395f 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Genau wie der Design Space bietet auch der Charting Space einen riesigen Bereich, in dem Sie Diagramme einrichten können... so viele, wie Ihre Hardware verkraften kann!", - "updated": 1634205591674 + "updated": 1634205591674, + "style": "Definition" + }, + { + "language": "RU", + "text": "Как и пространство дизайна, пространство постороения графиков имеет огромную область, где Вы можете создавать диаграммы... столько, сколько сможет выдержать Ваше устройство!", + "updated": 1635951454512 } ] }, @@ -61,7 +67,13 @@ { "language": "DE", "text": "Um die Dinge für Neulinge einfach zu halten, gibt es in diesem Workspace des Getting Started Tutorials nur zwei Charts. Fortgeschrittene Benutzer überwachen Charts von mehreren Börsen und Märkten.", - "updated": 1634205603337 + "updated": 1634205603337, + "style": "Text" + }, + { + "language": "RU", + "text": "Чтобы новичкам было проще, в Getting Started Tutorials workspace имеется только две диаграммы. Опытные пользователи могут отслеживать графики с множествами бирж и рынков.", + "updated": 1635952143282 } ] }, @@ -90,7 +102,13 @@ { "language": "DE", "text": "Um sich im Viewport zu bewegen, klicken Sie auf einen leeren Bereich und ziehen Sie mit der Maus. Die Tastaturkombination ist Shift plus die Pfeiltasten ↑ ← → ↓", - "updated": 1634205660486 + "updated": 1634205660486, + "style": "Callout" + }, + { + "language": "RU", + "text": "Чтобы перемещаться по Viewport, удерживайте левую кнопку мыши и перетащите пустую область. При использовании клавиатуры, воспользуйтесь комбинацией клавиш Shift + ↑ ← → ↓", + "updated": 1635952028877 } ], "updated": 1622198195729 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json index 5e36775f5..caecea36e 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ich habe bereits erwähnt, dass es in diesem Workspace zwei Diagramme gibt. In Superalgos nennen wir jedes dieser Diagramme eine Time Machine.", - "updated": 1634205940397 + "updated": 1634205940397, + "style": "Definition" + }, + { + "language": "RU", + "text": "Я упоминал ранее, что в этом рабочем пространстве имеется две диаграммы. В Superalgos мы называем каждую из них - Time Machine.", + "updated": 1635952714402 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Eine Time Machine kann einen oder mehere Timeline Charts enthalten. Wir nennen sie Time Machines, weil alle Timeline Charts innerhalb einer Time Machine zeitlich synchronisiert sind. Diese Eigenschaft der Time Machines ermöglicht es, verschiedene Datenebenen auf derselben Time Scale zu überlagern.", - "updated": 1634206096721 + "updated": 1634206096721, + "style": "Text" + }, + { + "language": "RU", + "text": "Машина времени может содержать одну или несколько Timeline Chart. Мы называем их машиной времени, потому что здесь все графики временной шкалы синхронизированы во времени. Эта особенность машин времени позволяет накладывать различные слои данных, используя один и тот же Time Scale.", + "updated": 1635953116457 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Fahren Sie mit dem Mauszeiger über die Time Machines!", - "updated": 1634206006623 + "updated": 1634206006623, + "style": "Callout" + }, + { + "language": "RU", + "text": "Наведите указатель мыши на машины времени!", + "updated": 1635953388808 } ] }, @@ -119,7 +137,13 @@ { "language": "DE", "text": "Beachten Sie die Beschriftung auf der linken Seite, aus der hervorgeht, mit welchen Börsen und Märkten die Daten verbunden sind. Eine einzige Time Machine kann Daten von mehreren Märkten und mehreren Börsen enthalten!", - "updated": 1634206050433 + "updated": 1634206050433, + "style": "Text" + }, + { + "language": "RU", + "text": "Обратите внимание на появившуюся слева метку, которая указывает на то, с какими биржами и рынками связаны данные. Одна машина времени может содержать данные с множества рынков и бирж!", + "updated": 1635953517021 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json index 348346ca9..d494382fd 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ok... vielleicht ist es nicht wirklich wie Raumkrümmung, aber habt Nachsicht mit mir... Du wirst begeistert sein, wie du Zeitmaschinen in jedes beliebige Format bringen kannst.", - "updated": 1634206247154 + "updated": 1634206247154, + "style": "Definition" + }, + { + "language": "RU", + "text": "Хорошо... Может быть, на самом деле это и не похоже на сгибание... но потерпите.. Вам понравится, как Вы сможете сформировать машины времени в любом желаемом формате.", + "updated": 1635955928460 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Bewegen Sie Ihren Mauszeiger über einen der Ränder des türkisfarbenen Rahmens, der die Time Machine definiert, und sehen Sie, was passiert. Sehen Sie, wie der Rand gelb hervorgehoben wird?", - "updated": 1634206251264 + "updated": 1634206251264, + "style": "Text" + }, + { + "language": "RU", + "text": "Наведите указатель мыши на любой из краев бирюзовой рамки, определяющий машину времени, и посмотрите, что произойдет. Вы видите, как край рамки выделился желтым цветом?", + "updated": 1635953906664 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Sehr gut! Klicken Sie nun mit der linken Maustaste auf den Rahmen und ziehen Sie!", - "updated": 1634206263662 + "updated": 1634206263662, + "style": "Callout" + }, + { + "language": "RU", + "text": "Отлично! Теперь щелкните левой кнопкой мыши рамку и потяните!", + "updated": 1635954062456 } ] }, @@ -118,7 +136,13 @@ { "language": "DE", "text": "Auf diese Weise können Sie die Time Machines nach Ihren Wünschen gestalten.", - "updated": 1634206284213 + "updated": 1634206284213, + "style": "Note" + }, + { + "language": "RU", + "text": "Вот как Вы можете формировать машины времени по своему нраву.", + "updated": 1635954106250 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json index 358a6a04d..354cbfd5b 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Zusammenfassung: Wie wäre es, die Time Machine genau an das Seitenverhältnis Ihres Bildschirms anzupassen?", - "updated": 1634206350448 + "updated": 1634206350448, + "style": "Definition" + }, + { + "language": "RU", + "text": "Как насчет того, чтобы настроить по форме машину времени в соответствии с точным соотношением сторон Вашего экрана?", + "updated": 1635954194574 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Die Anpassung des Seitenverhältnisses Ihrer Zeitmaschinen an das Seitenverhältnis Ihres Bildschirms ist entscheidend dafür, dass die Diagramme beim Heranzoomen genau auf Ihren Bildschirm passen!", - "updated": 1634206368643 + "updated": 1634206368643, + "style": "Text" + }, + { + "language": "RU", + "text": "Соответствие соотношения сторон Ваших машин времени к соотношению сторон Вашего экрана имеет решающее значение, т.к. необходимо, чтобы диаграммы плотно прилегали к Вашему экрану при увеличении масштаба!", + "updated": 1635954329649 } ], "updated": 1622198491208 @@ -91,7 +103,13 @@ { "language": "DE", "text": "Richten Sie Ihre Maus auf eine der Time Machines und drücken Sie Ctrl + Shift + Alt + Key-A. Machen Sie dasselbe mit der anderen Maschine!", - "updated": 1634206401027 + "updated": 1634206401027, + "style": "Callout" + }, + { + "language": "RU", + "text": "Наведите курсор мыши на одну из машин времени и нажмите Ctrl + Shift + Alt + A. Сделайте то же самое с другой машиной времени!", + "updated": 1635954414423 } ] }, @@ -121,7 +139,13 @@ { "language": "DE", "text": "Lassen Sie die beiden Time Machines von nun an auf das Seitenverhältnis Ihres Bildschirms abgestimmt!", - "updated": 1634206411265 + "updated": 1634206411265, + "style": "Success" + }, + { + "language": "RU", + "text": "С этого момента оставьте две машины времени, соответствующие соотношению сторон Вашего эерана.", + "updated": 1635954725880 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json index 4ab71e3d0..01a6ae465 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Bevor wir in die Tabellen eintauchen, noch eine Sache. Sie müssen wissen, wie Sie das Haus in Ordnung bringen können!", - "updated": 1634206589741 + "updated": 1634206589741, + "style": "Definition" + }, + { + "language": "RU", + "text": "Еще одна вещь, прежде чем мы погрузимся в графики: Вам необходимо знать, как привести рабочее простарнство в порядок.", + "updated": 1635954932905 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Es wird die Zeit kommen, in der Sie vielleicht mit Dutzenden von Diagrammen arbeiten werden. Sie wissen bereits, wie Sie deren Format ändern können. Jetzt müssen Sie lernen, wie Sie die Diagramme verschieben können, damit Sie die gewünschten Arrangements erstellen können. Das ist ganz einfach:", - "updated": 1634206671224 + "updated": 1634206671224, + "style": "Text" + }, + { + "language": "RU", + "text": "Придет время, когда Вы, возможно, будете работать с десятками графиков. Вы уже знаете, как изменить их формат. Теперь Вам необходимо научиться перемещать их так, чтобы Вы могли создавать любые необходимые Вам расположения. Это довольно просто:", + "updated": 1635955068033 } ], "updated": 1616416902513 @@ -91,7 +103,13 @@ { "language": "DE", "text": "Drücken Sie die Shift, klicken Sie mit der linken Maustaste, und ziehen Sie!", - "updated": 1634206723517 + "updated": 1634206723517, + "style": "Callout" + }, + { + "language": "RU", + "text": "Удерживайте Shift, щелкните левой кнопкой мыши и перетащите!", + "updated": 1635955363944 } ] }, @@ -120,7 +138,13 @@ { "language": "DE", "text": "Ich glaube, wir haben jetzt alles über die Verwaltung des Charting Space gesagt. Jetzt ist es Zeit, in die Diagramme einzutauchen!", - "updated": 1634206736658 + "updated": 1634206736658, + "style": "Success" + }, + { + "language": "RU", + "text": "Я полагаю, что мы рассмотрели все о том, как управлять пространством для построения графиков. Пришло время погрузиться в диаграммы!", + "updated": 1635955483010 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json index 1af9a5537..50278a8bb 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json @@ -30,7 +30,14 @@ { "language": "DE", "text": " Es ist an der Zeit, in eine Time Machine einzutauchen und zu sehen, was passiert! Sind Sie bereit für ein umfassendes, immersives Erlebnis?", - "updated": 1634207146163 + "updated": 1634207146163, + "style": "Definition" + }, + { + "language": "RU", + "text": "Пришло время погрузиться в Time Machine и посмотреть, что произойдет. Готовы ли Вы к полноценному погружению?", + "updated": 1636044252350, + "style": "Definition" } ] }, @@ -60,7 +67,14 @@ { "language": "DE", "text": "Der Charting Space ist so etwas wie das Google Maps der Marktcharts. Wie Sie bereits wissen, können Sie mit der linken Maustaste klicken und ziehen, um sich in der im Charting Space zu bewegen... aber wie zoomen Sie hinein, um die Details zu sehen?", - "updated": 1634207179395 + "updated": 1634207179395, + "style": "Text" + }, + { + "language": "RU", + "text": "Пространство построения графиков похоже на карты Google Maps рыночных графиков. Как Вы уже знаете, щелкните левой кнопкой мыши и перетащите, чтобы перемещаться по ландшафту... Но как Вы увеличиваете масштаб, чтобы увидеть детали?", + "updated": 1635955895629, + "style": "Text" } ] }, @@ -89,7 +103,14 @@ { "language": "DE", "text": "Mit dem Rad der Maus! Probieren Sie es aus!", - "updated": 1634207215883 + "updated": 1634207215883, + "style": "Callout" + }, + { + "language": "RU", + "text": "С помощью колесика мыши! Пробуйте!", + "updated": 1635955956161, + "style": "Callout" } ] }, @@ -119,7 +140,14 @@ { "language": "DE", "text": "Ganz genau! Genau wie in Google Maps! Zeigen Sie mit der Maus auf den Bereich, der Sie interessiert, und drehen Sie dann das Mausrad nach vorne, um hineinzuzoomen, und nach hinten, um herauszuzoomen! ", - "updated": 1634207338450 + "updated": 1634207338450, + "style": "Text" + }, + { + "language": "RU", + "text": "Точно! Прямо как на картах Google! Наведите курсор мыши на интересующую Вас область, затем прокрутите колесико мыши вперед, чтобы увеличить масштаб и назад, чтобы уменьшить!", + "updated": 1635956162361, + "style": "Text" } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json index 76e7fa684..bcfca53bb 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Ich weiß! Wenn Sie auf eine beliebige Stelle zoomen, ist es unwahrscheinlich, dass Sie die Karte im rechten Winkel zu Ihrem Bildschirm positionieren, oder? Keine Sorge... versuchen Sie diesen Trick!", - "updated": 1634207830054 + "updated": 1634207830054, + "style": "Definition" + }, + { + "language": "RU", + "text": "Я знаю! Увеличение масштаба в случайном месте вряд ли приведет к тому, что диаграмма окажется в квадрате с Вашим экраном, верно? Не беспокойтесь... попробуйте это трюк!", + "updated": 1635956366877 } ], "updated": 1616417516192 @@ -56,7 +62,13 @@ { "language": "DE", "text": "Stellen Sie das Seitenverhältnis ein: Zeigen Sie mit der Maus auf den Chart der Backtesting Session (den oberen) und drücken Sie Ctrl + Shift + Alt + Key-A", - "updated": 1634207859976 + "updated": 1634207859976, + "style": "List" + }, + { + "language": "RU", + "text": "Отрегулируйте соотношение сторон: наведите Point курсором мыши на график Backtesting Session (тот, что сверху) и нажмите Ctrl + Shift + Alt + A.", + "updated": 1635956770216 } ] }, @@ -79,7 +91,13 @@ { "language": "DE", "text": "Verkleinern: Benutzen Sie das Mausrad, um zur äußersten Verkleinerungsposition zu gelangen; nur von dieser Position aus funktioniert der nächste Befehl!", - "updated": 1634207868032 + "updated": 1634207868032, + "style": "List" + }, + { + "language": "RU", + "text": "Уменьшение масштаба: используйте колесико мыши, чтобы перейти в крайнее положение уменьшения масштаба; только из этого положения будет работать следующая команда!", + "updated": 1635958418820 } ] }, @@ -108,7 +126,13 @@ { "language": "DE", "text": "Doppelklicken Sie einmal: Dies zentriert das Diagramm und bringt Sie zu einer bestimmten Zoomstufe; es wird ein Rand gelassen, damit der Name und die Registerkarte des Diagramms in die obere linke Ecke passen.", - "updated": 1634207894965 + "updated": 1634207894965, + "style": "List" + }, + { + "language": "RU", + "text": "Дважды щелкните один раз: это центрирует диаграмму и приведет Вас к определенному уровню масштабирования; в левом верхнем углу остается поле, соответствующее названию вкладке диаграммы.", + "updated": 1635958568646 } ], "updated": 1616418234728 @@ -138,7 +162,13 @@ { "language": "DE", "text": "Ein weiterer Doppelklick: bringt Sie weiter in das Diagramm, bis zu einer Zoomstufe, in der das Diagramm perfekt auf den Bildschirm passt und die Layer Manager erscheinen.", - "updated": 1634207914480 + "updated": 1634207914480, + "style": "List" + }, + { + "language": "RU", + "text": "Дважды щелкните еще раз: это поведет Вас дальше по диаграмме к уровню масштабирования, при котором диаграмма идеально соответствует экрану и появятся Layer Managers.", + "updated": 1635958693721 } ], "updated": 1622198926988 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json index 4a1866823..e90b65775 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json @@ -30,7 +30,13 @@ { "language": "DE", "text": "Sie befinden sich also endlich in einem Diagramm. Das erste, was Sie tun möchten, ist, sich zu bewegen und zu lernen, was diese Diagramme für Sie tun können.", - "updated": 1634216714226 + "updated": 1634216714226, + "style": "Definition" + }, + { + "language": "RU", + "text": "Итак, наконец-то, Вы находитесь внутри диаграммы. Первое, что Вам необходимо сделать - это осмотреться и узнать, что эти диаграммы могут сделать для Вас.", + "updated": 1636044340152 } ] }, @@ -60,7 +66,13 @@ { "language": "DE", "text": "Fangen wir damit an! Wie im Designbereich - wenn Sie sich in einer Time Machine befinden - bewegen Sie sich mit Hilfe Ihrer Maus und Ihrer Tastatur. So geht's:", - "updated": 1634216711619 + "updated": 1634216711619, + "style": "Text" + }, + { + "language": "RU", + "text": "В заключении процесса! Как и в пространстве дизайна, когда Вы находитесь внутри машины времени, Вы также можете перемещаться с помощью мыши и клавиатуры. Как это происходит:", + "updated": 1636044534728 } ] }, @@ -89,7 +101,13 @@ { "language": "DE", "text": "Mit der Maus klicken Sie mit der linken Maustaste und ziehen. Mit der Tastatur benutzt du die Pfeiltasten: ← → ↑ ↓", - "updated": 1634216728013 + "updated": 1634216728013, + "style": "Callout" + }, + { + "language": "RU", + "text": "С помощью мыши: щелкните левой кнопкой мыши и перетащите. С помощью клавиатуры: используйте клавишы со стрелками ← → ↑ ↓", + "updated": 1636044657366 } ] }, @@ -118,7 +136,13 @@ { "language": "DE", "text": "Was? Es funktioniert nicht? Bleiben Sie mit einem eingefrorenen Diagramm hängen? Wie im Video im nächsten Schritt? Keine Sorge! Ich weiß, was hier los ist...", - "updated": 1634216736257 + "updated": 1634216736257, + "style": "Note" + }, + { + "language": "RU", + "text": "Что? Это не работает? У Вас еще заморожен график как на видео в следующем шаге? Не беспокойтесь! Я знаю, что происходит...", + "updated": 1636044810653 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json index e1e06c062..9cd8703b5 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json @@ -20,7 +20,13 @@ { "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", - "updated": 1634216805054 + "updated": 1634216805054, + "style": "Definition" + }, + { + "language": "RU", + "text": "Этот шаг воспроизводит видео в полноэкранном режиме.", + "updated": 1636044920201 } ] }, From 88cb3f1e6cfaa436e079385828348514884c50eb Mon Sep 17 00:00:00 2001 From: MarinitaMarina <88245524+MarinitaMarina@users.noreply.github.com> Date: Fri, 5 Nov 2021 11:42:48 +0100 Subject: [PATCH 22/39] Revert "translation into Russian Getting Started Tutorial Step 30-44" This reverts commit e898bd950d63345dd4b8afe00c5c3da9cbf1c932. --- .../forward-testing-session.json | 8 +-- .../Market-Data-Tasks/market-data-tasks.json | 8 +-- .../paper-trading-session.json | 8 +-- .../Docs-Nodes/P/Point/Point/point.json | 9 +-- .../T/Task/Task-Manager/task-manager.json | 8 +-- .../Schemas/Docs-Nodes/T/Task/Task/task.json | 8 +-- .../T/Time/Time-Machine/time-machine.json | 5 -- .../T/Time/Time-Scale/time-scale.json | 8 +-- .../Timeline-Chart/timeline-chart.json | 8 +-- .../V/Viewport/Viewport/viewport.json | 8 +-- .../charting-space-005-layer-managers.json | 9 +-- .../introduction-005-workspaces.json | 8 +-- ...-022-tutorial-step-warp-speed-zooming.json | 14 ++--- ...gos-026-tutorial-step-broke-something.json | 14 ++--- ...gos-027-tutorial-step-more-workspaces.json | 32 ++--------- ...tutorial-step-the-magic-of-data-mines.json | 24 +------- ...orial-step-at-the-core-of-data-mining.json | 32 ++--------- ...s-031-tutorial-step-are-we-up-to-date.json | 32 ++--------- ...ralgos-032-tutorial-step-time-to-stop.json | 25 --------- ...-tutorial-step-careful-with-your-data.json | 56 +++---------------- ...gos-034-tutorial-step-the-bright-side.json | 24 +------- ...os-035-tutorial-step-break-on-through.json | 24 +------- ...torial-step-navigating-the-white-room.json | 24 +------- ...-037-tutorial-step-talkin-time-travel.json | 32 ++--------- ...ralgos-038-tutorial-step-bending-time.json | 32 ++--------- ...ralgos-039-tutorial-step-size-matters.json | 32 ++--------- ...tutorial-step-putting-things-in-order.json | 32 ++--------- ...041-tutorial-step-get-in-the-wormhole.json | 36 ++---------- ...os-042-tutorial-step-the-elegant-way..json | 40 ++----------- ...43-tutorial-step-moving-in-wonderland.json | 32 ++--------- ...tep-welcome-charts-scales-auto-locked.json | 8 +-- 31 files changed, 82 insertions(+), 558 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json b/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json index eeabae87a..fa7af8d92 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "Un forward testing session es un modo de trading mediante el cual la instancia del Trading Bot realiza transacciones en vivo con una fracción definida por el usuario del capital disponible.\n", - "updated": 1624379829550, - "style": "Definition" - }, - { - "language": "RU", - "text": "Сессия прямого тестирования - это торговый режим, в котором экземпляр торгового бота выполняет реальную торговлю с определенной пользователем долей доступного капитала.", - "updated": 1635848931905 + "updated": 1624379829550 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json b/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json index f0c1c1a41..c8558631a 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "El nodo market data task agrupa tareas de minería de datos que operan en un mercado específico.", - "updated": 1624379923791, - "style": "Definition" - }, - { - "language": "RU", - "text": "Узел Задачи рыночных данных группирует задачи интеллектуального анализа данных, работающие на определенном рынке.", - "updated": 1635848972629 + "updated": 1624379923791 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json b/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json index 2134cb936..a13ae69ca 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "Un paper trading session es un modo de trading mediante el cual la instancia del Trading Bot lee una fuente de datos de mercado en vivo, aplica las reglas definidas en el Trading System asociado y genera una simulación de trading.", - "updated": 1624379661697, - "style": "Definition" - }, - { - "language": "RU", - "text": "Административная торговая сессия - это режим торговли, при котором экземпляр торгового бота считывает поток рыночных данных в реальном времени, применяет правила, определенные в соответствующей торговой системе, и генерирует торговую симуляцию.", - "updated": 1635848838918 + "updated": 1624379661697 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json b/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json index 0e0540a27..286b85936 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/P/Point/Point/point.json @@ -1,14 +1,7 @@ { "type": "Point", "definition": { - "text": "A point is a definition of an [x,y] coordinate. The value [x] usually represents a datetime. The value [y] may refer to a price or some other concept.", - "translations": [ - { - "language": "RU", - "text": "Точка - это определение координаты [x,y]. Значение [x] обычно представляет дату и время. Значение [y] может относиться к цене или какой-либо другой концепции.", - "updated": 1635956829594 - } - ] + "text": "A point is a definition of an [x,y] coordinate. The value [x] usually represents a datetime. The value [y] may refer to a price or some other concept." }, "paragraphs": [ { diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json index 6fae1fbe0..14ad6de62 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "Un task manageres un dispositivo que se utiliza para organizar y controlar cualquier cantidad de tareas que, a su vez, controlan las instancias de bot. Utiliza un administrador de tareas para iniciar o detener varias tareas al mismo tiempo.", - "updated": 1624493800354, - "style": "Definition" - }, - { - "language": "RU", - "text": "Диспетчер задач - это устройство, используемое для организации и управления любым количеством задач, которые, в свою очередь, управляют обоими экземплярами. Вы используете диспетчер задач для запуска или остановки нескольких задач одновременно.", - "updated": 1635845912815 + "updated": 1624493800354 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json index 2912cf191..e36f034bf 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "Un task es el dispositivo que se utiliza para controlar las instancias de bots, es decir, para iniciar y detener bots, incluidos sensores, indicadores y trading bots.", - "updated": 1624454879222, - "style": "Definition" - }, - { - "language": "RU", - "text": "Задача - это устройство, используемое для управления обоими экземплярами, т.е. для запуска и остановки ботов, включая датчики, индикаторы и торгового бота.", - "updated": 1635845867630 + "updated": 1624454879222 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json index 53f0d9b1c..8ebb02c09 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json @@ -8,11 +8,6 @@ "text": "Un time machine sincroniza múltiples gráficos de línea de tiempo en la misma línea de tiempo. Gráficos de línea de tiempo dentro de un time machine pueden tener diferentes escalas de tasas o escalas de marco de tiempo, pero su escala de tiempo siempre coincidirá. ", "updated": 1628644798838, "style": "Definition" - }, - { - "language": "RU", - "text": "Машина времени синхронизирует несколько графиков временной шкалы на одной и той же временной шкале. Графики временной шкалы в машине времени могут иметь разные шкалы скорости или шкалы временных рамок, но их шкала времени всегда будет совпадать.", - "updated": 1635952573294 } ], "updated": 1628644911381 diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json index 14548f387..e96b984c2 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "The time scale controla la escala del eje horizontal, es decir, la línea de tiempo de el time machine correspondiente y de todos los gráficos de la línea de tiempo que contiene.", - "updated": 1624407014586, - "style": "Definition" - }, - { - "language": "RU", - "text": "Шкала времени управляет масштабом горизонтальной оси, т.е. временной шкалой соответствующей машины времени и всех графиков временной шкалы в ней.", - "updated": 1635953349591 + "updated": 1624407014586 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json index 0bb37447f..65fadccc6 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "Un timeline chart representa un gráfico dentro de una Time Machine, que puede tener escalas de marco de tiempo y tasa independientes, así como capas particulares.", - "updated": 1624406893262, - "style": "Definition" - }, - { - "language": "RU", - "text": "График временной шкалы представляет собой диаграмму в машине времени, которая может иметь независимые шкалы скорости и временных рамок, а также определенные слои.", - "updated": 1635953255753 + "updated": 1624406893262 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json b/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json index 92e2dc01d..85fb56437 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json @@ -6,13 +6,7 @@ { "language": "ES", "text": "El viewport es una ventana a través de la cual puede mirar hacia el charting space.", - "updated": 1624407113080, - "style": "Definition" - }, - { - "language": "RU", - "text": "Окно просмотра - это окно, через которое Вы можете заглянуть в пространство построения графиков.\n\n", - "updated": 1635952209893 + "updated": 1624407113080 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json index dbb0b59b1..3a8b9d8b3 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json +++ b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json @@ -4,14 +4,7 @@ "type": "Layer Managers", "definition": { "text": "Layer Managers organize layers and link up to the data products to be displayed on the charts.", - "updated": 1610138345819, - "translations": [ - { - "language": "RU", - "text": "Менеджеры слоев организуют слои и связывают их с продуктами данных, которые будут отображаться на диаграммах.", - "updated": 1635958768661 - } - ] + "updated": 1610138345819 }, "paragraphs": [ { diff --git a/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json b/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json index 41ca92855..4e0ed8ab6 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json +++ b/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json @@ -9,13 +9,7 @@ { "language": "ES", "text": "Workspaces son un concepto poderoso. Permiten trabajar en múltiples entornos de forma ordenada.", - "updated": 1629579704727, - "style": "Definition" - }, - { - "language": "RU", - "text": "Рабочие пространства - это мощная концепция. Они позволяют упорядоченно работать с несколькими настройками.", - "updated": 1635948541491 + "updated": 1629579704727 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json index 58edb73b5..cbeaff00f 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-022-tutorial-step-warp-speed-zooming.json @@ -42,8 +42,7 @@ { "language": "RU", "text": "Есть еще один инструмент, который может оказаться полезным для управлением временным простарнством! Встроенная функция масштабирования браузера!", - "updated": 1635609923705, - "style": "Definition" + "updated": 1635609923705 } ] }, @@ -86,8 +85,7 @@ { "language": "RU", "text": " Может, у Вас возникнет желание визуализировать большие участки Design Space , чем позволяет Ваш экран.", - "updated": 1635610025598, - "style": "Text" + "updated": 1635610025598 } ] }, @@ -128,9 +126,8 @@ }, { "language": "RU", - "text": "Нажмите Ctrl и прокрутите колесико мыши в Windows, или нажмите ⌘ и \"+\" или \"-\", работая на Mac.", - "updated": 1635952091521, - "style": "Callout" + "text": "Нажмите Ctrl и прокрутите колесико мыши в Windows или нажмите ⌘ и \"+\" или \"-\" на Mac.", + "updated": 1635610153211 } ] }, @@ -176,8 +173,7 @@ { "language": "RU", "text": "Chrome указывает уровень масштабирования в правом верхнем углу. Когда Вы увеличиваете или уменьшаете масштаб, пространство дизайна центрируется на экране. Используйте карту пространства дизайна, чтобы вернуться туда, где Вы были.", - "updated": 1635610570380, - "style": "Success" + "updated": 1635610570380 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json index 7208737fe..e03c98c3f 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-026-tutorial-step-broke-something.json @@ -36,8 +36,7 @@ { "language": "RU", "text": "Если Вы когда-нибудь что-то нарушили, например, удалили узел или изменили конфигурацию и не знаете, как дальше действовать...", - "updated": 1635627557596, - "style": "Definition" + "updated": 1635627557596 } ] }, @@ -73,8 +72,7 @@ { "language": "RU", "text": "... Вы можете легко начать все сначала с исходного рабочего пространства Getting Started Tutorials Plugin Workspace!", - "updated": 1635628049167, - "style": "Callout" + "updated": 1635628049167 } ], "updated": 1622196973760 @@ -110,8 +108,7 @@ { "language": "RU", "text": "В таком случае просто потяните вкладку с левой стороны, прокрутите, найдите плагин Getting Started Tutorials и нажмите на него! Загрузится исходный Plugin Workspace и учебное пособие появится снова, с самого начала!", - "updated": 1635629001422, - "style": "Text" + "updated": 1635629001422 } ], "updated": 1622634394712 @@ -135,9 +132,8 @@ }, { "language": "RU", - "text": "Plugin Workspaces поставляются вместе с системой. Давайте посмотрим, как Вы можете сделать их своими собственными или создать новые рабочие пространства!", - "updated": 1635844587052, - "style": "Success" + "text": "Plugin Workspaces поставляются вместе с системой. Давайте посмотрим, как вы можете сделать их своими собственными или создать новые рабочие пространства!", + "updated": 1635629610043 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json index 8fc820713..cb9b86faa 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Plugin Workspaces, die mit dem System ausgeliefert werden, haben einen schwarzen Hintergrund in der Registerkarte Workspaces auf der linken Seite.", - "updated": 1634167337552, - "style": "Definition" - }, - { - "language": "RU", - "text": "Plugin Workspaces поставляются вместе с системой и отображаются на черном фоне на вкладке Workspaces - слева.", - "updated": 1635948401452 + "updated": 1634167337552 } ], "updated": 1629803469668 @@ -68,13 +62,7 @@ { "language": "DE", "text": "Workspaces speichern alle Informationen zu den Datenstrukturen, die im Arbeitsbereich enthalten sind.", - "updated": 1634167346842, - "style": "Text" - }, - { - "language": "RU", - "text": "Workspaces сохраняют всю информацию относительно структур данных, включенных в рабочую область.", - "updated": 1635948509600 + "updated": 1634167346842 } ] }, @@ -92,13 +80,7 @@ { "language": "DE", "text": "Erstellen Sie eine Kopie dieses Plugin Workspace um ihn zu Ihrem eigenen zu machen! Drücken Sie dazu: Ctrl + Shift + Key-S", - "updated": 1634167512053, - "style": "Callout" - }, - { - "language": "RU", - "text": "Давайте создадим копию этого Plugin Workspace и сделаем его Вашим собственным! Нажмите следующую комбинацию клавиш: Ctrl + Shift + S", - "updated": 1635948769541 + "updated": 1634167512053 } ] }, @@ -127,13 +109,7 @@ { "language": "DE", "text": "Öffnen Sie nun die Registerkarte Workspaces auf der linken Seite, scrollen Sie ganz nach unten und suchen Sie den einzigen Workspace mit einem lila Hintergrund! Das ist Ihr Arbeitsbereich! Sie brauchen ihn aber nicht anzuklicken!", - "updated": 1634167411161, - "style": "Important" - }, - { - "language": "RU", - "text": "Теперь откройте вкладку Workspaces слева, прокрутите вниз и найдите единственное рабочее пространство с фиолетовым фоном! Это ваше рабочее место! Но не нужно нажимать на него!", - "updated": 1635948844576 + "updated": 1634167411161 } ], "updated": 1629803460646 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json index 1a4ce5b86..ff08a47e0 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Innerhalb jedes Marktes ist die Operation nach Data Mine organisiert. Superalgos wird mit mehreren quelloffenen Data Mines ausgeliefert, die jeweils mehrere Indikatoren enthalten.", - "updated": 1634168232166, - "style": "Definition" - }, - { - "language": "RU", - "text": "На каждом рынке операция огранизована с помощью Data Mine. Superalgos посатвляется с несколькими шахтами данных с открытым исходным кодом, каждая - с множеством индикаторов.\n\n", - "updated": 1635844743358 + "updated": 1634168232166 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Betrachten Sie Data Mines als Plugins, die Entwickler erstellen können, um die Datenanalysekapazität des Systems zu erweitern. Ein Indicator Bot kann Daten verarbeiten, die von anderen Indikatoren erzeugt werden, und so einen Mehrwert und eine tiefere und reichhaltigere Analyse liefern.", - "updated": 1634168218271, - "style": "Text" - }, - { - "language": "RU", - "text": "Думайте о шахтах данных как о плагинах, которые разработчики могут создавать для расширения объема анализа данных системы. Indicator Bot может обрабатывать данные, которые производят другие индикаторы, производя более глубокий и насыщенный анализ.", - "updated": 1635845246472 + "updated": 1634168218271 } ] }, @@ -101,13 +89,7 @@ { "language": "DE", "text": "Wenn Sie ein Grundverständnis von JavaScript haben, können Sie auch Indikatoren erstellen! Wenn Sie eine Data Mine beitragen, verdienen Sie Superalgos SA Tokens!", - "updated": 1634168241958, - "style": "Callout" - }, - { - "language": "RU", - "text": "Если у Вас имеется базовое понимание JavaScript, то Вы тоже можете создать индикаторы! Если Вы внесете свой вклад в Data Mine, то заработаете токены Superalgos (SA)!", - "updated": 1635846329022 + "updated": 1634168241958 } ], "updated": 1622196189467 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json index eca336ba6..e7f38a7b9 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Das Herzstück einer Data-Mining-Operation sind Tasks, die Bots ausführen. Ein Task steuert einen Bot, und ein Task Manager kann mehrere Tasks steuern.", - "updated": 1634168469674, - "style": "Definition" - }, - { - "language": "RU", - "text": "Ядром операции интеллектуального анализа данных являются задачи, над которыми работают боты. Одна Task упавляет одним ботом, а Task Manager может управлять несколькими задачами.\n\n\n", - "updated": 1635845551315 + "updated": 1634168469674 } ] }, @@ -67,13 +61,7 @@ { "language": "DE", "text": "Inzwischen haben Sie sechs verschiedene Geräte kennengelernt, die Sie zur Steuerung der einzelnen Bots in Ihrem Data Mining-Vorgang verwenden können. Auf der höchsten Ebene steuert der Knoten Data Tasks alle Data-Mining-Bots im Netzwerkknoten.", - "updated": 1634168489908, - "style": "Text" - }, - { - "language": "RU", - "text": "К настоящему времени Вы узнали о шести различных устройствах, которые Вы можете использовать для управления каждым ботом в своей операции интеллектуального анализа данных. На самом высоком уровне узел Data Tasks управляет всеми ботами интеллектуального анализа данных в Network Node.", - "updated": 1635845824663 + "updated": 1634168489908 } ] }, @@ -102,13 +90,7 @@ { "language": "DE", "text": "Wir werden in einer Minute über Netzwerkknoten sprechen...", - "updated": 1634168496945, - "style": "Callout" - }, - { - "language": "RU", - "text": "Мы поговорим о сетевых узлах через минуту...", - "updated": 1635845956734 + "updated": 1634168496945 } ] }, @@ -138,13 +120,7 @@ { "language": "DE", "text": "Auf der untersten Ebene steuert ein einzelner Task einen einzelnen Bot. Die Knoten dazwischen sind Organisationsknoten, die für Ordnung sorgen und eine detaillierte Kontrolle über die verschiedenen Bereiche ermöglichen.", - "updated": 1634168505425, - "style": "Text" - }, - { - "language": "RU", - "text": "На самом низком уровне отдельная Task управляет одним ботом. Промежуточные узлы - это организационные узлы, которые помогают поддерживать порядок в работе и позволяют осуществлять детальный контроль над различными разделами.", - "updated": 1635846467212 + "updated": 1634168505425 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json index c5df60319..f1677ea83 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Inzwischen sollten alle Prozesse zu 100 % laufen. Wenn dies der Fall ist, bezeichnen wir die Data-Mining-Operation als \"up to date\".", - "updated": 1634170269450, - "style": "Definition" - }, - { - "language": "RU", - "text": "К настоящему моменту все процессы должны работать на 100%. Когда это происходит, мы называем операцию интеллектуального анализа данных \"актуальной\".\n", - "updated": 1635847032996 + "updated": 1634170269450 } ], "updated": 1616415623576 @@ -67,13 +61,7 @@ { "language": "DE", "text": "Wenn alle Prozesse auf dem neuesten Stand sind, laufen die Bots weiter und verarbeiten Informationen in Echtzeit, während sie an der Börse produziert werden. Das heißt, die Data-Mining-Operation stoppt nur, wenn Sie sie stoppen!", - "updated": 1634170281567, - "style": "Text" - }, - { - "language": "RU", - "text": "Когда все процессы обновлены, боты продолжают работать, обрабатывая информацию в режиме реального времени по мере ее получения на бирже. То есть операция интеллектуального анализа данных не остановится, пока Вы ее не остановите!", - "updated": 1635847768705 + "updated": 1634170281567 } ] }, @@ -102,13 +90,7 @@ { "language": "DE", "text": "Schauen Sie sich um und prüfen Sie, ob alle Prozesse zu 100% laufen.", - "updated": 1634170288448, - "style": "Callout" - }, - { - "language": "RU", - "text": "Оглянитесь вокруг и посмотрите, все ли процессы работают на 100%.", - "updated": 1635847797250 + "updated": 1634170288448 } ] }, @@ -137,13 +119,7 @@ { "language": "DE", "text": "Um eine Live Trading Session durchzuführen, benötigen Sie eine ständige Zufuhr von Informationen von der Börse, die in Echtzeit verarbeitet werden, damit der Trading Bot die Regeln Ihres Trading System anwenden kann, um Live-Handelsentscheidungen zu treffen.", - "updated": 1634170296952, - "style": "Text" - }, - { - "language": "RU", - "text": "To run a Live Trading Session, you need a constant feed of information from the exchange processed in realtime so that the Trading Bot may apply the rules of your Trading System to make live trading decisions......", - "updated": 1635847720469 + "updated": 1634170296952 } ], "updated": 1616415667438 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json index 17318dff1..2af510240 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json @@ -32,11 +32,6 @@ "text": "Da wir keine Live Trading Session durchführen, macht es grade keinen Sinn, das Data Mining zu diesem Zeitpunkt laufen zu lassen.", "updated": 1634170784986, "style": "Definition" - }, - { - "language": "RU", - "text": "Мы пока не собирались проводить Live Trading Session, поэтому на данный момент нет мысла продолжать наш интеллектуальный анализ данных.", - "updated": 1635848067290 } ] }, @@ -69,11 +64,6 @@ "text": "Es gibt zwei Anwendungsfälle für die Data Tasks:", "updated": 1634170835236, "style": "Text" - }, - { - "language": "RU", - "text": "Для выполнения Data Tasks существует два основных варианта использования:", - "updated": 1635848266801 } ] }, @@ -105,11 +95,6 @@ "text": "Zur Verarbeitung historischer Daten: Sie möchten für einen bestimmten Zeitraum einen bestimmten Market verarbeiten, um eine Backtesting Session durchzuführen oder Indikatoren testen.", "updated": 1634208005120, "style": "List" - }, - { - "language": "RU", - "text": "To process historic data: Вам может понадобится обработка диапазон дат и времени для любого данного Market, чтобы запустить Backtesting Session или обработать новые индикаторы.", - "updated": 1635848372006 } ] }, @@ -141,11 +126,6 @@ "text": "Eine Live-Sitzung durchführen: Die verschiedenen Arten von Live-Sitzungen, wie Paper Trading Session, Forward Testing Session und Live Trading Session, benötigen alle einen Live-Markt-Feed.", "updated": 1634208020007, "style": "List" - }, - { - "language": "RU", - "text": "To run a live session: сессии в реальном времени бывают разных типов: Paper Trading Session, Forward Testing Session и Live Trading Session - это все, что необходимо для потока рынка в реальном времени. ", - "updated": 1635848628305 } ] }, @@ -176,11 +156,6 @@ "text": "Wenn alle Prozesse auf dem neuesten Stand sind, wählen Sie \"Stop All Tasks\" im Knoten Market Data Tasks. Beachten Sie, dass die Tasks auch von einem anderen Knoten aus gestoppt werden können als von dem aus, mit dem sie gestartet wurden!", "updated": 1634172843262, "style": "Callout" - }, - { - "language": "RU", - "text": "Когда все процессы будут обновлены, выберите \"Stop All Tasks\" в узле Market Data Tasks. Обратите внимание, что мы можем остановить задачи с другого узла, чем тот, который мы использовали для их запуска!", - "updated": 1635848790357 } ], "updated": 1622197433719 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json index 0a01014a8..a95f88feb 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Es kann Minuten dauern, bis alle Aufgaben zum getoppt sind. Sie sollten das System niemals schließen, bevor alle Aufgaben beendet sind.", - "updated": 1634173343328, - "style": "Definition" - }, - { - "language": "RU", - "text": "Для остановки всех задач может потребоваться до 1 минуты. Вы никогда не должны закрывать систему до остановки всех задач.", - "updated": 1635949169179 + "updated": 1634173343328 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Überprüfen Sie die Kommandozeile Ihres Systems, um zu sehen, ob die Aufgaben gestoppt wurden!", - "updated": 1634173091261, - "style": "Callout" - }, - { - "language": "RU", - "text": "Проверьте консольное приложение, чтобы увидеть, как прекращается процесс!", - "updated": 1635949207414 + "updated": 1634173091261 } ], "updated": 1616416021973 @@ -96,13 +84,7 @@ { "language": "DE", "text": "Der richtige Weg, Superalgos zu schließen, ist:", - "updated": 1634173103809, - "style": "Text" - }, - { - "language": "RU", - "text": "Правильный способ, чтобы закрыть Superalgos:", - "updated": 1635949241926 + "updated": 1634173103809 } ] }, @@ -126,13 +108,7 @@ { "language": "DE", "text": "Alle Aufgaben beenden, ein paar Minuten warten.", - "updated": 1634173410210, - "style": "List" - }, - { - "language": "RU", - "text": "Остановите все задачи и подождите пару минут.", - "updated": 1635949279017 + "updated": 1634173410210 } ] }, @@ -156,13 +132,7 @@ { "language": "DE", "text": "Wenn alle Aufgaben beendet sind, können Sie die Konsolenanwendung schließen oder den Prozess mit Ctrl + Key-C beenden.", - "updated": 1634173253123, - "style": "List" - }, - { - "language": "RU", - "text": "Когда все задачи остановятся, Вы можете закрыть консольное приложение или остановить процесс с помощью клавиш Ctrl + C .", - "updated": 1635950790788 + "updated": 1634173253123 } ] }, @@ -185,13 +155,7 @@ { "language": "DE", "text": "Sie können den Browser jederzeit schließen und die Aufgaben im Hintergrund weiterlaufen lassen.", - "updated": 1634173156784, - "style": "List" - }, - { - "language": "RU", - "text": "Вы можете закрыть браузер в любой момент и остановить обработку задач в фоновом режиме.", - "updated": 1635949454297 + "updated": 1634173156784 } ] }, @@ -215,13 +179,7 @@ { "language": "DE", "text": "Wenn Sie den Client schließen, bevor die Tasks beendet sind, können Ihre Daten beschädigt werden!", - "updated": 1634173172953, - "style": "Warning" - }, - { - "language": "RU", - "text": "Закрытие Client до остановки задач может привести к поверждению ваших данных!", - "updated": 1635949518016 + "updated": 1634173172953 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json index 947513d21..038b221f4 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Bislang waren Sie auf die dunkle Seite von Superalgos beschränkt. Machen Sie sich bereit, die helle Seite kennenzulernen: den Charting Space.", - "updated": 1634174936126, - "style": "Definition" - }, - { - "language": "RU", - "text": "До сих пор Вы были ограничены темной стороной Superalgos. Приготовьтесь к тому, что Вас ждет яркая сторона - Charting Space.", - "updated": 1635949846573 + "updated": 1634174936126 } ] }, @@ -67,13 +61,7 @@ { "language": "DE", "text": "Der Charting-Bereich befindet sich über dem Design-Bereich, getrennt durch einen türkisfarbenen Schieberegler. Wie Sie es von Superalgos gewohnt sind, ist der Charting Space konfigurierbar und hochflexibel. Alles, was dort geschieht, wird in der Charting Space Hierarchie definiert.", - "updated": 1634174969494, - "style": "Text" - }, - { - "language": "RU", - "text": "Пространство для построения графиков расположено поверх пространства дизайна, разделенного бирюзовым ползунком. Как Вы и ожидаете от Superalgos, это пространство является настраиваемым и очень гибким. Все что там происходит, определено в иерархии Charting Space.", - "updated": 1635950872342 + "updated": 1634174969494 } ] }, @@ -102,13 +90,7 @@ { "language": "DE", "text": "Der Charting Space ist dafür bekannt, dass er die Leute umhaut. Bitte fahren Sie mit diesem Tutorial nicht fort, wenn Sie unter dem Einfluss von psychoaktiven Substanzen stehen.", - "updated": 1634174978126, - "style": "Warning" - }, - { - "language": "RU", - "text": "Пространство построения графиков известно тем, что будоражит умы людей. Пожалуйста, воздержитесь от продолжения изучения этого материала, если в настоящий момент Вы находитесь под воздействием психоактивных веществ.", - "updated": 1635950393713 + "updated": 1634174978126 } ], "updated": 1616416552336 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json index e99862ed8..c3cf9f025 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Ich bringe Sie in kürzester Zeit dazu, sich im Charting Space zu bewegen und zu blättern... Kümmern wir uns zuerst um den Schieberegler!", - "updated": 1634205702474, - "style": "Definition" - }, - { - "language": "RU", - "text": "Я быстро введу Вас в курс дела с перемещением и просмотром простарнства для построения графиков... Давайте сначала разберемся с ползунком!", - "updated": 1635950525926 + "updated": 1634205702474 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Klicken Sie ihn an und ziehen Sie ihn nach unten, um den Design Space zu schließen und den Charting Space zu öffnen. Um den umgekehrten Effekt zu erzielen, machen Sie das Gegenteil. Drücken Sie Ctrl + Shift + ↓. um dies mit der Tastatur zu tun. Versuchen Sie auch ↑ ← →", - "updated": 1634205728640, - "style": "Callout" - }, - { - "language": "RU", - "text": "Щелкните по нему и перетащите вниз, чтобы закрыть область проектирования и открыть область построения графиков. Вернитесь в исходное положение. Чтобы сделать это с помощью клавиатуры, нажмите Ctrl + Shift + ↓. Попробуйте также ↑ ← → !", - "updated": 1635950755868 + "updated": 1634205728640 } ] }, @@ -101,13 +89,7 @@ { "language": "DE", "text": "Es ist eine gute Idee, einen der beiden Bereiche vollständig zu schließen, um Ressourcen zu sparen, es sei denn, Sie brauchen beide Bereiche nur teilweise geöffnet zu haben.", - "updated": 1634205372068, - "style": "Success" - }, - { - "language": "RU", - "text": "До тех пор пока у Вас не появится необходимость частичного открытия обоих пространств, рекомендуется полностью закрыть каждое из них, чтобы сохранить компьютерные ресурсы на Вашем устройстве.", - "updated": 1635951214809 + "updated": 1634205372068 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json index 555bd395f..9eadd92c9 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Genau wie der Design Space bietet auch der Charting Space einen riesigen Bereich, in dem Sie Diagramme einrichten können... so viele, wie Ihre Hardware verkraften kann!", - "updated": 1634205591674, - "style": "Definition" - }, - { - "language": "RU", - "text": "Как и пространство дизайна, пространство постороения графиков имеет огромную область, где Вы можете создавать диаграммы... столько, сколько сможет выдержать Ваше устройство!", - "updated": 1635951454512 + "updated": 1634205591674 } ] }, @@ -67,13 +61,7 @@ { "language": "DE", "text": "Um die Dinge für Neulinge einfach zu halten, gibt es in diesem Workspace des Getting Started Tutorials nur zwei Charts. Fortgeschrittene Benutzer überwachen Charts von mehreren Börsen und Märkten.", - "updated": 1634205603337, - "style": "Text" - }, - { - "language": "RU", - "text": "Чтобы новичкам было проще, в Getting Started Tutorials workspace имеется только две диаграммы. Опытные пользователи могут отслеживать графики с множествами бирж и рынков.", - "updated": 1635952143282 + "updated": 1634205603337 } ] }, @@ -102,13 +90,7 @@ { "language": "DE", "text": "Um sich im Viewport zu bewegen, klicken Sie auf einen leeren Bereich und ziehen Sie mit der Maus. Die Tastaturkombination ist Shift plus die Pfeiltasten ↑ ← → ↓", - "updated": 1634205660486, - "style": "Callout" - }, - { - "language": "RU", - "text": "Чтобы перемещаться по Viewport, удерживайте левую кнопку мыши и перетащите пустую область. При использовании клавиатуры, воспользуйтесь комбинацией клавиш Shift + ↑ ← → ↓", - "updated": 1635952028877 + "updated": 1634205660486 } ], "updated": 1622198195729 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json index caecea36e..5e36775f5 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Ich habe bereits erwähnt, dass es in diesem Workspace zwei Diagramme gibt. In Superalgos nennen wir jedes dieser Diagramme eine Time Machine.", - "updated": 1634205940397, - "style": "Definition" - }, - { - "language": "RU", - "text": "Я упоминал ранее, что в этом рабочем пространстве имеется две диаграммы. В Superalgos мы называем каждую из них - Time Machine.", - "updated": 1635952714402 + "updated": 1634205940397 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Eine Time Machine kann einen oder mehere Timeline Charts enthalten. Wir nennen sie Time Machines, weil alle Timeline Charts innerhalb einer Time Machine zeitlich synchronisiert sind. Diese Eigenschaft der Time Machines ermöglicht es, verschiedene Datenebenen auf derselben Time Scale zu überlagern.", - "updated": 1634206096721, - "style": "Text" - }, - { - "language": "RU", - "text": "Машина времени может содержать одну или несколько Timeline Chart. Мы называем их машиной времени, потому что здесь все графики временной шкалы синхронизированы во времени. Эта особенность машин времени позволяет накладывать различные слои данных, используя один и тот же Time Scale.", - "updated": 1635953116457 + "updated": 1634206096721 } ] }, @@ -101,13 +89,7 @@ { "language": "DE", "text": "Fahren Sie mit dem Mauszeiger über die Time Machines!", - "updated": 1634206006623, - "style": "Callout" - }, - { - "language": "RU", - "text": "Наведите указатель мыши на машины времени!", - "updated": 1635953388808 + "updated": 1634206006623 } ] }, @@ -137,13 +119,7 @@ { "language": "DE", "text": "Beachten Sie die Beschriftung auf der linken Seite, aus der hervorgeht, mit welchen Börsen und Märkten die Daten verbunden sind. Eine einzige Time Machine kann Daten von mehreren Märkten und mehreren Börsen enthalten!", - "updated": 1634206050433, - "style": "Text" - }, - { - "language": "RU", - "text": "Обратите внимание на появившуюся слева метку, которая указывает на то, с какими биржами и рынками связаны данные. Одна машина времени может содержать данные с множества рынков и бирж!", - "updated": 1635953517021 + "updated": 1634206050433 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json index d494382fd..348346ca9 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Ok... vielleicht ist es nicht wirklich wie Raumkrümmung, aber habt Nachsicht mit mir... Du wirst begeistert sein, wie du Zeitmaschinen in jedes beliebige Format bringen kannst.", - "updated": 1634206247154, - "style": "Definition" - }, - { - "language": "RU", - "text": "Хорошо... Может быть, на самом деле это и не похоже на сгибание... но потерпите.. Вам понравится, как Вы сможете сформировать машины времени в любом желаемом формате.", - "updated": 1635955928460 + "updated": 1634206247154 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Bewegen Sie Ihren Mauszeiger über einen der Ränder des türkisfarbenen Rahmens, der die Time Machine definiert, und sehen Sie, was passiert. Sehen Sie, wie der Rand gelb hervorgehoben wird?", - "updated": 1634206251264, - "style": "Text" - }, - { - "language": "RU", - "text": "Наведите указатель мыши на любой из краев бирюзовой рамки, определяющий машину времени, и посмотрите, что произойдет. Вы видите, как край рамки выделился желтым цветом?", - "updated": 1635953906664 + "updated": 1634206251264 } ] }, @@ -101,13 +89,7 @@ { "language": "DE", "text": "Sehr gut! Klicken Sie nun mit der linken Maustaste auf den Rahmen und ziehen Sie!", - "updated": 1634206263662, - "style": "Callout" - }, - { - "language": "RU", - "text": "Отлично! Теперь щелкните левой кнопкой мыши рамку и потяните!", - "updated": 1635954062456 + "updated": 1634206263662 } ] }, @@ -136,13 +118,7 @@ { "language": "DE", "text": "Auf diese Weise können Sie die Time Machines nach Ihren Wünschen gestalten.", - "updated": 1634206284213, - "style": "Note" - }, - { - "language": "RU", - "text": "Вот как Вы можете формировать машины времени по своему нраву.", - "updated": 1635954106250 + "updated": 1634206284213 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json index 354cbfd5b..358a6a04d 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Zusammenfassung: Wie wäre es, die Time Machine genau an das Seitenverhältnis Ihres Bildschirms anzupassen?", - "updated": 1634206350448, - "style": "Definition" - }, - { - "language": "RU", - "text": "Как насчет того, чтобы настроить по форме машину времени в соответствии с точным соотношением сторон Вашего экрана?", - "updated": 1635954194574 + "updated": 1634206350448 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Die Anpassung des Seitenverhältnisses Ihrer Zeitmaschinen an das Seitenverhältnis Ihres Bildschirms ist entscheidend dafür, dass die Diagramme beim Heranzoomen genau auf Ihren Bildschirm passen!", - "updated": 1634206368643, - "style": "Text" - }, - { - "language": "RU", - "text": "Соответствие соотношения сторон Ваших машин времени к соотношению сторон Вашего экрана имеет решающее значение, т.к. необходимо, чтобы диаграммы плотно прилегали к Вашему экрану при увеличении масштаба!", - "updated": 1635954329649 + "updated": 1634206368643 } ], "updated": 1622198491208 @@ -103,13 +91,7 @@ { "language": "DE", "text": "Richten Sie Ihre Maus auf eine der Time Machines und drücken Sie Ctrl + Shift + Alt + Key-A. Machen Sie dasselbe mit der anderen Maschine!", - "updated": 1634206401027, - "style": "Callout" - }, - { - "language": "RU", - "text": "Наведите курсор мыши на одну из машин времени и нажмите Ctrl + Shift + Alt + A. Сделайте то же самое с другой машиной времени!", - "updated": 1635954414423 + "updated": 1634206401027 } ] }, @@ -139,13 +121,7 @@ { "language": "DE", "text": "Lassen Sie die beiden Time Machines von nun an auf das Seitenverhältnis Ihres Bildschirms abgestimmt!", - "updated": 1634206411265, - "style": "Success" - }, - { - "language": "RU", - "text": "С этого момента оставьте две машины времени, соответствующие соотношению сторон Вашего эерана.", - "updated": 1635954725880 + "updated": 1634206411265 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json index 01a6ae465..4ab71e3d0 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Bevor wir in die Tabellen eintauchen, noch eine Sache. Sie müssen wissen, wie Sie das Haus in Ordnung bringen können!", - "updated": 1634206589741, - "style": "Definition" - }, - { - "language": "RU", - "text": "Еще одна вещь, прежде чем мы погрузимся в графики: Вам необходимо знать, как привести рабочее простарнство в порядок.", - "updated": 1635954932905 + "updated": 1634206589741 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Es wird die Zeit kommen, in der Sie vielleicht mit Dutzenden von Diagrammen arbeiten werden. Sie wissen bereits, wie Sie deren Format ändern können. Jetzt müssen Sie lernen, wie Sie die Diagramme verschieben können, damit Sie die gewünschten Arrangements erstellen können. Das ist ganz einfach:", - "updated": 1634206671224, - "style": "Text" - }, - { - "language": "RU", - "text": "Придет время, когда Вы, возможно, будете работать с десятками графиков. Вы уже знаете, как изменить их формат. Теперь Вам необходимо научиться перемещать их так, чтобы Вы могли создавать любые необходимые Вам расположения. Это довольно просто:", - "updated": 1635955068033 + "updated": 1634206671224 } ], "updated": 1616416902513 @@ -103,13 +91,7 @@ { "language": "DE", "text": "Drücken Sie die Shift, klicken Sie mit der linken Maustaste, und ziehen Sie!", - "updated": 1634206723517, - "style": "Callout" - }, - { - "language": "RU", - "text": "Удерживайте Shift, щелкните левой кнопкой мыши и перетащите!", - "updated": 1635955363944 + "updated": 1634206723517 } ] }, @@ -138,13 +120,7 @@ { "language": "DE", "text": "Ich glaube, wir haben jetzt alles über die Verwaltung des Charting Space gesagt. Jetzt ist es Zeit, in die Diagramme einzutauchen!", - "updated": 1634206736658, - "style": "Success" - }, - { - "language": "RU", - "text": "Я полагаю, что мы рассмотрели все о том, как управлять пространством для построения графиков. Пришло время погрузиться в диаграммы!", - "updated": 1635955483010 + "updated": 1634206736658 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json index 50278a8bb..1af9a5537 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json @@ -30,14 +30,7 @@ { "language": "DE", "text": " Es ist an der Zeit, in eine Time Machine einzutauchen und zu sehen, was passiert! Sind Sie bereit für ein umfassendes, immersives Erlebnis?", - "updated": 1634207146163, - "style": "Definition" - }, - { - "language": "RU", - "text": "Пришло время погрузиться в Time Machine и посмотреть, что произойдет. Готовы ли Вы к полноценному погружению?", - "updated": 1636044252350, - "style": "Definition" + "updated": 1634207146163 } ] }, @@ -67,14 +60,7 @@ { "language": "DE", "text": "Der Charting Space ist so etwas wie das Google Maps der Marktcharts. Wie Sie bereits wissen, können Sie mit der linken Maustaste klicken und ziehen, um sich in der im Charting Space zu bewegen... aber wie zoomen Sie hinein, um die Details zu sehen?", - "updated": 1634207179395, - "style": "Text" - }, - { - "language": "RU", - "text": "Пространство построения графиков похоже на карты Google Maps рыночных графиков. Как Вы уже знаете, щелкните левой кнопкой мыши и перетащите, чтобы перемещаться по ландшафту... Но как Вы увеличиваете масштаб, чтобы увидеть детали?", - "updated": 1635955895629, - "style": "Text" + "updated": 1634207179395 } ] }, @@ -103,14 +89,7 @@ { "language": "DE", "text": "Mit dem Rad der Maus! Probieren Sie es aus!", - "updated": 1634207215883, - "style": "Callout" - }, - { - "language": "RU", - "text": "С помощью колесика мыши! Пробуйте!", - "updated": 1635955956161, - "style": "Callout" + "updated": 1634207215883 } ] }, @@ -140,14 +119,7 @@ { "language": "DE", "text": "Ganz genau! Genau wie in Google Maps! Zeigen Sie mit der Maus auf den Bereich, der Sie interessiert, und drehen Sie dann das Mausrad nach vorne, um hineinzuzoomen, und nach hinten, um herauszuzoomen! ", - "updated": 1634207338450, - "style": "Text" - }, - { - "language": "RU", - "text": "Точно! Прямо как на картах Google! Наведите курсор мыши на интересующую Вас область, затем прокрутите колесико мыши вперед, чтобы увеличить масштаб и назад, чтобы уменьшить!", - "updated": 1635956162361, - "style": "Text" + "updated": 1634207338450 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json index bcfca53bb..76e7fa684 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Ich weiß! Wenn Sie auf eine beliebige Stelle zoomen, ist es unwahrscheinlich, dass Sie die Karte im rechten Winkel zu Ihrem Bildschirm positionieren, oder? Keine Sorge... versuchen Sie diesen Trick!", - "updated": 1634207830054, - "style": "Definition" - }, - { - "language": "RU", - "text": "Я знаю! Увеличение масштаба в случайном месте вряд ли приведет к тому, что диаграмма окажется в квадрате с Вашим экраном, верно? Не беспокойтесь... попробуйте это трюк!", - "updated": 1635956366877 + "updated": 1634207830054 } ], "updated": 1616417516192 @@ -62,13 +56,7 @@ { "language": "DE", "text": "Stellen Sie das Seitenverhältnis ein: Zeigen Sie mit der Maus auf den Chart der Backtesting Session (den oberen) und drücken Sie Ctrl + Shift + Alt + Key-A", - "updated": 1634207859976, - "style": "List" - }, - { - "language": "RU", - "text": "Отрегулируйте соотношение сторон: наведите Point курсором мыши на график Backtesting Session (тот, что сверху) и нажмите Ctrl + Shift + Alt + A.", - "updated": 1635956770216 + "updated": 1634207859976 } ] }, @@ -91,13 +79,7 @@ { "language": "DE", "text": "Verkleinern: Benutzen Sie das Mausrad, um zur äußersten Verkleinerungsposition zu gelangen; nur von dieser Position aus funktioniert der nächste Befehl!", - "updated": 1634207868032, - "style": "List" - }, - { - "language": "RU", - "text": "Уменьшение масштаба: используйте колесико мыши, чтобы перейти в крайнее положение уменьшения масштаба; только из этого положения будет работать следующая команда!", - "updated": 1635958418820 + "updated": 1634207868032 } ] }, @@ -126,13 +108,7 @@ { "language": "DE", "text": "Doppelklicken Sie einmal: Dies zentriert das Diagramm und bringt Sie zu einer bestimmten Zoomstufe; es wird ein Rand gelassen, damit der Name und die Registerkarte des Diagramms in die obere linke Ecke passen.", - "updated": 1634207894965, - "style": "List" - }, - { - "language": "RU", - "text": "Дважды щелкните один раз: это центрирует диаграмму и приведет Вас к определенному уровню масштабирования; в левом верхнем углу остается поле, соответствующее названию вкладке диаграммы.", - "updated": 1635958568646 + "updated": 1634207894965 } ], "updated": 1616418234728 @@ -162,13 +138,7 @@ { "language": "DE", "text": "Ein weiterer Doppelklick: bringt Sie weiter in das Diagramm, bis zu einer Zoomstufe, in der das Diagramm perfekt auf den Bildschirm passt und die Layer Manager erscheinen.", - "updated": 1634207914480, - "style": "List" - }, - { - "language": "RU", - "text": "Дважды щелкните еще раз: это поведет Вас дальше по диаграмме к уровню масштабирования, при котором диаграмма идеально соответствует экрану и появятся Layer Managers.", - "updated": 1635958693721 + "updated": 1634207914480 } ], "updated": 1622198926988 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json index e90b65775..4a1866823 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json @@ -30,13 +30,7 @@ { "language": "DE", "text": "Sie befinden sich also endlich in einem Diagramm. Das erste, was Sie tun möchten, ist, sich zu bewegen und zu lernen, was diese Diagramme für Sie tun können.", - "updated": 1634216714226, - "style": "Definition" - }, - { - "language": "RU", - "text": "Итак, наконец-то, Вы находитесь внутри диаграммы. Первое, что Вам необходимо сделать - это осмотреться и узнать, что эти диаграммы могут сделать для Вас.", - "updated": 1636044340152 + "updated": 1634216714226 } ] }, @@ -66,13 +60,7 @@ { "language": "DE", "text": "Fangen wir damit an! Wie im Designbereich - wenn Sie sich in einer Time Machine befinden - bewegen Sie sich mit Hilfe Ihrer Maus und Ihrer Tastatur. So geht's:", - "updated": 1634216711619, - "style": "Text" - }, - { - "language": "RU", - "text": "В заключении процесса! Как и в пространстве дизайна, когда Вы находитесь внутри машины времени, Вы также можете перемещаться с помощью мыши и клавиатуры. Как это происходит:", - "updated": 1636044534728 + "updated": 1634216711619 } ] }, @@ -101,13 +89,7 @@ { "language": "DE", "text": "Mit der Maus klicken Sie mit der linken Maustaste und ziehen. Mit der Tastatur benutzt du die Pfeiltasten: ← → ↑ ↓", - "updated": 1634216728013, - "style": "Callout" - }, - { - "language": "RU", - "text": "С помощью мыши: щелкните левой кнопкой мыши и перетащите. С помощью клавиатуры: используйте клавишы со стрелками ← → ↑ ↓", - "updated": 1636044657366 + "updated": 1634216728013 } ] }, @@ -136,13 +118,7 @@ { "language": "DE", "text": "Was? Es funktioniert nicht? Bleiben Sie mit einem eingefrorenen Diagramm hängen? Wie im Video im nächsten Schritt? Keine Sorge! Ich weiß, was hier los ist...", - "updated": 1634216736257, - "style": "Note" - }, - { - "language": "RU", - "text": "Что? Это не работает? У Вас еще заморожен график как на видео в следующем шаге? Не беспокойтесь! Я знаю, что происходит...", - "updated": 1636044810653 + "updated": 1634216736257 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json index 9cd8703b5..e1e06c062 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-044-tutorial-step-welcome-charts-scales-auto-locked.json @@ -20,13 +20,7 @@ { "language": "DE", "text": "In diesem Schritt wird ein Video im Vollbildmodus abgespielt.", - "updated": 1634216805054, - "style": "Definition" - }, - { - "language": "RU", - "text": "Этот шаг воспроизводит видео в полноэкранном режиме.", - "updated": 1636044920201 + "updated": 1634216805054 } ] }, From 6d31e9b7d7533ba60904f37b05018b9c00c3a2bb Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 13:47:24 +0300 Subject: [PATCH 23/39] This is my contribution to Superalgos --- ...ial-step-visual-scripting-on-steroids.json | 20 +++++++++++++++++++ ...lgos-061-tutorial-step-plotters-magic.json | 15 ++++++++++++++ ...62-tutorial-step-lets-do-some-testing.json | 20 +++++++++++++++++++ ...-063-tutorial-step-aim-high-trade-big.json | 20 +++++++++++++++++++ 4 files changed, 75 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-060-tutorial-step-visual-scripting-on-steroids.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-060-tutorial-step-visual-scripting-on-steroids.json index 04e66790b..640c37467 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-060-tutorial-step-visual-scripting-on-steroids.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-060-tutorial-step-visual-scripting-on-steroids.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Apropos Blockbildung: Wir befinden uns jetzt in der Masters Data Mine. Zu Ihrer Linken sehen Sie die Definition eines der Bots, die Sie vor einigen Minuten zum Abbau geschickt haben.", "updated": 1634218419044 + }, + { + "language": "TR", + "text": "Blok oluşturma hakkında konuşurken, artık Masters Data Mine'ın sınırlarındayız. Solunuzda, dakikalar önce madenciliğe gönderdiğiniz botlardan birini görüyorsunuz.", + "updated": 1636105640974 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Ähnlich wie bei den Lego-ähnlichen Definitionen des Charting Space werden auch die Bots in einer visuellen Umgebung definiert.", "updated": 1634218423345 + }, + { + "language": "TR", + "text": "Grafik alanının ( Charting Space )'in Lego benzeri olduğu gibi, botlarda görsel bir ortamda tanımlanmıştır.", + "updated": 1636105839670 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Alles, was die Entwickler programmieren müssen, ist die eigentliche Data Building Procedure.", "updated": 1634218433837 + }, + { + "language": "TR", + "text": "Veri oluşturma prosedürleri ( Data Building Procedure ) geliştiriciler tarafından tanımlanmıştır.", + "updated": 1636106164354 } ] }, @@ -95,6 +110,11 @@ "language": "DE", "text": "Alles andere wird in einer visuellen Umgebung definiert: Prozesse mit ihren Abhängigkeiten, Ausgaben usw. und Produkte mit ihren Datensatz- und Datasetdefinitionen usw.", "updated": 1634218442797 + }, + { + "language": "TR", + "text": "Diğer her şey görsel bir ortamda tanımlanır: bağımlılıklar, çıktılar, süreçler, kayıt, veri seti tanımları, ürünler vb.", + "updated": 1636106291422 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-061-tutorial-step-plotters-magic.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-061-tutorial-step-plotters-magic.json index baf85ff53..83c10a523 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-061-tutorial-step-plotters-magic.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-061-tutorial-step-plotters-magic.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Und so werden Plotter gebaut! Plotter erstellen grafische Darstellungen von Daten... von Kerzen bis hin zu allem anderen!", "updated": 1634218493534 + }, + { + "language": "TR", + "text": "Ve Plotter'lar bu şekilde inşa edilir! Plotter'lar, mumlardan diğer şeylere kadar verilerin grafiksel temsillerini oluşturur!", + "updated": 1636106406315 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Wiederum visuelles Skripting in seiner besten Form! Plotter verwenden stilisierte Polygone aus Koordinatenpunkten, um Linien und Formen zu zeichnen, die Daten darstellen. Jede Ebene, die in den Diagrammen zur Verfügung steht, wird mit einer Reihe von Definitionen erstellt, so wie Sie sie gerade sehen. Der besondere Fall des Bot Resistenzen und Unterstützungen ist ziemlich komplex, zeigt aber die Leistungsfähigkeit des Tools!", "updated": 1634218497006 + }, + { + "language": "TR", + "text": "Bunu yapmanın en iyi yolu görsel komut dosyasıdır! Plotter'lar, verileri temsil eden çizgileri ve şekilleri işaretlemek için koordinat noktalarından yapılmış stilize çokgenler kullanır. Grafiklerde kullanıma sunulan her katman, şu anda baktığınız türden bir dizi tanımla oluşturulur. Dirençler ve Destekler botunun özel durumu oldukça karmaşıktır, ancak aracın gücünü sergilemektedir.!", + "updated": 1636106574620 } ] }, @@ -73,6 +83,11 @@ "language": "DE", "text": "Suchen Sie das Polygon der Widerstandszone 5 (links), erweitern Sie es und krabbeln Sie die Äste hinauf, um zu sehen, wie diese Schönheit entstanden ist!", "updated": 1634218503528 + }, + { + "language": "TR", + "text": "Direnç Bölgesi 5 Poligonunu (Resistances Zone) (solda) bulun, genişletin ve bu güzelliğin nasıl inşa edildiğine bir göz atın.", + "updated": 1636106823729 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-062-tutorial-step-lets-do-some-testing.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-062-tutorial-step-lets-do-some-testing.json index 7d8046d64..3346d823f 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-062-tutorial-step-lets-do-some-testing.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-062-tutorial-step-lets-do-some-testing.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Wir sind zurück in der Netzwerkhierarchie, um Ihnen eine der wichtigsten Ressourcen für Strategietests zu zeigen, die in den Trading Bot integriert sind.", "updated": 1634218612347 + }, + { + "language": "TR", + "text": "Şimdi Ticaret Botu'nda ( Trading Bot ) yerleşik olarak bulunan temel strateji test kaynaklarından birini göstermek için Ağ hiyerarşisine geri dönelim.", + "updated": 1636106918357 } ] }, @@ -50,6 +55,11 @@ "language": "DE", "text": "Doch bevor Sie Ihre erste Backtesting Session starten, wollen wir uns erst einmal einen Überblick verschaffen, wie der Knoten Testing Trading Tasks aufgebaut ist.", "updated": 1634218620382 + }, + { + "language": "TR", + "text": "Ancak ilk Geri Test Oturumunuzu ( Backtesting Session ) çalıştırmadan önce, Ticaret Görevlerini Test Etme düğümünün ( Testing Trading Tasks) nasıl kurulduğunu kavramak için hızlı bir keşif görevine başlayalım.", + "updated": 1636106975655 } ] }, @@ -74,6 +84,11 @@ "language": "DE", "text": "Erweitern Sie den Testing Trading Tasks und sehen Sie sich die Struktur der Nachfolgeknoten an... Kommt Ihnen das bekannt vor?", "updated": 1634218627346 + }, + { + "language": "TR", + "text": "Ticaret Görevlerini Test Etme düğümünü ( Testing Trading Tasks ) genişletin ve yavru düğümlerin yapısına bakın... Tanıdık geliyor mu?", + "updated": 1636107045004 } ] }, @@ -97,6 +112,11 @@ "language": "DE", "text": "In der Tat! Sie ähnelt dem Abschnitt Data Tasks : Die Aufgaben sind nach Börse, Markt und Handelsmine geordnet, so dass Sie eine beliebige Anzahl von Strategien testen können, die für verschiedene Märkte an mehreren Börsen optimiert sind.", "updated": 1634218636921 + }, + { + "language": "TR", + "text": "Aslında Veri Görevleri (Data Tasks) bölümüne benzerdir. Görevler borsa, piyasa ve ticaret madeni tarafından düzenlenir, böylece farklı pazarlar için optimize edilmiş herhangi bir sayıda stratejiyi birden fazla borsada test edebilirsiniz.", + "updated": 1636107114239 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-063-tutorial-step-aim-high-trade-big.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-063-tutorial-step-aim-high-trade-big.json index d4c38684e..47e9e90be 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-063-tutorial-step-aim-high-trade-big.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-063-tutorial-step-aim-high-trade-big.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Stellen Sie sich eine Armee von Bots vor, die mit mehreren Börsen, Märkten und Strategien arbeiten und in einem Netzwerk à la Trading Farm laufen.", "updated": 1634220019128 + }, + { + "language": "TR", + "text": "Birden çok borsa, pazar ve stratejiyle çalışan, bir ağ üzerinden ticaret çiftliğinizin olduğunu ve burada çalışan bir robot ordusu hayal edin.", + "updated": 1636108738487 } ], "updated": 1622200549490 @@ -51,6 +56,11 @@ "language": "DE", "text": "Genau darum geht es beim Network Node. Was Sie bisher gesehen haben, läuft auf einer einzigen Maschine. Aber...", "updated": 1634220028409 + }, + { + "language": "TR", + "text": "Ağ Düğümü bununla ilgili. Şimdiye kadar gördükleriniz tek bir makinede çalışıyor. Fakat...", + "updated": 1636109072742 } ] }, @@ -75,6 +85,11 @@ "language": "DE", "text": "Superalgos unterstützt die Verteilung und Koordinierung von Aufgaben über Netzwerke von Knoten, auf denen der Client läuft! Dies ermöglicht intelligente und skalierbare Operationen. Jeder Rechner, auf dem die GUI läuft, kann das Unternehmen steuern!", "updated": 1634220039839 + }, + { + "language": "TR", + "text": "Superalgos, İstemciyi çalıştıran düğüm ağları arasında görevlerin dağıtılmasını ve koordine edilmesini destekler! Bu, akıllı ve ölçeklenebilir operasyonlar sağlar. GUI çalıştıran herhangi bir makine işletmeyi kontrol edebilir! Bu farklı makinelerde aynı operasyonları çalıştırabieceğiniz çiflikler kurabilmeniz anlamına gelir.", + "updated": 1636109149775 } ] }, @@ -98,6 +113,11 @@ "language": "DE", "text": "Sie können ein Netzwerk mit ein paar Raspberry Pi, einem industriellen Rechenzentrum oder irgendetwas dazwischen einrichten.", "updated": 1634220046648 + }, + { + "language": "TR", + "text": "Birkaç Raspberry Pi, endüstriyel düzeyde bir veri merkezi veya bunların arasında herhangi bir şey ile bir ağ kurabilirsiniz.", + "updated": 1636109177686 } ], "updated": 1629821982211 From e98b1fbd6c3ea161a6d5a171fa490c4339e7b2b5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 5 Nov 2021 12:05:38 +0100 Subject: [PATCH 24/39] Update NetwokNode.js --- Network/NetwokNode.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Network/NetwokNode.js b/Network/NetwokNode.js index f70c5a100..d3c300e2e 100644 --- a/Network/NetwokNode.js +++ b/Network/NetwokNode.js @@ -1,20 +1,23 @@ exports.newNetworkNode = function newNetworkNode() { let thisObject = { + webSocketsInterface: undefined, socialGraphService: undefined, storage: undefined, p2pMetwork: undefined, run: run } + NT.networkNode = thisObject + return thisObject async function run() { /* Other Network Nodes and Client Apps will communicate with this Network Node via it's Websocket Interface. */ - NT.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface() - NT.webSocketsInterface.initialize() + thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface() + thisObject.webSocketsInterface.initialize() /* The Social Graph Service is the first and for now, the only service this Network Node provides. */ @@ -28,7 +31,7 @@ exports.newNetworkNode = function newNetworkNode() { /* We can join now the P2P Network as a new peer there. */ - thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() - await thisObject.p2pMetwork.initialize('Network Peer') + thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() + await thisObject.p2pMetwork.initialize('Network Peer') } } From a45d13cbdf48e3b1831f23f463775f1fb3451a7d Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Fri, 5 Nov 2021 12:42:07 +0100 Subject: [PATCH 25/39] This is my contribution to Superalgos --- .../C/Claim/Claim-Power/claim-power.json | 8 +-- .../claim-support-power.json | 18 +++++- .../C/Claim/Claim-Votes/claim-votes.json | 18 +++++- .../C/Claims/Claims-Folder/claims-folder.json | 63 ++++++++++++++++--- .../Asset-Claim-Vote/asset-claim-vote.json | 9 ++- .../asset-claims-folder.json | 9 ++- .../feature-claim-vote.json | 9 ++- .../feature-claims-folder.json | 9 ++- .../position-claim-vote.json | 9 ++- .../position-claims-folder.json | 9 ++- 10 files changed, 140 insertions(+), 21 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json index 3eb4e45b4..93cecb7b9 100644 --- a/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json +++ b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Power/claim-power.json @@ -6,8 +6,8 @@ "translations": [ { "language": "ES", - "text": "Claim Power (poder de la solicitud) es el Token Power que va al Claims Program, y determina el número de tokens que ha solicitado con cualquiera de los tipos existentes de solicitudes : Position Contribution Claim (Contribución de posición), Feature Contribution Claim Contribución de función), y Asset Contribution Claim( contribución de activo).", - "updated": 1636039210184 + "text": "Claim Power (poder de la solicitud) es el Token Power que va al Claims Program, y determina el número de tokens que está solicitando con cualquiera de las solicitudes existentes: Position Contribution Claim, Feature Contribution Claim y Asset Contribution Claim.", + "updated": 1636110904315 } ] }, @@ -24,8 +24,8 @@ "translations": [ { "language": "ES", - "text": "Claim Power es el Token Power los Claims Program, y determina el número de tokens que ha solicitado con cualquiera de los tipos existentes de solicitudes: Position Contribution Claim, Feature Contribution Claim, y Asset Contribution Claim.", - "updated": 1636039401303 + "text": "Claim Power (poder de la solicitud) es el Token Power que va al Claims Program, y determina el número de tokens que está solicitando con cualquiera de las solicitudes existentes: Position Contribution Claim, Feature Contribution Claim y Asset Contribution Claim.", + "updated": 1636110927536 } ] } diff --git a/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Support-Power/claim-support-power.json b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Support-Power/claim-support-power.json index 2d4cd09fb..5172a3eab 100644 --- a/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Support-Power/claim-support-power.json +++ b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Support-Power/claim-support-power.json @@ -2,12 +2,26 @@ "type": "Claim Support Power", "definition": { "text": "Claim Support Power is the Voting Power that goes into a Claim Votes Switch or Claim Votes in general and is a measure of how much you wish to support the Contribution Claims you are voting for.", - "updated": 1630355883567 + "updated": 1630355883567, + "translations": [ + { + "language": "ES", + "text": "Claim Support Power ( el poder de soporte de a solicitud) es el Voting Power (poder del voto) que va a un Claim Votes Switch (interruptor de voto de solcitud) o Claim Votes (votos de la solicitud) en general y es una medida de cuanto desea apoyar las Contribution Claims ( solicitu de contribución) que está votando.", + "updated": 1636107974372 + } + ] }, "paragraphs": [ { "style": "Text", - "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository." + "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository.", + "translations": [ + { + "language": "ES", + "text": "Click derecho y Editar para entrar al modo edición y cambiar este texto. ENTER para ingresar nuevos párrafos . ESC para salir del modo edición. Entonces puede usar docs.save para gardar los cambios y app.contribute para enviarlos al repositorio principal.", + "updated": 1636108181276 + } + ] } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Votes/claim-votes.json b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Votes/claim-votes.json index 478f5ee31..41dc525ee 100644 --- a/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Votes/claim-votes.json +++ b/Projects/Governance/Schemas/Docs-Concepts/C/Claim/Claim-Votes/claim-votes.json @@ -2,7 +2,14 @@ "type": "Claim Votes", "definition": { "text": "In general terms, Claim Votes allow you to support the claims of other users. The term Claim Votes is a generalization referring to either or all of the existing types: Position Claim Vote, Feature Claim Vote, and Asset Claim Vote nodes.", - "updated": 1630343978470 + "updated": 1630343978470, + "translations": [ + { + "language": "ES", + "text": "En términos generales Claim Votes le permite apoyar as solicitudes de otros usuarios. El término Claim Votes es una generalización que hace referencia a cualquiera a todos los tipos de nodos existentes: Position Claim Vote, Feature Claim Vote, y Asset Claim Vote.", + "updated": 1636109631180 + } + ] }, "paragraphs": [ { @@ -13,7 +20,14 @@ { "style": "Callout", "text": "In general terms, Claim Votes allow you to support the claims of other users. The term Claim Votes is a generalization referring to either or all of the existing particular types: Position Claim Vote, Feature Claim Vote, and Asset Claim Vote nodes.", - "updated": 1630343984130 + "updated": 1630343984130, + "translations": [ + { + "language": "ES", + "text": "En términos generales Claim Votes le permite apoyar as solicitudes de otros usuarios. El término Claim Votes es una generalización que hace referencia a cualquiera a todos los tipos de nodos existentes: Position Claim Vote, Feature Claim Vote, y Asset Claim Vote.", + "updated": 1636109637753 + } + ] } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Concepts/C/Claims/Claims-Folder/claims-folder.json b/Projects/Governance/Schemas/Docs-Concepts/C/Claims/Claims-Folder/claims-folder.json index aebfde144..72ee41bab 100644 --- a/Projects/Governance/Schemas/Docs-Concepts/C/Claims/Claims-Folder/claims-folder.json +++ b/Projects/Governance/Schemas/Docs-Concepts/C/Claims/Claims-Folder/claims-folder.json @@ -2,7 +2,14 @@ "type": "Claims Folder", "definition": { "text": "The different types of Claims Folder nodes serve as organizational devices. They also allow mapping entire sections of project definition hierarchies to place multiple claims at once.", - "updated": 1630258380621 + "updated": 1630258380621, + "translations": [ + { + "language": "ES", + "text": "Los diferentes tipos de nodos de Claims Folder (carpeta de solicitudes) sirven como dispositivos organizacionales. Ellos también permiten mapear secciones enteras de las jerarquías de definición del proyecto para colocar varias solicitudes al mismo tiempo.", + "updated": 1636109869528 + } + ] }, "paragraphs": [ { @@ -12,7 +19,14 @@ }, { "style": "Text", - "text": "Project Definition Hierarchies have four types of Class nodes that serve as organizational devices:" + "text": "Project Definition Hierarchies have four types of Class nodes that serve as organizational devices:", + "translations": [ + { + "language": "ES", + "text": "Project Definition Hierarchies ( jerarquías de definición de proyecto) tiene 4 tipos de clases de nodos que sirven como dispositivos organizacionales:", + "updated": 1636109968314 + } + ] }, { "style": "List", @@ -34,7 +48,14 @@ { "style": "Text", "text": "Similarly, the Claims Program features a matching set of organizational devices:", - "updated": 1630259570492 + "updated": 1630259570492, + "translations": [ + { + "language": "ES", + "text": "De forma similar, el Claims Program (programa de solicitudes) un conjunto coincidente de dispositivos organizacionales:", + "updated": 1636110069861 + } + ] }, { "style": "List", @@ -52,21 +73,49 @@ { "style": "Important", "text": "Notice that you can't place claims on an entire Pool. You may place claims on granular definitions only. That is why there are no pool claims folders or pool claims for that matter.", - "updated": 1630258341920 + "updated": 1630258341920, + "translations": [ + { + "language": "ES", + "text": "Note que no puede colocar solicitudes en un Pool entero. Puede colocar solicitudes solamente en definiciones granulares. Este es el porqué no hay un pool claims folders o pool claims en ese sentido.", + "updated": 1636110260349 + } + ] }, { "style": "Text", "text": "You may use these folder nodes to organize your claims in arbitrary arrangements, but you can also make a more sophisticated use of them!", - "updated": 1630259141082 + "updated": 1630259141082, + "translations": [ + { + "language": "ES", + "text": "Puede usar estos nodos de carpetas para organizar sus solicitudes en arreglos arbitrarios, pero también puede hacer un uso más sofisticado de ellos!", + "updated": 1636110356848 + } + ] }, { "style": "Callout", "text": "Use a Claims Folder node to establish a reference with the corresponding type of Class node. Then use the Install Missing Claims option on the menu of the Claims Folder to map the entire Class! The process creates a Claims Folder for each Class, and a claim for each Asset, Feature, or Position defined within each Class. ", - "updated": 1630357212192 + "updated": 1630357212192, + "translations": [ + { + "language": "ES", + "text": "Use un nodo Claims Folder para establecer una referencia con el correspondiente tipo de clase de nodo. Entonces use la opción de Install Missing Claims (Instalar solicitudes faltantes) del menú de Claims Folderpara mapear la clase entera! El porceso crea un Claims Folder para cada clase, y una solicitud para cada Asset, Feature, o Position definido en cada clase.", + "updated": 1636110581415 + } + ] }, { "style": "Success", - "text": "If something changes on the side of the definitions, you may always go back a run the Install Missing Claims process again. The process will remap the structure with the appropriate claims and folders." + "text": "If something changes on the side of the definitions, you may always go back a run the Install Missing Claims process again. The process will remap the structure with the appropriate claims and folders.", + "translations": [ + { + "language": "ES", + "text": "Si algo cambia del lado de las definiciones, puede siempre regresar y hacer correr el proceso Install Missing Claims nevamente. El proceso remapeará la estructura con las solicitudes y carpetas adecuadas.", + "updated": 1636110709352 + } + ] } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claim-Vote/asset-claim-vote.json b/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claim-Vote/asset-claim-vote.json index 3928a2251..98576e2e0 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claim-Vote/asset-claim-vote.json +++ b/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claim-Vote/asset-claim-vote.json @@ -2,7 +2,14 @@ "type": "Asset Claim Vote", "definition": { "text": "Use this node to establish a reference with an Asset Contribution Claim placed by your colleague in the Claims Program section of their User Profile. This vote means that you support your colleague's claim with the Claim Support Power you drive into the Claim Votes node!", - "updated": 1630356280267 + "updated": 1630356280267, + "translations": [ + { + "language": "ES", + "text": "Use este nodo para establecer una referencia con una Asset Contribution Claim (slicitud decontribución de activo) colocada por un clega en la sección Claims Program de sur User Profile( perfil de usuario). Este voto significa que apoya a la solicitud de su colega con el Support Power que dirija al nodo de Claim Votes!", + "updated": 1636111162787 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claims-Folder/asset-claims-folder.json b/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claims-Folder/asset-claims-folder.json index 9fbb03f6a..5590dcd27 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claims-Folder/asset-claims-folder.json +++ b/Projects/Governance/Schemas/Docs-Nodes/A/Asset/Asset-Claims-Folder/asset-claims-folder.json @@ -2,7 +2,14 @@ "type": "Asset Claims Folder", "definition": { "text": "Use this node as an organizational device, to spawn Asset Contribution Claim nodes, and to map entire structures in an Assets hierarchy to place multiple Contribution Claims at once.", - "updated": 1630352114041 + "updated": 1630352114041, + "translations": [ + { + "language": "ES", + "text": "Use este nodo como un dispositivo organizacional, para crear nodos de Asset Contribution Claim, y a mapear estructuras enteras en una jerarquía de Assets ( activo) para colocar múltiples solicitudes de contrbucion al mismo tiempo.", + "updated": 1636111484600 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claim-Vote/feature-claim-vote.json b/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claim-Vote/feature-claim-vote.json index 2c44ad3d1..954b28e7d 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claim-Vote/feature-claim-vote.json +++ b/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claim-Vote/feature-claim-vote.json @@ -2,7 +2,14 @@ "type": "Feature Claim Vote", "definition": { "text": "Use this node to establish a reference with a Feature Contribution Claim placed by your colleague in the Claims Program section of their User Profile. This vote means that you support your colleague's claim with the Claim Support Power you drive into the Claim Votes node!", - "updated": 1630356075429 + "updated": 1630356075429, + "translations": [ + { + "language": "ES", + "text": "Use este nodo para establecer una referrencia con una Feature Contribution Claim ( solicitud de contribución de función) colocada por un colega en la sección del Claims Program sde su User Profile. Este voto significa que apoya a la slicitud de su colega con el Claim Support Power que dirija a su nodo de Claim Votes!", + "updated": 1636111740902 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claims-Folder/feature-claims-folder.json b/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claims-Folder/feature-claims-folder.json index 43666accb..f8f7a3bd3 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claims-Folder/feature-claims-folder.json +++ b/Projects/Governance/Schemas/Docs-Nodes/F/Feature/Feature-Claims-Folder/feature-claims-folder.json @@ -2,7 +2,14 @@ "type": "Feature Claims Folder", "definition": { "text": "Use this node as an organizational device, to spawn Feature Contribution Claim nodes, and to map entire structures in a Features hierarchy to place multiple Contribution Claims at once.", - "updated": 1630352152356 + "updated": 1630352152356, + "translations": [ + { + "language": "ES", + "text": "Use este nodo como un dispositivo organizacional, para abrir nodos Feature Contribution Claim (solicitud de contribución de función), y para mapear estructuras enteras en una jerarquía de Feature (función) y colocar múltiples solicitudes de Contribution Claims al mismo tiempo.", + "updated": 1636112015354 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claim-Vote/position-claim-vote.json b/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claim-Vote/position-claim-vote.json index 398ea6f86..e1dd4eb6e 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claim-Vote/position-claim-vote.json +++ b/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claim-Vote/position-claim-vote.json @@ -2,7 +2,14 @@ "type": "Position Claim Vote", "definition": { "text": "Use this node to establish a reference with a Position Contribution Claim placed by your colleague in the Claims Program section of their User Profile. This vote means that you support your colleague's claim with the Claim Support Power you drive into the Claim Votes node!", - "updated": 1630356265895 + "updated": 1630356265895, + "translations": [ + { + "language": "ES", + "text": "Use este nodo para establecer una referencia con una Position Contribution Claim (solicitud de contribución de posición) colocada por un colega en la sección Claims Program de su User Profile. Este voto significa que apoya la solicitud de su colega con el Claim Support Power que dirija a su nodo de Claim Votes!", + "updated": 1636112479494 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claims-Folder/position-claims-folder.json b/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claims-Folder/position-claims-folder.json index 758d45eba..acfb30655 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claims-Folder/position-claims-folder.json +++ b/Projects/Governance/Schemas/Docs-Nodes/P/Position/Position-Claims-Folder/position-claims-folder.json @@ -2,7 +2,14 @@ "type": "Position Claims Folder", "definition": { "text": "Use this node as an organizational device, to spawn Position Contribution Claim nodes, and to map entire structures in a Positions hierarchy to place multiple Contribution Claims at once.", - "updated": 1630352182572 + "updated": 1630352182572, + "translations": [ + { + "language": "ES", + "text": "Use este nodo como un dispositivo organizacional, para abrir nodos Position Contribution Claim (solicitud de contribución de posición), para mapear estructuras enteras en una jerarquía de Positions (posiciones) para colocar múltiples solcitudes de Contribution al mismo tiempo.", + "updated": 1636112230234 + } + ] }, "paragraphs": [ { From 48c35d8148c92268e8c38eb620a538f40d802fa8 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 5 Nov 2021 12:44:58 +0100 Subject: [PATCH 26/39] 3 Network Nodes Running in Debug Mode --- .vscode/Network-Node-1.code-workspace | 10 +++++++ .vscode/Network-Node-2.code-workspace | 10 +++++++ .vscode/Network-Node-3.code-workspace | 10 +++++++ Desktop/DesktopApp.js | 8 +++--- Network/NetwokNode.js | 18 +++++++------ NetworkRoot.js | 6 ++++- .../Network/NT/Modules/WebSocketsInterface.js | 4 ++- Projects/Network/SA/Modules/P2PNetwork.js | 3 +++ .../Network/SA/Modules/P2PNetworkPeers.js | 26 +++++++++++++++++++ network-node-1.js | 16 ++++++++++++ network-node-2.js | 16 ++++++++++++ network-node-3.js | 16 ++++++++++++ 12 files changed, 129 insertions(+), 14 deletions(-) create mode 100644 .vscode/Network-Node-1.code-workspace create mode 100644 .vscode/Network-Node-2.code-workspace create mode 100644 .vscode/Network-Node-3.code-workspace create mode 100644 Projects/Network/SA/Modules/P2PNetworkPeers.js create mode 100644 network-node-1.js create mode 100644 network-node-2.js create mode 100644 network-node-3.js diff --git a/.vscode/Network-Node-1.code-workspace b/.vscode/Network-Node-1.code-workspace new file mode 100644 index 000000000..97e2d4c8f --- /dev/null +++ b/.vscode/Network-Node-1.code-workspace @@ -0,0 +1,10 @@ +{ + "folders": [ + { + "path": "C:\\Superalgos" + } + ], + "settings": { + "search.maintainFileSearchCache": true + } +} \ No newline at end of file diff --git a/.vscode/Network-Node-2.code-workspace b/.vscode/Network-Node-2.code-workspace new file mode 100644 index 000000000..97e2d4c8f --- /dev/null +++ b/.vscode/Network-Node-2.code-workspace @@ -0,0 +1,10 @@ +{ + "folders": [ + { + "path": "C:\\Superalgos" + } + ], + "settings": { + "search.maintainFileSearchCache": true + } +} \ No newline at end of file diff --git a/.vscode/Network-Node-3.code-workspace b/.vscode/Network-Node-3.code-workspace new file mode 100644 index 000000000..97e2d4c8f --- /dev/null +++ b/.vscode/Network-Node-3.code-workspace @@ -0,0 +1,10 @@ +{ + "folders": [ + { + "path": "C:\\Superalgos" + } + ], + "settings": { + "search.maintainFileSearchCache": true + } +} \ No newline at end of file diff --git a/Desktop/DesktopApp.js b/Desktop/DesktopApp.js index df7d7f570..2be0b2ac6 100644 --- a/Desktop/DesktopApp.js +++ b/Desktop/DesktopApp.js @@ -2,7 +2,7 @@ exports.newDesktopApp = function newDesktopApp() { let thisObject = { socialGraph: undefined, - p2pMetwork: undefined, + p2pNetwork: undefined, webSocketsClient: undefined, webSocketsInterface: undefined, run: run @@ -21,12 +21,12 @@ exports.newDesktopApp = function newDesktopApp() { /* We can join now the P2P Network as a client app. */ - thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() - await thisObject.p2pMetwork.initialize('Network Client') + thisObject.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() + await thisObject.p2pNetwork.initialize('Network Client') /* Here we will pick a Network Node from all users profiles available that do have a Network Node running. */ - let selectedNetworkNode = thisObject.p2pMetwork.p2pNodesToConnect[0] + let selectedNetworkNode = thisObject.p2pNetwork.p2pNodesToConnect[0] /* This is the Web Sockets client that interacts with the Superalgos Network. */ diff --git a/Network/NetwokNode.js b/Network/NetwokNode.js index d3c300e2e..26763ca92 100644 --- a/Network/NetwokNode.js +++ b/Network/NetwokNode.js @@ -4,7 +4,7 @@ exports.newNetworkNode = function newNetworkNode() { webSocketsInterface: undefined, socialGraphService: undefined, storage: undefined, - p2pMetwork: undefined, + p2pNetwork: undefined, run: run } @@ -13,11 +13,6 @@ exports.newNetworkNode = function newNetworkNode() { return thisObject async function run() { - /* - Other Network Nodes and Client Apps will communicate with this Network Node via it's Websocket Interface. - */ - thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface() - thisObject.webSocketsInterface.initialize() /* The Social Graph Service is the first and for now, the only service this Network Node provides. */ @@ -31,7 +26,14 @@ exports.newNetworkNode = function newNetworkNode() { /* We can join now the P2P Network as a new peer there. */ - thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() - await thisObject.p2pMetwork.initialize('Network Peer') + thisObject.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() + await thisObject.p2pNetwork.initialize('Network Peer') + /* + Other Network Nodes and Client Apps will communicate with this Network Node via it's Websocket Interface. + */ + thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface() + thisObject.webSocketsInterface.initialize() + console.log('Network Node Web Sockets Interface ....................................... Listening at port ' + JSON.parse(NT.networkNode.p2pNetwork.thisNetworkNode.node.config).webSocketsPort) + } } diff --git a/NetworkRoot.js b/NetworkRoot.js index daa007839..a09e3cd62 100644 --- a/NetworkRoot.js +++ b/NetworkRoot.js @@ -10,7 +10,7 @@ exports.newNetworkRoot = function newNetworkRoot() { return thisObject - async function run() { + async function run(debugSettings) { /* The NT object is accessible everywhere at the Superalgos Network. It provides access to all modules built for this Network. @@ -25,6 +25,10 @@ exports.newNetworkRoot = function newNetworkRoot() { let ENVIRONMENT = require('./Environment.js'); let ENVIRONMENT_MODULE = ENVIRONMENT.newEnvironment() global.env = ENVIRONMENT_MODULE + + if (debugSettings !== undefined && debugSettings.P2P_NETWORK_NODE_SIGNING_ACCOUNT !== undefined) { + global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT = debugSettings.P2P_NETWORK_NODE_SIGNING_ACCOUNT + } /* First thing is to load the project schema file. */ diff --git a/Projects/Network/NT/Modules/WebSocketsInterface.js b/Projects/Network/NT/Modules/WebSocketsInterface.js index e79a51bb2..7374e869e 100644 --- a/Projects/Network/NT/Modules/WebSocketsInterface.js +++ b/Projects/Network/NT/Modules/WebSocketsInterface.js @@ -40,7 +40,9 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock } function initialize() { - socketServer = new SA.nodeModules.ws.Server({ port: global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT }) + let port = JSON.parse(NT.networkNode.p2pNetwork.thisNetworkNode.node.config).webSocketsPort + + socketServer = new SA.nodeModules.ws.Server({ port: port }) clientInterface = NT.projects.socialTrading.modules.clientInterface.newSocialTradingModulesClientInterface() peerInterface = NT.projects.socialTrading.modules.peerInterface.newSocialTradingModulesPeerInterface() diff --git a/Projects/Network/SA/Modules/P2PNetwork.js b/Projects/Network/SA/Modules/P2PNetwork.js index 61ae16c87..131f82e60 100644 --- a/Projects/Network/SA/Modules/P2PNetwork.js +++ b/Projects/Network/SA/Modules/P2PNetwork.js @@ -6,6 +6,7 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { let thisObject = { joinTheNetworkAsNetworkPeer: joinTheNetworkAsNetworkPeer, p2pNodesToConnect: undefined, + thisNetworkNode: undefined, /* Framework Functions */ initialize: initialize, finalize: finalize @@ -37,6 +38,8 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() { let p2pNetworkNode = SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES[i] if (thisP2PNodeId !== p2pNetworkNode.node.id) { thisObject.p2pNodesToConnect.push(p2pNetworkNode) + } else { + thisObject.thisNetworkNode = p2pNetworkNode } } break diff --git a/Projects/Network/SA/Modules/P2PNetworkPeers.js b/Projects/Network/SA/Modules/P2PNetworkPeers.js new file mode 100644 index 000000000..2e40bd9ca --- /dev/null +++ b/Projects/Network/SA/Modules/P2PNetworkPeers.js @@ -0,0 +1,26 @@ +exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkPeers() { + /* + This module represents the P2P Nodes we are connected to. + */ + let thisObject = { + + /* Framework Functions */ + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + + } + + async function initialize() { + /* + On a first iteration, we will try to connect to 2 Network Peers, one upstream and one downstream, + meaning one with higher ranking that us, and the other with lower ranking than us. + */ + + + } +} \ No newline at end of file diff --git a/network-node-1.js b/network-node-1.js new file mode 100644 index 000000000..ffb2ccd1e --- /dev/null +++ b/network-node-1.js @@ -0,0 +1,16 @@ +/* +The Superalgos Network offers 3 types of services: + + * Social Graph Service + * Search Index Service + * Private Message Service + +Users can decide which services to run at their node.(TODO) + +This module represents the Nodejs command that users have to start the Network Node.. + +*/ + +let APP_ROOT = require('./NetworkRoot.js') +let APP_ROOT_MODULE = APP_ROOT.newNetworkRoot() +APP_ROOT_MODULE.run({P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-1'}) \ No newline at end of file diff --git a/network-node-2.js b/network-node-2.js new file mode 100644 index 000000000..0f36a5e2d --- /dev/null +++ b/network-node-2.js @@ -0,0 +1,16 @@ +/* +The Superalgos Network offers 3 types of services: + + * Social Graph Service + * Search Index Service + * Private Message Service + +Users can decide which services to run at their node.(TODO) + +This module represents the Nodejs command that users have to start the Network Node.. + +*/ + +let APP_ROOT = require('./NetworkRoot.js') +let APP_ROOT_MODULE = APP_ROOT.newNetworkRoot() +APP_ROOT_MODULE.run({P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-2'}) \ No newline at end of file diff --git a/network-node-3.js b/network-node-3.js new file mode 100644 index 000000000..f8a3ac41e --- /dev/null +++ b/network-node-3.js @@ -0,0 +1,16 @@ +/* +The Superalgos Network offers 3 types of services: + + * Social Graph Service + * Search Index Service + * Private Message Service + +Users can decide which services to run at their node.(TODO) + +This module represents the Nodejs command that users have to start the Network Node.. + +*/ + +let APP_ROOT = require('./NetworkRoot.js') +let APP_ROOT_MODULE = APP_ROOT.newNetworkRoot() +APP_ROOT_MODULE.run({P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-3'}) \ No newline at end of file From b5eb7dd425aa9f3f1b59ccd1d7eb172693f4b0d2 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 5 Nov 2021 14:40:51 +0100 Subject: [PATCH 27/39] Network Nodes connecting to other Network Nodes --- Desktop/DesktopApp.js | 2 +- Network/NetwokNode.js | 14 ++++++--- .../Network/SA/Modules/P2PNetworkPeers.js | 30 +++++++++++++++++-- .../SA/Modules/WebSocketsNetworkClient.js | 17 +++++++++-- Projects/ProjectsSchema.json | 6 ++++ 5 files changed, 58 insertions(+), 11 deletions(-) diff --git a/Desktop/DesktopApp.js b/Desktop/DesktopApp.js index 2be0b2ac6..6581230a1 100644 --- a/Desktop/DesktopApp.js +++ b/Desktop/DesktopApp.js @@ -32,7 +32,7 @@ exports.newDesktopApp = function newDesktopApp() { */ thisObject.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient() await thisObject.webSocketsClient.initialize('Network Client', selectedNetworkNode) - console.log('Desktop Client Connected to Network Node via Web Sockets ................... Connected to port ' + global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT) + /* These are the Network Interfaces by which the Web App interacts with this Desktop Client. */ diff --git a/Network/NetwokNode.js b/Network/NetwokNode.js index 26763ca92..91fb26487 100644 --- a/Network/NetwokNode.js +++ b/Network/NetwokNode.js @@ -5,6 +5,7 @@ exports.newNetworkNode = function newNetworkNode() { socialGraphService: undefined, storage: undefined, p2pNetwork: undefined, + p2pNetworkPeers: undefined, run: run } @@ -24,16 +25,21 @@ exports.newNetworkNode = function newNetworkNode() { thisObject.storage = NT.projects.socialTrading.modules.storage.newSocialTradingModulesStorage() thisObject.storage.initialize() /* - We can join now the P2P Network as a new peer there. + Let's discover who is at the p2p network. */ thisObject.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork() await thisObject.p2pNetwork.initialize('Network Peer') /* + We can join now the P2P Network as a new peer there. + */ + thisObject.p2pNetworkPeers = SA.projects.network.modules.p2pNetworkPeers.newNetworkModulesP2PNetworkPeers() + await thisObject.p2pNetworkPeers.initialize() + /* Other Network Nodes and Client Apps will communicate with this Network Node via it's Websocket Interface. */ - thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface() - thisObject.webSocketsInterface.initialize() - console.log('Network Node Web Sockets Interface ....................................... Listening at port ' + JSON.parse(NT.networkNode.p2pNetwork.thisNetworkNode.node.config).webSocketsPort) + thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface() + thisObject.webSocketsInterface.initialize() + console.log('Network Node Web Sockets Interface ....................................... Listening at port ' + JSON.parse(NT.networkNode.p2pNetwork.thisNetworkNode.node.config).webSocketsPort) } } diff --git a/Projects/Network/SA/Modules/P2PNetworkPeers.js b/Projects/Network/SA/Modules/P2PNetworkPeers.js index 2e40bd9ca..ddcc56637 100644 --- a/Projects/Network/SA/Modules/P2PNetworkPeers.js +++ b/Projects/Network/SA/Modules/P2PNetworkPeers.js @@ -2,7 +2,8 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP /* This module represents the P2P Nodes we are connected to. */ - let thisObject = { + let thisObject = { + peers: undefined, /* Framework Functions */ initialize: initialize, @@ -12,7 +13,7 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP return thisObject function finalize() { - + thisObject.peers = undefined } async function initialize() { @@ -20,7 +21,30 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP On a first iteration, we will try to connect to 2 Network Peers, one upstream and one downstream, meaning one with higher ranking that us, and the other with lower ranking than us. */ + thisObject.peers = [] + let totalConnected = 0 - + for (let i = 0; i < NT.networkNode.p2pNetwork.p2pNodesToConnect.length; i++) { + if (totalConnected === 2) { break } + let peer = {} + peer.p2pNetworkNode = NT.networkNode.p2pNetwork.p2pNodesToConnect[i] + peer.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient() + await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode) + .then(addPeer) + .catch(onError) + + function addPeer() { + thisObject.peers.push(peer) + totalConnected++ + } + + function onError(err) { + if (err !== undefined) { + console.log('[ERROR] P2P Network Peers -> onError -> While connecting to node -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name + ' -> ' + err.message) + } else { + console.log('[WARN] P2P Network Peers -> onError -> Peer Not Available at the Moment -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name) + } + } + } } } \ No newline at end of file diff --git a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js index 16ffbafd7..c2db2516a 100644 --- a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js +++ b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js @@ -1,6 +1,8 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWebSocketsNetworkClient() { let thisObject = { + host: undefined, + port: undefined, sendMessage: sendMessage, initialize: initialize, finalize: finalize @@ -29,11 +31,13 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb web3 = new SA.nodeModules.web3() - let host = JSON.parse(p2pNetworkNode.node.config).host - let port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort + thisObject.host = JSON.parse(p2pNetworkNode.node.config).host + thisObject.port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort - socketClient = new SA.nodeModules.ws('ws://' + host + ':' + port) + socketClient = new SA.nodeModules.ws('ws://' + thisObject.host + ':' + thisObject.port) await setUpWebsocketClient(callerRole, p2pNetworkNode) + + console.log('Websockets Client Connected to Network Node via Web Sockets .............. Connected to ' + p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + p2pNetworkNode.node.name + ' -> ' + thisObject.host + ':' + thisObject.port) } async function setUpWebsocketClient(callerRole, p2pNetworkNode) { @@ -197,8 +201,15 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb } function onError(err) { + if (err.message.indexOf('ECONNREFUSED') >= 0) { + console.log('[WARN] Web Sockets Client -> onError -> Nobody home at ' + thisObject.host + ':' + thisObject.port) + reject() + return + } console.log('[ERROR] Web Sockets Client -> onError -> err.message = ' + err.message) console.log('[ERROR] Web Sockets Client -> onError -> err.stack = ' + err.stack) + reject() + return } } catch (err) { diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 2182d5c83..feebfdbbf 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1413,6 +1413,12 @@ "propertyName": "p2pNetworkNode", "functionName": "newNetworkModulesP2PNetworkNode", "fileName": "P2PNetworkNode.js" + }, + { + "name": "P2P Network Peers", + "propertyName": "p2pNetworkPeers", + "functionName": "newNetworkModulesP2PNetworkPeers", + "fileName": "P2PNetworkPeers.js" } ], "utilities": [ From 11bcd3ae3c9befe0b6ad77640f01882eaa8799c7 Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 16:57:17 +0300 Subject: [PATCH 28/39] This is my contribution to Superalgos --- ...utorial-step-scales-best-kept-secrets.json | 15 ++++++++++++++ ...-064-tutorial-step-machines-learn-too.json | 20 +++++++++++++++++++ ...s-065-tutorial-step-civil-works-ahead.json | 17 +++++++++++++++- ...s-066-tutorial-step-enough-digressing.json | 15 ++++++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-052-tutorial-step-scales-best-kept-secrets.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-052-tutorial-step-scales-best-kept-secrets.json index 5e97b8ae0..3fc49620a 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-052-tutorial-step-scales-best-kept-secrets.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-052-tutorial-step-scales-best-kept-secrets.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Sie haben gerade die Grundlagen über die drei Skalen gelernt, die die Charts bestimmen, aber es gibt noch mehr!", "updated": 1634217561414 + }, + { + "language": "TR", + "text": "Tabloları yöneten üç ölçekle ilgili temel bilgileri az önce öğrendiniz, ancak dahası da var!", + "updated": 1636112760510 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Erinnern Sie sich, dass ich erwähnt habe, dass eine Time Machine mehrere Charts von verschiedenen Börsen und Märkten enthalten kann? Es gibt keine Grenzen für die Visualisierung von Daten in Superalgos, und die Skalen spielen eine wichtige Rolle in komplexeren Konfigurationen als denen, die wir an dieser Stelle erkunden.", "updated": 1634217567611 + }, + { + "language": "TR", + "text": "Bir Zaman Makinesinin ( Time Machine ) birden fazla borsadan ve piyasadan birden fazla grafik içerebileceğini söylediğimi hatırlıyor musunuz? Superalgos'ta verileri nasıl görselleştireceğinizin bir sınırı yoktur ve ölçekler, bu noktada araştırdığımızdan daha karmaşık konfigürasyonlarda önemli bir rol oynar.", + "updated": 1636112585521 } ] }, @@ -73,6 +83,11 @@ "language": "DE", "text": "Wenn Sie alle Details erfahren möchten, lesen Sie bitte den Abschnitt Scales in der Dokumentation.", "updated": 1634217573618 + }, + { + "language": "TR", + "text": "Tüm detayları öğrenmek istiyorsanız, dokümantasyonun Ölçekler ( Scales ) bölümünü incelemekten çekinmeyin.", + "updated": 1636112742089 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-064-tutorial-step-machines-learn-too.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-064-tutorial-step-machines-learn-too.json index 44566c50e..2fa91dcc5 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-064-tutorial-step-machines-learn-too.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-064-tutorial-step-machines-learn-too.json @@ -26,6 +26,11 @@ "language": "DE", "text": "Die neueste Version von Superalgos bietet eine experimentelle Integration von TensorFlow zur Nutzung von ML innerhalb der App!", "updated": 1634220174054 + }, + { + "language": "TR", + "text": "Superalgos'un en son sürümü, uygulama içinden Makine öğrenimi'nden (ML)yararlanmak için deneysel bir TensorFlow entegrasyonuna sahiptir!", + "updated": 1636109475710 } ] }, @@ -51,6 +56,11 @@ "language": "DE", "text": "Die Integration bildet die Definition einer NodeJS TensorFlow Library mit einem Supervised Learning Algorithmus und seinem Artificial Neural Network in der gleichen Art von Knotenstruktur ab, wie sie für Superalgos typisch ist.", "updated": 1634220190097 + }, + { + "language": "TR", + "text": "Entegrasyon, Superalgos'a özgü düğümlerin yapısında bir Öğrenme algoritması ( Supervised Learning ) ve Yapay Sinir Ağı ( Artificial Neural Network ) içeren bir NodeJS TensorFlow Kitaplığı tanımını eşler.", + "updated": 1636109802947 } ] }, @@ -75,6 +85,11 @@ "language": "DE", "text": "Die Integration nutzt den Rest der Superalgos-Infrastruktur, so dass Sie Ihre Datensätze verwenden können, um ML-Algos zu trainieren und die resultierenden Modelle innerhalb von Handelssystemen zu verwenden!", "updated": 1634220194628 + }, + { + "language": "TR", + "text": "Entegrasyon, Superalgos altyapısından yararlanır, böylece veri kümelerinizi Makine öğrenimi (ML) algoritmalarını eğitmek için kullanabilir ve elde edilen modelleri ticaret sistemlerinizde kullanabilirsiniz!", + "updated": 1636109892078 } ] }, @@ -99,6 +114,11 @@ "language": "DE", "text": "Werfen Sie später einen Blick auf den ML CrossCategoricalEntropy Demo Plugin Workspace!", "updated": 1634220207869 + }, + { + "language": "TR", + "text": "Daha sonra, ML CrossCategoricalEntropy Demo Plugin Workspace'e bir göz atın!", + "updated": 1636109933292 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-065-tutorial-step-civil-works-ahead.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-065-tutorial-step-civil-works-ahead.json index 9be8bad7e..b6b4f3cf9 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-065-tutorial-step-civil-works-ahead.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-065-tutorial-step-civil-works-ahead.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Wundern Sie sich nicht, wenn Sie hier und da ein \"under construction\"-Schild finden...", "updated": 1634220290367 + }, + { + "language": "TR", + "text": "Arada bir \"Under Construction\" tabelası görürseniz şaşırmayın...", + "updated": 1636110077834 } ], "updated": 1622200773527 @@ -50,11 +55,16 @@ "language": "DE", "text": "Wie ich bereits erwähnt habe, wächst Superalgos ständig, und die Infrastruktur, die für die kommende Version entworfen wurde, kann gelegentlich in die aktuelle Version in einem Service Pack integriert werden, zusammen mit notwendigen Korrekturen und kleineren Verbesserungen.", "updated": 1634220302814 + }, + { + "language": "TR", + "text": "Daha önce bahsettiğim gibi, Superalgos sürekli büyüyor ve gelecek sürüm için tasarlanan altyapı, gerekli düzeltmeler ve küçük iyileştirmelerle birlikte zaman zaman bir hizmet paketindeki mevcut sürümle birleştiriliyor.", + "updated": 1636110110844 } ] }, { - "style": "Callout", + "style": "Note", "text": "If you are curious about what is cooking for the upcoming Superalgos release, join the Superalgos Develop Telegram group.", "translations": [ { @@ -73,6 +83,11 @@ "language": "DE", "text": "Wenn Sie neugierig sind, was für die kommende Superalgos Version geplant ist, treten Sie der Superalgos Develop Telegram Gruppe bei. ", "updated": 1634220334096 + }, + { + "language": "TR", + "text": "Bir sonraki sürüm içeriğini öğrenebilmek için Telegram Grubumuza Katılın. https://t.me/superalgosdevelop", + "updated": 1636119227691 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-066-tutorial-step-enough-digressing.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-066-tutorial-step-enough-digressing.json index e42ebde70..f98f4aefc 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-066-tutorial-step-enough-digressing.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-066-tutorial-step-enough-digressing.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Wir führen eine Backtesting Session mit einer Reihe von vorkonfigurierten Parametern durch, damit Sie einen kurzen Einblick in die Funktionsweise von Simulationen erhalten.", "updated": 1634221802413 + }, + { + "language": "TR", + "text": "Simülasyonların nasıl çalıştığına hızlıca bir göz atabilmeniz için bir dizi önceden yapılandırılmış parametre ile bir Geri Test Oturumu ( Backtesting Session ) çalıştıracağız.", + "updated": 1636117912488 } ] }, @@ -50,6 +55,11 @@ "language": "DE", "text": "Wie Sie rechts sehen können, hat eine Handelssitzung einen Verweis auf ein Trading System. Das heißt, der Trading Bot wird die Regeln des referenzierten Handelssystems anwenden, um Entscheidungen zu treffen. Es gibt auch einen Verweis auf eine Trading Engine, ein Thema, das ein eigenes Kapitel wert ist, also lasse ich es für später!", "updated": 1634221812093 + }, + { + "language": "TR", + "text": "Sağda görebileceğiniz gibi, bir ticaret oturumunun bir Ticaret Sistemine ( Tading System ) referansı vardır. Yani Ticaret Botu ( Trading Bot ), karar vermek için referans verilen ticaret sisteminin kurallarını uygulayacaktır. Trading Engine'e (Trading Engine) konusunu sonraya bırakacağım!", + "updated": 1636118809271 } ] }, @@ -73,6 +83,11 @@ "language": "DE", "text": "Die Trading Session wird von mehreren Parametern beeinflusst. Werfen Sie einen kurzen Blick auf deren Konfigurationen, indem Sie im Menü Konfigurieren wählen!", "updated": 1634221844095 + }, + { + "language": "TR", + "text": "İşlem seansı birkaç parametreden (Trading Parameters) oluşur. Menüden Yapılandır'ı seçerek konfigürasyonlarına hızlıca göz atın!", + "updated": 1636118950433 } ] } From f2238f35f5bae252b9f464246110914fe08cf959 Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Fri, 5 Nov 2021 17:36:07 +0300 Subject: [PATCH 29/39] This is my contribution to Superalgos --- ...algos-067-tutorial-step-what-when-how.json | 40 +++++++++++++++++++ ...lgos-068-tutorial-step-ready.-set.-go.json | 20 ++++++++++ 2 files changed, 60 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-067-tutorial-step-what-when-how.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-067-tutorial-step-what-when-how.json index 195d7ab3c..1809ab2a3 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-067-tutorial-step-what-when-how.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-067-tutorial-step-what-when-how.json @@ -19,6 +19,11 @@ "language": "DE", "text": "Die Trading Parameters bestimmen wichtige Aspekte des Ablaufs einer Handelssitzung. Werfen wir einen kurzen, oberflächlichen Blick darauf...", "updated": 1634222050905 + }, + { + "language": "TR", + "text": "Alım Satım Parametreleri ( Trading Parameters ), alım satım seansının nasıl yürütüldüğünün temel yönlerini belirler. Hızlı, yüzeysel bir göz atalım...", + "updated": 1636120903968 } ] }, @@ -43,6 +48,11 @@ "language": "DE", "text": "Session Base Asset: Es wird kein Kapital in BTC zugewiesen.", "updated": 1634222067587 + }, + { + "language": "TR", + "text": "Session Base Asset (Oturum Temel Varlığı:): BTC'ye sermaye tahsis edilmez.", + "updated": 1636121181916 } ] }, @@ -66,6 +76,11 @@ "language": "DE", "text": "Session Quoted Asset: 1000 USDT des Anfangskapitals.", "updated": 1634222071545 + }, + { + "language": "TR", + "text": "Session Quoted Asset (Oturumda Kote Edilen Varlık): 1000 USDT başlangıç sermayesi.", + "updated": 1636121192365 } ] }, @@ -89,6 +104,11 @@ "language": "DE", "text": "Time Range: Wir testen einen einzigen Tag, 2020-09-01.", "updated": 1634222083921 + }, + { + "language": "TR", + "text": "Time Range (Zaman Aralığı): Tek bir günü test edeceğiz, 01 Eylül 2020", + "updated": 1636121263576 } ] }, @@ -112,6 +132,11 @@ "language": "DE", "text": "Time Frame: Aufträge werden jede Minute erteilt/storniert, daher ist 01-min angemessen.", "updated": 1634222093512 + }, + { + "language": "TR", + "text": "Time Frame (Zaman periyodu): siparişler her dakika verilir/iptal edilir, bu nedenle 01 dakika uygundur.", + "updated": 1636121307468 } ] }, @@ -136,6 +161,11 @@ "language": "DE", "text": "Slippage: ist in diesem Fall irrelevant, da dieses spezielle Handelssystem nur Limit-Orders verwendet.", "updated": 1634222103935 + }, + { + "language": "TR", + "text": "Slippage (Kayma): Bu özel ticaret sistemi sadece limit emirleri kullandığından, bu durum için önemsizdir.", + "updated": 1636121458592 } ] }, @@ -159,6 +189,11 @@ "language": "DE", "text": "Fee Structure: 0,1% ist die niedrigste Binance-Stufe.", "updated": 1634222115242 + }, + { + "language": "TR", + "text": "Fee Structure (Komisyon): Binance için %0,1 olduğunu varsayalım.", + "updated": 1636121571785 } ] }, @@ -183,6 +218,11 @@ "language": "DE", "text": "Die übrigen Parameter haben keinen Einfluss auf die Simulation. Um mehr über Trading Parameters zu erfahren, werfen Sie einen Blick in die Dokumentation.", "updated": 1634222122265 + }, + { + "language": "TR", + "text": "Kalan parametreler simülasyonu etkilemez. İşlem Parametreleri hakkında daha fazla bilgi edinmek için belgelere bakın.", + "updated": 1636121544786 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-068-tutorial-step-ready.-set.-go.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-068-tutorial-step-ready.-set.-go.json index 861144eb5..1a21de9b9 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-068-tutorial-step-ready.-set.-go.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-068-tutorial-step-ready.-set.-go.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Los geht's! Dies wird ohnehin schnell gehen, da wir nur einen einzigen Tag mit historischen Daten testen.", "updated": 1634222237362 + }, + { + "language": "TR", + "text": "Haydi gidelim! Bir günlük zaman dilimi için Backtest yapacağımız için bu hızlı olacak.", + "updated": 1636122670075 } ] }, @@ -44,6 +49,11 @@ "text": "Ejecutar un Trading Task es bastante similar a ejecutar una tarea de minería de datos. La diferencia radica en que, después de ejecutar la tarea, también debe ejecutar lel Trading Session.", "updated": 1624454018479, "style": "Text" + }, + { + "language": "TR", + "text": "Bir ticaret görevi yürütmek ( Trading Tasks ), bir veri madenciliği (Data Mining Tasks ) görevi yürütmeye oldukça benzer. Aradaki fark, görevi çalıştırdıktan sonra, ticaret oturumunu da çalıştırmanız gerektiğidir.", + "updated": 1636122738568 } ] }, @@ -68,6 +78,11 @@ "language": "DE", "text": "Wählen Sie im Menü Lightning Strike Task die Option Run!
Wählen Sie nun Run im Menü Backtesting Session!", "updated": 1634222444040 + }, + { + "language": "TR", + "text": "Önce Lightning Strike Task menüsünde Run'ı seçin! Sonra Backtesting Session menüsünde Run'ı seçin!", + "updated": 1636122946019 } ] }, @@ -91,6 +106,11 @@ "language": "DE", "text": "Wenn die Backtesting Session anzeigt, dass die Verarbeitung abgeschlossen ist, beenden Sie die Aufgabe und klicken Sie auf Weiter.", "updated": 1634222377772 + }, + { + "language": "TR", + "text": "Geriye Dönük Test Oturumu ( Backtesting Session ), işlemin tamamlandığını gösterdiğinde, Görevi ( Task) durdurun ve İleri'ye tıklayın.", + "updated": 1636122871481 } ], "updated": 1622201246283 From c798881c25d0de4c4d7edc86dde4166cfbe8ca92 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Fri, 5 Nov 2021 15:14:06 +0000 Subject: [PATCH 30/39] [Distribution] Workflow clenaup. Add linux build. --- .github/workflows/release_build_dev.yml | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/release_build_dev.yml b/.github/workflows/release_build_dev.yml index a0784fb09..0efb7ca69 100644 --- a/.github/workflows/release_build_dev.yml +++ b/.github/workflows/release_build_dev.yml @@ -17,11 +17,9 @@ jobs: id: date run: echo "::set-output name=date::$(date +'%Y%m%d')" - - name: get-version - id: version - uses: nyaa8/package-version@v1 - with: - path: './package.json' + - name: Get version + id: vars + run: echo "::set-output name=tag::$(node -p "require('./package.json').version")" - name: Create nightly release id: create_release @@ -29,8 +27,8 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: ${{ env.PACKAGE_VERSION }}.${{ steps.date.outputs.date }} - release_name: Superalgos ${{ env.PACKAGE_VERSION }} Snapshot ${{ steps.date.outputs.date }} + tag_name: ${{ steps.vars.outputs.tag }}.${{ steps.date.outputs.date }} + release_name: Superalgos-Beta-v${{ steps.vars.outputs.tag }} Snapshot ${{ steps.date.outputs.date }} keep_num: 5 keep_tags: false @@ -39,7 +37,7 @@ jobs: needs: create-release strategy: matrix: - os: [windows-latest, macos-latest] + os: [windows-latest, macos-latest, ubuntu-latest] steps: - name: Get current date @@ -56,11 +54,9 @@ jobs: with: node-version: 14 - - name: get-version - id: version - uses: nyaa8/package-version@v1 - with: - path: './package.json' + - name: Get version + id: vars + run: echo "::set-output name=tag::$(node -p "require('./package.json').version")" - name: Build/release Electron app uses: samuelmeuli/action-electron-builder@v1 @@ -68,7 +64,7 @@ jobs: # GitHub token, automatically provided to the action # (No need to define this secret in the repo settings) github_token: ${{ secrets.github_token }} - args: "-c.extraMetadata.main=electron-wrapper.js -c.extraMetadata.version=${{ env.PACKAGE_VERSION }}.${{ steps.date.outputs.date }} -c build/electron-builder.json -p onTagOrDraft" + args: "-c.extraMetadata.version=${{ steps.vars.outputs.tag }}.${{ steps.date.outputs.date }} -c build/electron-builder.json -p onTagOrDraft" # If the commit is tagged with a version (e.g. "v1.0.0"), # release the app after building From 6bd6178e4fb4a4795eb23c720d90c3c1e5ed1acb Mon Sep 17 00:00:00 2001 From: NAmorim Date: Fri, 5 Nov 2021 15:15:11 +0000 Subject: [PATCH 31/39] Enable Linux builds (pc and rpi) Enable zipped package --- build/electron-builder.json | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/build/electron-builder.json b/build/electron-builder.json index 7554534f0..9624635e9 100644 --- a/build/electron-builder.json +++ b/build/electron-builder.json @@ -1,7 +1,7 @@ { "appId": "org.superalgos.platform", "productName": "Superalgos", - "asar": false, + "asar": true, "generateUpdatesFilesForAllChannels": true, "files": [ "**/*", @@ -54,12 +54,16 @@ "target": [ { "target": "dmg", - "arch": "x64" - }, + "arch": ["x64", "arm64"] + } + ] + }, + "linux": { + "target": [ { - "target": "dmg", - "arch": "arm64" - } + "target": "AppImage", + "arch": ["x64", "armv7l"] + } ] }, "extraMetadata": { From fff090d5bf1022f15c2736cc4597dd216f5b12ff Mon Sep 17 00:00:00 2001 From: NAmorim Date: Fri, 5 Nov 2021 15:16:05 +0000 Subject: [PATCH 32/39] Simpler release workflow action --- .github/workflows/release_build.yml | 48 ++++++----------------------- 1 file changed, 9 insertions(+), 39 deletions(-) diff --git a/.github/workflows/release_build.yml b/.github/workflows/release_build.yml index fbb2ef9e0..646f96612 100644 --- a/.github/workflows/release_build.yml +++ b/.github/workflows/release_build.yml @@ -1,38 +1,16 @@ name: Build/release Binaries + on: - pull_request: - branches: [master] - #release: - # types: [published, created] + release: + types: + - published workflow_dispatch: jobs: - create-release: - runs-on: ubuntu-latest - steps: - - name: Download a file - run: curl "https://raw.githubusercontent.com/${{ github.repository }}/master/package.json" -o package.json - - - name: get-version - id: version - uses: nyaa8/package-version@v1 - with: - path: './package.json' - - - name: Create release - id: create_release - uses: viperproject/create-nightly-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ env.PACKAGE_VERSION }} - release_name: Superalgos-v${{ env.PACKAGE_VERSION }} - build-release: runs-on: ${{ matrix.os }} - needs: create-release strategy: matrix: os: [windows-latest, macos-latest] @@ -40,19 +18,15 @@ jobs: steps: - name: Check out Git repository uses: actions/checkout@v2 - with: - ref: develop - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: 14 - - - name: get-version - id: version - uses: nyaa8/package-version@v1 - with: - path: './package.json' + + - name: Get version + id: vars + run: echo "::set-output name=tag::$(node -p "require('./package.json').version")" - name: Build/release Electron app uses: samuelmeuli/action-electron-builder@v1 @@ -60,10 +34,6 @@ jobs: # GitHub token, automatically provided to the action # (No need to define this secret in the repo settings) github_token: ${{ secrets.github_token }} - args: "-c.extraMetadata.version=${{ env.PACKAGE_VERSION }} -c build/electron-builder.json -p always" - - # If the commit is tagged with a version (e.g. "v1.0.0"), - # release the app after building - # release: ${{ startsWith(github.ref, 'refs/tags/v') }} + args: "-c.extraMetadata.version=${{ steps.vars.outputs.tag }} -c build/electron-builder.json -p always" release: true From 447b64d06159544df0f8cb609a3704557c9c6aba Mon Sep 17 00:00:00 2001 From: 9v5ij <9v5ij@protonmail.ch> Date: Sat, 6 Nov 2021 05:02:55 +0100 Subject: [PATCH 33/39] User Profile 9v5ij --- .../Plugins/User-Profiles/9v5ij.json | 373 ++++++++++++++++++ 1 file changed, 373 insertions(+) create mode 100644 Projects/Governance/Plugins/User-Profiles/9v5ij.json diff --git a/Projects/Governance/Plugins/User-Profiles/9v5ij.json b/Projects/Governance/Plugins/User-Profiles/9v5ij.json new file mode 100644 index 000000000..875958faf --- /dev/null +++ b/Projects/Governance/Plugins/User-Profiles/9v5ij.json @@ -0,0 +1,373 @@ +{ + "type": "User Profile", + "name": "9v5ij", + "config": "{\"signature\":{\"message\":\"9v5ij\",\"messageHash\":\"0x9c8b42b80d96d62eb8db071c53bc015a0355fdb50c28e88b782cc837586e96d8\",\"v\":\"0x1b\",\"r\":\"0x3158d81f055ca53ba0eaa7f1944988b0ca9aed61c217c9ea514b776a7f804cc7\",\"s\":\"0x640ae44d03c13a9ce7a2f5bcb6ee69fd7efe21d04e3d8ce50e34bfeecd0c7427\",\"signature\":\"0x3158d81f055ca53ba0eaa7f1944988b0ca9aed61c217c9ea514b776a7f804cc7640ae44d03c13a9ce7a2f5bcb6ee69fd7efe21d04e3d8ce50e34bfeecd0c74271b\"},\"codeName\":\"9v5ij\"}", + "project": "Governance", + "tokenPowerSwitch": { + "type": "Token Power Switch", + "name": "New Token Power Switch", + "config": "{}", + "project": "Governance", + "tokenPowerSwitch": [], + "onboardingPrograms": { + "type": "Onboarding Programs", + "name": "New Onboarding Programs", + "config": "{}", + "project": "Governance", + "airdropProgram": { + "type": "Airdrop Program", + "name": "New Airdrop Program", + "config": "{}", + "project": "Governance", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "15ecf9d0-e46d-4289-8784-df9ec18ba341", + "savedPayload": { + "position": { + "x": 14068, + "y": 5572.1354441275425 + }, + "targetPosition": { + "x": 14218, + "y": 5831.943065262874 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "0e1cefa3-8794-457c-9a0c-fe1fd1a9d120", + "savedPayload": { + "position": { + "x": 14218, + "y": 5831.943065262874 + }, + "targetPosition": { + "x": 14368, + "y": 6091.750686398206 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "githubProgram": { + "type": "Github Program", + "name": "New Github Program", + "config": "{}", + "project": "Governance", + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "4eb2d74a-ef56-43c2-a5a3-b49daa517607", + "savedPayload": { + "position": { + "x": 14968, + "y": 6091.750686398206 + }, + "targetPosition": { + "x": 14668, + "y": 6091.750686398206 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "7b1b42d4-0dda-47a9-bb0d-bd548ca461ff", + "savedPayload": { + "position": { + "x": 14668, + "y": 6091.750686398206 + }, + "targetPosition": { + "x": 14368, + "y": 6091.750686398206 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "a647510e-f151-4619-b489-1366f318e9c1", + "savedPayload": { + "position": { + "x": 14368, + "y": 6091.750686398206 + }, + "targetPosition": { + "x": 14218, + "y": 6351.558307533538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "communityBuildingPrograms": { + "type": "Community Building Programs", + "name": "New Community Building Programs", + "config": "{}", + "project": "Governance", + "referralProgram": { + "type": "Referral Program", + "name": "New Referral Program", + "config": "{}", + "project": "Governance", + "userReferrers": [ + { + "type": "User Referrer", + "name": "MarinitaMarina", + "config": "{}", + "project": "Governance", + "id": "84748fd0-9e15-41af-a28c-d9f321bf1afa", + "savedPayload": { + "position": { + "x": 14777.807621135331, + "y": 6721.173549804202 + }, + "targetPosition": { + "x": 14518, + "y": 6871.173549804202 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "User Profile", + "name": "MarinitaMarina", + "id": "21252c86-67c4-4b29-a5ec-d4c3abf66286" + }, + "referenceParentCombinedNodePath": [ + [ + "MarinitaMarina", + "User Profile" + ] + ] + } + } + ], + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "ba75161c-d035-4f39-8f0b-dadfde24bb9b", + "savedPayload": { + "position": { + "x": 14668, + "y": 7130.9811709395335 + }, + "targetPosition": { + "x": 14518, + "y": 6871.173549804202 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensBonus": { + "type": "Tokens Bonus", + "name": "New Tokens Bonus", + "project": "Governance", + "id": "1161aa98-cc1c-4ffc-83b5-e27b0e89ab3d", + "savedPayload": { + "position": { + "x": 14258.192378864669, + "y": 7021.173549804202 + }, + "targetPosition": { + "x": 14518, + "y": 6871.173549804202 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "7c8d0d67-2cb5-4bc0-90a5-92b123c1075d", + "savedPayload": { + "position": { + "x": 14518, + "y": 6871.173549804202 + }, + "targetPosition": { + "x": 14368, + "y": 6611.36592866887 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "174aecbe-65ec-4792-9942-a488142c9c18", + "savedPayload": { + "position": { + "x": 14368, + "y": 6611.36592866887 + }, + "targetPosition": { + "x": 14218, + "y": 6351.558307533538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "41f19b40-6a69-4456-9f33-2db82b8b1fb2", + "savedPayload": { + "position": { + "x": 14218, + "y": 6351.558307533538 + }, + "targetPosition": { + "x": 13918, + "y": 6351.558307533538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensMined": { + "type": "Tokens Mined", + "name": "New Tokens Mined", + "project": "Governance", + "id": "acdf5494-cde0-471e-b321-498710b0f4e9", + "savedPayload": { + "position": { + "x": 13618, + "y": 6351.558307533538 + }, + "targetPosition": { + "x": 13918, + "y": 6351.558307533538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "711c385c-cb76-4627-9dce-92fb13b0fd97", + "savedPayload": { + "position": { + "x": 13918, + "y": 6351.558307533538 + }, + "targetPosition": { + "x": 13918, + "y": 6351.558307533538 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } +} \ No newline at end of file From 9352dd8c9298d5ff4c4e1c9b4b7db38b212f9f55 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 6 Nov 2021 09:52:15 +0100 Subject: [PATCH 34/39] Peers connecting between each other. --- Environment.js | 2 ++ .../Network/SA/Modules/P2PNetworkPeers.js | 32 +++++++++++++++---- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/Environment.js b/Environment.js index 47627f378..f6e60b177 100644 --- a/Environment.js +++ b/Environment.js @@ -32,6 +32,8 @@ exports.newEnvironment = function () { SERVER_APP_SIGNING_ACCOUNT: 'Social-Trading-Server-App-1', PLATFORM_APP_SIGNING_ACCOUNT: 'Algo-Traders-Platform-1', P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-1', + P2P_NETWORK_NODE_MAX_INCOMING_PEERS: 2, + P2P_NETWORK_NODE_MAX_OUTGOING_PEERS: 2 } if (process.env.DATA_PATH) { diff --git a/Projects/Network/SA/Modules/P2PNetworkPeers.js b/Projects/Network/SA/Modules/P2PNetworkPeers.js index ddcc56637..0441f952a 100644 --- a/Projects/Network/SA/Modules/P2PNetworkPeers.js +++ b/Projects/Network/SA/Modules/P2PNetworkPeers.js @@ -10,24 +10,34 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP finalize: finalize } + const RECONNECT_DELAY = 10 * 1000 + let intervalIdConnectToPeers + return thisObject function finalize() { thisObject.peers = undefined + clearInterval(intervalIdConnectToPeers) } async function initialize() { - /* - On a first iteration, we will try to connect to 2 Network Peers, one upstream and one downstream, - meaning one with higher ranking that us, and the other with lower ranking than us. - */ + thisObject.peers = [] - let totalConnected = 0 + + connectToPeers() + intervalIdConnectToPeers = setInterval(connectToPeers, RECONNECT_DELAY); + + } + + async function connectToPeers() { + + if (thisObject.peers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { return } for (let i = 0; i < NT.networkNode.p2pNetwork.p2pNodesToConnect.length; i++) { - if (totalConnected === 2) { break } + if (thisObject.peers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { break } let peer = {} peer.p2pNetworkNode = NT.networkNode.p2pNetwork.p2pNodesToConnect[i] + if (isAlreadyAConnectedPeer(peer) === true) { continue } peer.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient() await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode) .then(addPeer) @@ -35,7 +45,6 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP function addPeer() { thisObject.peers.push(peer) - totalConnected++ } function onError(err) { @@ -46,5 +55,14 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP } } } + + function isAlreadyAConnectedPeer(peer) { + for (let i = 0; i < thisObject.peers.length; i++) { + let connectedPeer = thisObject.peers[i] + if (connectedPeer.p2pNetworkNode.node.id === peer.p2pNetworkNode.node.id) { + return true + } + } + } } } \ No newline at end of file From 02723165b4822b9075d574b5ec7dcbfce5416f7a Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 6 Nov 2021 10:23:24 +0100 Subject: [PATCH 35/39] Peers detecting disconnections and auto reconnecting to each other --- .../Network/SA/Modules/P2PNetworkPeers.js | 12 ++++++++- .../SA/Modules/WebSocketsNetworkClient.js | 26 +++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Projects/Network/SA/Modules/P2PNetworkPeers.js b/Projects/Network/SA/Modules/P2PNetworkPeers.js index 0441f952a..c0e32dd5b 100644 --- a/Projects/Network/SA/Modules/P2PNetworkPeers.js +++ b/Projects/Network/SA/Modules/P2PNetworkPeers.js @@ -39,7 +39,7 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP peer.p2pNetworkNode = NT.networkNode.p2pNetwork.p2pNodesToConnect[i] if (isAlreadyAConnectedPeer(peer) === true) { continue } peer.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient() - await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode) + await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode, onConnectionClosed) .then(addPeer) .catch(onError) @@ -54,6 +54,16 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP console.log('[WARN] P2P Network Peers -> onError -> Peer Not Available at the Moment -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name) } } + + function onConnectionClosed(webSocketsClientId) { + for (let i = 0; i < thisObject.peers.length; i++) { + let connectedPeer = thisObject.peers[i] + if (connectedPeer.webSocketsClient.id === webSocketsClientId) { + thisObject.peers.splice(i, 1) + return + } + } + } } function isAlreadyAConnectedPeer(peer) { diff --git a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js index c2db2516a..38fed2cea 100644 --- a/Projects/Network/SA/Modules/WebSocketsNetworkClient.js +++ b/Projects/Network/SA/Modules/WebSocketsNetworkClient.js @@ -1,6 +1,8 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWebSocketsNetworkClient() { let thisObject = { + id: undefined, + isConnected: undefined, host: undefined, port: undefined, sendMessage: sendMessage, @@ -27,20 +29,23 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb onMessageFunctionsMap = undefined } - async function initialize(callerRole, p2pNetworkNode) { + async function initialize(callerRole, p2pNetworkNode, onConnectionClosedCallBack) { web3 = new SA.nodeModules.web3() + thisObject.id = SA.projects.foundations.utilities.miscellaneousFunctions.genereteUniqueId() + thisObject.host = JSON.parse(p2pNetworkNode.node.config).host thisObject.port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort socketClient = new SA.nodeModules.ws('ws://' + thisObject.host + ':' + thisObject.port) - await setUpWebsocketClient(callerRole, p2pNetworkNode) + await setUpWebsocketClient(callerRole, p2pNetworkNode, onConnectionClosedCallBack) console.log('Websockets Client Connected to Network Node via Web Sockets .............. Connected to ' + p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + p2pNetworkNode.node.name + ' -> ' + thisObject.host + ':' + thisObject.port) + thisObject.isConnected = true } - async function setUpWebsocketClient(callerRole, p2pNetworkNode) { + async function setUpWebsocketClient(callerRole, p2pNetworkNode, onConnectionClosedCallBack) { return new Promise(connectToNewtwork) @@ -48,10 +53,11 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb try { - socketClient.onopen = () => { onConnection() } + socketClient.onopen = () => { onConnectionOpened() } + socketClient.onclose = () => { onConnectionClosed() } socketClient.onerror = err => { onError(err) } - function onConnection() { + function onConnectionOpened() { handshakeProcedure() @@ -200,6 +206,16 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb } } + function onConnectionClosed() { + if (thisObject.isConnected === true) { + console.log('Websockets Client Connected to Network Node via Web Sockets .............. Disconnected from ' + p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + p2pNetworkNode.node.name + ' -> ' + thisObject.host + ':' + thisObject.port) + } + if (onConnectionClosedCallBack !== undefined) { + onConnectionClosedCallBack(thisObject.id) + } + thisObject.isConnected = false + } + function onError(err) { if (err.message.indexOf('ECONNREFUSED') >= 0) { console.log('[WARN] Web Sockets Client -> onError -> Nobody home at ' + thisObject.host + ':' + thisObject.port) From 3270608e347cb4ac5903c610a0a3ac48491f32f5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 6 Nov 2021 11:12:17 +0100 Subject: [PATCH 36/39] Update P2PNetworkPeers.js --- .../Network/SA/Modules/P2PNetworkPeers.js | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Projects/Network/SA/Modules/P2PNetworkPeers.js b/Projects/Network/SA/Modules/P2PNetworkPeers.js index c0e32dd5b..e22197804 100644 --- a/Projects/Network/SA/Modules/P2PNetworkPeers.js +++ b/Projects/Network/SA/Modules/P2PNetworkPeers.js @@ -1,9 +1,9 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkPeers() { /* - This module represents the P2P Nodes we are connected to. + This module holds the P2P Nodes we are coonected to and that are connected to us. */ let thisObject = { - peers: undefined, + outgoingConnectedPeers: undefined, /* Framework Functions */ initialize: initialize, @@ -16,13 +16,13 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP return thisObject function finalize() { - thisObject.peers = undefined + thisObject.outgoingConnectedPeers = undefined clearInterval(intervalIdConnectToPeers) } async function initialize() { - thisObject.peers = [] + thisObject.outgoingConnectedPeers = [] connectToPeers() intervalIdConnectToPeers = setInterval(connectToPeers, RECONNECT_DELAY); @@ -31,20 +31,20 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP async function connectToPeers() { - if (thisObject.peers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { return } + if (thisObject.outgoingConnectedPeers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { return } for (let i = 0; i < NT.networkNode.p2pNetwork.p2pNodesToConnect.length; i++) { - if (thisObject.peers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { break } + if (thisObject.outgoingConnectedPeers.count >= global.env.P2P_NETWORK_NODE_MAX_OUTGOING_PEERS) { break } let peer = {} peer.p2pNetworkNode = NT.networkNode.p2pNetwork.p2pNodesToConnect[i] - if (isAlreadyAConnectedPeer(peer) === true) { continue } + if (isOutgoingConnectedPeer(peer) === true) { continue } peer.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient() await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode, onConnectionClosed) .then(addPeer) .catch(onError) function addPeer() { - thisObject.peers.push(peer) + thisObject.outgoingConnectedPeers.push(peer) } function onError(err) { @@ -56,19 +56,19 @@ exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkP } function onConnectionClosed(webSocketsClientId) { - for (let i = 0; i < thisObject.peers.length; i++) { - let connectedPeer = thisObject.peers[i] + for (let i = 0; i < thisObject.outgoingConnectedPeers.length; i++) { + let connectedPeer = thisObject.outgoingConnectedPeers[i] if (connectedPeer.webSocketsClient.id === webSocketsClientId) { - thisObject.peers.splice(i, 1) + thisObject.outgoingConnectedPeers.splice(i, 1) return } } } } - function isAlreadyAConnectedPeer(peer) { - for (let i = 0; i < thisObject.peers.length; i++) { - let connectedPeer = thisObject.peers[i] + function isOutgoingConnectedPeer(peer) { + for (let i = 0; i < thisObject.outgoingConnectedPeers.length; i++) { + let connectedPeer = thisObject.outgoingConnectedPeers[i] if (connectedPeer.p2pNetworkNode.node.id === peer.p2pNetworkNode.node.id) { return true } From 74fccfb0238abf7037e8dc8acc60845eee05726c Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 6 Nov 2021 11:49:51 +0100 Subject: [PATCH 37/39] Checking Max Amount of configured connections --- Environment.js | 1 + .../Network/NT/Modules/WebSocketsInterface.js | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/Environment.js b/Environment.js index f6e60b177..bb00891ce 100644 --- a/Environment.js +++ b/Environment.js @@ -32,6 +32,7 @@ exports.newEnvironment = function () { SERVER_APP_SIGNING_ACCOUNT: 'Social-Trading-Server-App-1', PLATFORM_APP_SIGNING_ACCOUNT: 'Algo-Traders-Platform-1', P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-1', + P2P_NETWORK_NODE_MAX_INCOMING_CLIENTS: 20, P2P_NETWORK_NODE_MAX_INCOMING_PEERS: 2, P2P_NETWORK_NODE_MAX_OUTGOING_PEERS: 2 } diff --git a/Projects/Network/NT/Modules/WebSocketsInterface.js b/Projects/Network/NT/Modules/WebSocketsInterface.js index 7374e869e..16c2593e6 100644 --- a/Projects/Network/NT/Modules/WebSocketsInterface.js +++ b/Projects/Network/NT/Modules/WebSocketsInterface.js @@ -86,6 +86,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'messageHeader Not Coorrect JSON Format.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -97,6 +98,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'messageType Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -114,6 +116,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock } response.messageId = messageHeader.messageId caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -144,6 +147,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'messageType Not Supported.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() break } } @@ -170,6 +174,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'step Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } if (messageHeader.step !== 'One' && messageHeader.step !== 'Two') { @@ -178,6 +183,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'step Not Supported.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } switch (messageHeader.step) { @@ -200,6 +206,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerRole Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -209,11 +216,41 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerRole Not Supported.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } caller.role = messageHeader.callerRole /* + We will check that we have not exeeded the max amount of callers. + */ + switch (caller.role) { + case 'Network Client': { + if (thisObject.networkClients.length >= global.env.P2P_NETWORK_NODE_MAX_INCOMING_CLIENTS) { + let response = { + result: 'Error', + message: 'P2P_NETWORK_NODE_MAX_INCOMING_CLIENTS reached.' + } + caller.socket.send(JSON.stringify(response)) + caller.socket.close() + return + } + break + } + case 'Network Peer': { + if (thisObject.networkPeers.length >= global.env.P2P_NETWORK_NODE_MAX_INCOMING_PEERS) { + let response = { + result: 'Error', + message: 'P2P_NETWORK_NODE_MAX_INCOMING_PEERS reached.' + } + caller.socket.send(JSON.stringify(response)) + caller.socket.close() + return + } + break + } + } + /* The caller needs to provide it's User Profile Handle. */ if (messageHeader.callerProfileHandle === undefined) { @@ -222,6 +259,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerProfileHandle Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -235,6 +273,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerTimestamp Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -246,6 +285,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerTimestamp Too Old.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -278,6 +318,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'Handshake Step One Not Completed.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -289,6 +330,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'signature Not Provided.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } @@ -301,6 +343,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'Bad Signature.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -314,6 +357,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'userProfile Not Found.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } let signedMessage = JSON.parse(signature.message) @@ -329,6 +373,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'signature.message Hashed Does Not Match signature.messageHash.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -341,6 +386,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'callerProfileHandle Does Not Match witnessUserProfile.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -353,6 +399,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'calledProfileHandle Does Not Match This Network Node Handle.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* @@ -364,6 +411,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock message: 'calledTimestamp Does Not Match calledTimestamp On Record.' } caller.socket.send(JSON.stringify(response)) + caller.socket.close() return } /* From e04b3613b72f57cbb7f77aa52a0c8a8c6b38fdf5 Mon Sep 17 00:00:00 2001 From: MarinitaMarina <88245524+MarinitaMarina@users.noreply.github.com> Date: Sat, 6 Nov 2021 15:03:54 +0100 Subject: [PATCH 38/39] Translation into Russian Getting Started Tutorial (Step 28-49) --- .../T/Trading/Trading-Bot/trading-bot.json | 5 +++ .../Trading-System/trading-system.json | 5 +++ .../Docs-Nodes/P/Plugins/Plugins/plugins.json | 33 +++++++++++++++++ .../D/Data/Data-Mine/data-mine.json | 5 +++ .../Indicator-Bot/indicator-bot.json | 7 +++- .../forward-testing-session.json | 5 +++ .../Market-Data-Tasks/market-data-tasks.json | 5 +++ .../paper-trading-session.json | 5 +++ .../R/Rate/Rate-Scale/rate-scale.json | 5 +++ .../T/Task/Task-Manager/task-manager.json | 5 +++ .../Schemas/Docs-Nodes/T/Task/Task/task.json | 5 +++ .../T/Time/Time-Machine/time-machine.json | 5 +++ .../T/Time/Time-Scale/time-scale.json | 5 +++ .../Timeline-Chart/timeline-chart.json | 5 +++ .../V/Viewport/Viewport/viewport.json | 5 +++ .../charting-space-005-layer-managers.json | 9 ++++- .../introduction-005-workspaces.json | 5 +++ ...-010-tutorial-step-accessing-remotely.json | 27 +++++++++----- ...gos-027-tutorial-step-more-workspaces.json | 20 +++++++++++ ...tutorial-step-the-magic-of-data-mines.json | 15 ++++++++ ...orial-step-at-the-core-of-data-mining.json | 20 +++++++++++ ...s-031-tutorial-step-are-we-up-to-date.json | 20 +++++++++++ ...ralgos-032-tutorial-step-time-to-stop.json | 25 +++++++++++++ ...-tutorial-step-careful-with-your-data.json | 35 +++++++++++++++++++ ...gos-034-tutorial-step-the-bright-side.json | 15 ++++++++ ...os-035-tutorial-step-break-on-through.json | 15 ++++++++ ...torial-step-navigating-the-white-room.json | 15 ++++++++ ...-037-tutorial-step-talkin-time-travel.json | 20 +++++++++++ ...ralgos-038-tutorial-step-bending-time.json | 20 +++++++++++ ...ralgos-039-tutorial-step-size-matters.json | 20 +++++++++++ ...tutorial-step-putting-things-in-order.json | 20 +++++++++++ ...041-tutorial-step-get-in-the-wormhole.json | 20 +++++++++++ ...os-042-tutorial-step-the-elegant-way..json | 25 +++++++++++++ ...43-tutorial-step-moving-in-wonderland.json | 20 +++++++++++ ...lgos-045-tutorial-step-unlocking-time.json | 20 +++++++++++ ...lcome-charts-scales-unlock-time-scale.json | 5 +++ ...ralgos-047-tutorial-step-scaling-time.json | 15 ++++++++ ...rial-step-playing-with-the-rate-scale.json | 15 ++++++++ ...lcome-charts-scales-unlock-rate-scale.json | 5 +++ 39 files changed, 520 insertions(+), 11 deletions(-) create mode 100644 Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugins/Plugins/plugins.json diff --git a/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json index 0fd3c906c..9cce3b5c5 100644 --- a/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json +++ b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json @@ -8,6 +8,11 @@ "language": "ES", "text": "Un Trading Bot es un programa informático que, basado en conjuntos de datos expuestos como productos por otros bots (sensores de conteo, indicadores e incluso otros trading bots ), aplica la lógica trading definida en un Trading System para, por un lado, generar una simulación de trading completa (generando conjuntos de datos que incluyen operaciones, la acción de estrategias, validación de condiciones, etc.) y, por otro lado, gestiona la ejecución de órdenes en una sesión ya sea en vivo o no.", "updated": 1624375084844 + }, + { + "language": "RU", + "text": "Торговый бот — это компьютерная программа, которая на основе наборов данных, представленных в качестве продуктов другими ботами (датчики подсчета, индикаторы и даже другие торговые боты), применяет торговую логику, определенную в торговой системе, с одной стороны, для создания полной торговой симуляции (вывод наборов данных, которые включают сделки, действие стратегий, проверку условий и т. д.), а с другой стороны, управляет исполнением ордеров во время форвардного тестирования или реальной торговой сессии.", + "updated": 1636194335057 } ] }, diff --git a/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json index f4105a061..0d27c9965 100644 --- a/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json +++ b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un trading system es un marco que maneja la lógica de bajo nivel que sirve para estructurar los procesos y métodos utilizados para implementar y desplegar estrategias de trading.", "updated": 1624375355452 + }, + { + "language": "RU", + "text": "Торговая система - это структура, управляющая логикой низкого уровня, которая служит для структурирования процессов и методов, используемых для реализации и развертывания торговых стратегий.", + "updated": 1636194401995 } ] }, diff --git a/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugins/Plugins/plugins.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugins/Plugins/plugins.json new file mode 100644 index 000000000..8b7af347d --- /dev/null +++ b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugins/Plugins/plugins.json @@ -0,0 +1,33 @@ +{ + "type": "Plugins", + "definition": { + "text": "The plugins hierarchy defines which plugins are to be included in the current workspace. In the context of this hierarchy, plugins are JSON files featuring the description of a hierarchy such as a data mine, trading mine, trading engine, or trading system.", + "translations": [ + { + "language": "ES", + "text": "The plugins hierarchy define cual plugins se incluirán en el actual workspace. En el contexto de esta jerarquía, plugins son archivos JSON con la descripción de una jerarquía como un data mine, trading mine, trading engine, o trading system.", + "updated": 1628037249031 + }, + { + "language": "RU", + "text": "Иерархия плагинов определяет, какие плагины должны быть включены в текущую рабочую область. В контексте этой иерархии плагины представляют собой файлы JSON, содержащие описание иерархии, такой как шахта данных, торговая шахта, торговый механизм или торговая система.", + "updated": 1636194488881 + } + ] + }, + "paragraphs": [ + { + "style": "Block", + "text": "Content" + }, + { + "style": "Text", + "text": "In the context of a community-driven project, a plugin is a device that serves to distribute community-generated intelligence. The project distributes several plugins contributed by the community." + }, + { + "style": "Important", + "text": "Hierarchies included in the workspace as plugins are not saved at the workspace level. As such, changes made in those hierarchies do not persist. If you wish to modify a plugin and keep working with the modified version in the future, you must either clone or backup the plugin and work on the resulting copy instead.", + "updated": 1609866745275 + } + ] +} \ No newline at end of file diff --git a/Projects/Data-Mining/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json b/Projects/Data-Mining/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json index 46082bae4..abc792516 100644 --- a/Projects/Data-Mining/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json +++ b/Projects/Data-Mining/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json @@ -8,6 +8,11 @@ "language": "ES", "text": "Un Data Mine es una jerarquía que contiene definiciones de sensor, bots indicadores, y sus trazadores. Estas definiciones se obtienen del código de dichos bots.", "updated": 1624230241851 + }, + { + "language": "RU", + "text": "Шахта данных - это иерархия, содержащая определения датчиков и ботов-индикаторов, а также их плоттеров. Эти определения взяты из фактического кода таких ботов.\n", + "updated": 1636192911774 } ] }, diff --git a/Projects/Data-Mining/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json b/Projects/Data-Mining/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json index c679cd9f9..00d9f1046 100644 --- a/Projects/Data-Mining/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json +++ b/Projects/Data-Mining/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un indicator bot es un algoritmo que procesa información que otros bots han generado y produce conjuntos de datos elaborados para que otros los consuman.", "updated": 1624496036942 + }, + { + "language": "RU", + "text": "Бот-индикатор - это алгоритм, который обрабатывает информацию, сгенерированную другими ботами, и создает сложные наборы данных для использования другими.", + "updated": 1636192708246 } ] }, @@ -42,4 +47,4 @@ "text": "codeName is the name of the bot as used within the code of the system." } ] -} +} \ No newline at end of file diff --git a/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json b/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json index fa7af8d92..af65d33bc 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/F/Forward/Forward-Testing-Session/forward-testing-session.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un forward testing session es un modo de trading mediante el cual la instancia del Trading Bot realiza transacciones en vivo con una fracción definida por el usuario del capital disponible.\n", "updated": 1624379829550 + }, + { + "language": "RU", + "text": "Сессия форвардного тестирования - это торговый режим, в котором экземпляр торгового бота выполняет реальную торговлю с определенной пользователем долей доступного капитала.", + "updated": 1636195888530 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json b/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json index c8558631a..ef074efdb 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/M/Market/Market-Data-Tasks/market-data-tasks.json @@ -7,6 +7,11 @@ "language": "ES", "text": "El nodo market data task agrupa tareas de minería de datos que operan en un mercado específico.", "updated": 1624379923791 + }, + { + "language": "RU", + "text": "Узел Задачи рыночных данных группирует задачи интеллектуального анализа данных, работающие на определенном рынке.", + "updated": 1636195923570 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json b/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json index a13ae69ca..cd97f2f31 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/P/Paper/Paper-Trading-Session/paper-trading-session.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un paper trading session es un modo de trading mediante el cual la instancia del Trading Bot lee una fuente de datos de mercado en vivo, aplica las reglas definidas en el Trading System asociado y genera una simulación de trading.", "updated": 1624379661697 + }, + { + "language": "RU", + "text": "Административная торговая сессия - это режим торговли, при котором экземпляр торгового бота считывает поток рыночных данных в реальном времени, применяет правила, определенные в соответствующей торговой системе, и генерирует торговую симуляцию.", + "updated": 1636195850621 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/R/Rate/Rate-Scale/rate-scale.json b/Projects/Foundations/Schemas/Docs-Nodes/R/Rate/Rate-Scale/rate-scale.json index df499f974..e306db720 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/R/Rate/Rate-Scale/rate-scale.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/R/Rate/Rate-Scale/rate-scale.json @@ -7,6 +7,11 @@ "language": "ES", "text": "El rate scale controla la escala del eje vertical, es decir, la escala del asset cotizado, ya sea de la máquina del tiempo o del gráfico de la línea de tiempo, dependiendo de dónde se encuentre el nodo.", "updated": 1624494681459 + }, + { + "language": "RU", + "text": "Шкала ставок управляет масштабом вертикальной оси, т.е. масштабом действующего актива, либо машины времени, либо диаграммы временной шкалы, в зависимости от того, где расположен узел.", + "updated": 1636206834295 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json index 14ad6de62..315e2f282 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task-Manager/task-manager.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un task manageres un dispositivo que se utiliza para organizar y controlar cualquier cantidad de tareas que, a su vez, controlan las instancias de bot. Utiliza un administrador de tareas para iniciar o detener varias tareas al mismo tiempo.", "updated": 1624493800354 + }, + { + "language": "RU", + "text": "Диспетчер задач - это устройство, используемое для организации и управления любым количеством задач, которые, в свою очередь, управляют экземплярами ботов. Вы используете диспетчер задач для запуска или остановки нескольких задач одновременно.\n", + "updated": 1636193320098 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json index e36f034bf..d9aea090a 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Task/Task/task.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un task es el dispositivo que se utiliza para controlar las instancias de bots, es decir, para iniciar y detener bots, incluidos sensores, indicadores y trading bots.", "updated": 1624454879222 + }, + { + "language": "RU", + "text": "Задача - это устройство, используемое для управления экземплярами ботов, то есть для запуска и остановки ботов, включая датчики, индикаторы и торгового бота.\n", + "updated": 1636193239036 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json index 8ebb02c09..862250875 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Machine/time-machine.json @@ -8,6 +8,11 @@ "text": "Un time machine sincroniza múltiples gráficos de línea de tiempo en la misma línea de tiempo. Gráficos de línea de tiempo dentro de un time machine pueden tener diferentes escalas de tasas o escalas de marco de tiempo, pero su escala de tiempo siempre coincidirá. ", "updated": 1628644798838, "style": "Definition" + }, + { + "language": "RU", + "text": "Машина времени синхронизирует несколько графиков временной шкалы на одной и той же временной шкале. Графики временной шкалы в машине времени могут иметь разные шкалы скорости или шкалы временных рамок, но их шкала времени всегда будет совпадать.", + "updated": 1636199722951 } ], "updated": 1628644911381 diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json index e96b984c2..fd27af38a 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Time/Time-Scale/time-scale.json @@ -7,6 +7,11 @@ "language": "ES", "text": "The time scale controla la escala del eje horizontal, es decir, la línea de tiempo de el time machine correspondiente y de todos los gráficos de la línea de tiempo que contiene.", "updated": 1624407014586 + }, + { + "language": "RU", + "text": "Шкала времени управляет масштабом горизонтальной оси, т.е. временной шкалой соответствующей машины времени и всех графиков временной шкалы в ней.", + "updated": 1636202596939 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json index 65fadccc6..8c04578aa 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Timeline/Timeline-Chart/timeline-chart.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un timeline chart representa un gráfico dentro de una Time Machine, que puede tener escalas de marco de tiempo y tasa independientes, así como capas particulares.", "updated": 1624406893262 + }, + { + "language": "RU", + "text": "График временной шкалы представляет собой диаграмму в машине времени, которая может иметь независимые шкалы скорости и временных рамок, а также определенные слои.", + "updated": 1636201374720 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json b/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json index 85fb56437..d109a7107 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/V/Viewport/Viewport/viewport.json @@ -7,6 +7,11 @@ "language": "ES", "text": "El viewport es una ventana a través de la cual puede mirar hacia el charting space.", "updated": 1624407113080 + }, + { + "language": "RU", + "text": "Окно просмотра - это окно, через которое Вы можете заглянуть в пространство построения графиков.", + "updated": 1636199260241 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json index 3a8b9d8b3..9f4c7a163 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json +++ b/Projects/Foundations/Schemas/Docs-Topics/C/Charting/Charting-Space/charting-space-005-layer-managers.json @@ -4,7 +4,14 @@ "type": "Layer Managers", "definition": { "text": "Layer Managers organize layers and link up to the data products to be displayed on the charts.", - "updated": 1610138345819 + "updated": 1610138345819, + "translations": [ + { + "language": "RU", + "text": "Менеджеры слоев организуют слои и связывают их с продуктами данных, которые будут отображаться на диаграммах.", + "updated": 1636205082022 + } + ] }, "paragraphs": [ { diff --git a/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json b/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json index 4e0ed8ab6..524e261aa 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json +++ b/Projects/Foundations/Schemas/Docs-Topics/I/Introduction/Introduction/introduction-005-workspaces.json @@ -10,6 +10,11 @@ "language": "ES", "text": "Workspaces son un concepto poderoso. Permiten trabajar en múltiples entornos de forma ordenada.", "updated": 1629579704727 + }, + { + "language": "RU", + "text": "Рабочие пространства - это мощная концепция. Они позволяют упорядоченно работать с несколькими настройками.", + "updated": 1636192113012 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-010-tutorial-step-accessing-remotely.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-010-tutorial-step-accessing-remotely.json index 93813c059..510f02c3b 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-010-tutorial-step-accessing-remotely.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-010-tutorial-step-accessing-remotely.json @@ -48,8 +48,9 @@ { "language": "RU", "text": "Если Вы получаете доступ к Client с того же самого устройства, то можете кликнуть на кнопку Next и пропустить этот шаг на этом этапе.", - "updated": 1635581922558}, - { + "updated": 1635581922558 + }, + { "language": "TR", "text": "İstemciye ( Client ) aynı makineden erişiyorsanız, İleri'ye tıklayıp bu adımı şimdi atlayabilirsiniz!", "updated": 1635579026048 @@ -100,8 +101,9 @@ { "language": "RU", "text": "Если Вы работаете на машине удаленно, то необходимо отрегулировать конфигурацию the Network Node перед тем, как Вы продолжите.", - "updated": 1635517885096}, - { + "updated": 1635517885096 + }, + { "language": "TR", "text": "İstemciye ( Client ) uzak bir makineden erişiyorsanız, devam etmeden önce Ağ Düğümü ( Node ) yapılandırmasını ayarlamanız gerekir.", "updated": 1635579070105 @@ -158,8 +160,9 @@ { "language": "RU", "text": "Нажмите Configure в правом верхнем углу в меню the Network Node;", - "updated": 1635517953808}, - { + "updated": 1635517953808 + }, + { "language": "TR", "text": "Ağ Düğümü menüsünün sağ üst köşesindeki Yapılandır'a ( Configure ) tıklayın.", "updated": 1635579264884 @@ -210,6 +213,11 @@ "language": "TR", "text": "Arka ucu çalıştıran makinenin IP adresi için ana bilgisayar parametresini değiştirin. Ters proxy kullanıyorsanız, \"webSocketsExternalURL\": \"wss://mydomain.com:443\" yapılandırma parametresini manuel olarak eklemelisiniz.", "updated": 1635579170033 + }, + { + "language": "RU", + "text": "Измените гостевой параметр для IP-адреса устройства, на котором выполняется серверная часть. If you use a reverse proxy you must manually add \"webSocketsExternalURL\": \"wss://mydomain.com:443\" config parameter.", + "updated": 1636194777591 } ] }, @@ -262,8 +270,9 @@ { "language": "RU", "text": "Выйдите из конфигурации, убрав указатель мыши из пузырька конфигурации! Если конфигурация происходит верно, то сообщение об ошибке в Network Node должно исчезнуть через минуту!", - "updated": 1635581935285}, - { + "updated": 1635581935285 + }, + { "language": "TR", "text": "Fare işaretçisini yapılandırma balonundan kaldırarak yapılandırmadan çıkın! Yapılandırma doğruysa, Ağ Düğümü'ndeki hata mesajı bir dakika içinde kaybolmalıdır!", "updated": 1635579204588 @@ -271,4 +280,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json index 0f9b9c7f1..2f559c89d 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-027-tutorial-step-more-workspaces.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Sistemle birlikte gönderilen Eklenti Çalışma Alanları ( Plugin Workspaces ), soldaki Çalışma Alanları (Workspaces) Sekmesinde siyah bir arka plana sahiptir. ", "updated": 1636013396906 + }, + { + "language": "RU", + "text": "\nPlugin Workspaces поставляются вместе с системой и имеют черный фон на вкладке Workspaces - слева.\n\n", + "updated": 1636192226552 } ], "updated": 1629803469668 @@ -75,6 +80,11 @@ "language": "TR", "text": "Çalışma alanları ( Workspaces ), çalışma alanına dahil edilen veri yapılarına ilişkin tüm bilgileri kaydeder.", "updated": 1636013436668 + }, + { + "language": "RU", + "text": "Workspaces сохраняют всю информацию относительно структур данных, включенных в рабочую область.", + "updated": 1636192315950 } ] }, @@ -99,6 +109,11 @@ "language": "TR", "text": "Gelin bu Plugin Workspace'in bir kopyasını oluşturalım ve sizin için yapalım! Aşağıdaki tuş kombinasyonuna basın: Ctrl + Shift + Key-S", "updated": 1636013459404 + }, + { + "language": "RU", + "text": "Давайте создадим копию этого Plugin Workspace и сделаем его вашим собственным! Нажмите следующую комбинацию клавиш: Ctrl + Shift + S.", + "updated": 1636192471516 } ] }, @@ -134,6 +149,11 @@ "language": "TR", "text": "Şimdi soldaki Çalışma Alanları Sekmesini açın, aşağı kaydırın ve mor arka plana sahip tek çalışma alanını bulun! Bu sizin çalışma alanınız! Ama üzerine tıklamanıza gerek yok!", "updated": 1636013495006 + }, + { + "language": "RU", + "text": "Теперь откройте вкладку Workspaces слева, прокрутите вниз и найдите рабочее пространство с фиолетовым фоном! Это Ваше рабочее место! Но не нужно нажимать на него!", + "updated": 1636192559470 } ], "updated": 1629803460646 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json index 46bb617b5..04105a1fa 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-029-tutorial-step-the-magic-of-data-mines.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Her pazarda, operasyon Data Mine tarafından organize edilir. Superalgos, her biri birden fazla göstergeye sahip birkaç açık kaynaklı veri madeni ile birlikte gelir.", "updated": 1636014963314 + }, + { + "language": "RU", + "text": "На каждом рынке операция организована с помощью Data Mine. Superalgos поставляется вместе с несколькими шахтами данных с открытым исходным кодом, каждая - с множеством индикаторов.\n", + "updated": 1636192680294 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Veri madenlerini, geliştiricilerin sistemin veri analiz kapasitesini genişletmek için oluşturabilecekleri eklentiler olarak düşünün. Bir Gösterge Botu ( Indicator Bot ), diğer göstergelerin ürettiği verileri işleyebilir, dolayısıyla değer katabilir ve daha derin ve daha zengin analizler üretebilir.", "updated": 1636015012141 + }, + { + "language": "RU", + "text": "Думайте о шахтах данных как о плагинах, которые разработчики могут создавать для расширения объема анализа данных системы. Indicator Bot может обрабатывать данные, которые производят другие индикаторы, производя более глубокий и насыщенный анализ.", + "updated": 1636192861205 } ] }, @@ -108,6 +118,11 @@ "language": "TR", "text": "Temel bir JavaScript bilginiz varsa, göstergeler de oluşturabilirsiniz! Bir Veri Madenine ( Data Mine ) katkıda bulunursanız, Superalgos SA Jetonları kazanırsınız!", "updated": 1636015059999 + }, + { + "language": "RU", + "text": "Если у Вас имеется базовое понимание JavaScript, Вы также можете создать индикаторы! Если Вы внесете свой вклад в Data Mine, то заработаете токены Superalgos (SA)!", + "updated": 1636193134329 } ], "updated": 1622196189467 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json index 7a392b158..97fee75ee 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-030-tutorial-step-at-the-core-of-data-mining.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Bir veri madenciliği operasyonunun özü, bot çalıştıran görevlerdir. Bir Görev, bir botu kontrol eder ve bir Görev Yöneticisi ( Tasks Manager ) birden fazla görevi kontrol edebilir.", "updated": 1636015403690 + }, + { + "language": "RU", + "text": "Ядром операции интеллектуального анализа данных являются задачи, над которыми работают боты. Одна Task управляет одним ботом, а Task Manager может управлять несколькими задачами.\n", + "updated": 1636193443379 } ] }, @@ -74,6 +79,11 @@ "language": "TR", "text": "Şimdiye kadar, veri madenciliği operasyonunuzdaki her bir botu kontrol etmek için kullanabileceğiniz altı farklı cihaz hakkında bilgi edindiniz. En üst düzeyde, Veri Görevleri (Data Tasks) düğümü, Ağ Düğümü'ndeki (Network Node) tüm veri madenciliği botlarını kontrol eder.", "updated": 1636015350802 + }, + { + "language": "RU", + "text": "К настоящему времени Вы узнали о шести различных устройствах, которые Вы можете использовать для управления каждым ботом в своей операции и нтеллектуального анализа данных. На самом высоком уровне узел Data Tasks управляет всеми ботами интеллектуального анализа данных в Network Node.", + "updated": 1636193596507 } ] }, @@ -109,6 +119,11 @@ "language": "TR", "text": "Ağ düğümleri hakkında birazdan konuşacağız...", "updated": 1636015240381 + }, + { + "language": "RU", + "text": "Мы поговорим о сетевых узлах через минуту...", + "updated": 1636193625683 } ] }, @@ -145,6 +160,11 @@ "language": "TR", "text": "En alt düzeyde, tek bir Görev (Task), tek bir botu kontrol eder. Aradaki düğümler, işlemi düzenli tutmaya yardımcı olan ve farklı bölümler üzerinde ayrıntılı kontrole izin veren organizasyon düğümleridir.", "updated": 1636015306156 + }, + { + "language": "RU", + "text": "На самом низком уровне отдельная Task управляет одним ботом. Промежуточные узлы - это организационные узлы, которые помогают поддерживать порядок в работе и позволяют осуществлять детальный контроль над различными разделами.", + "updated": 1636193720622 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json index b700454ef..91188e6cf 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-031-tutorial-step-are-we-up-to-date.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Şu anda , tüm işlemler %100 olmalıdır. Bu olduğunda, veri madenciliği operasyonuna \"güncel\" diyoruz.", "updated": 1636015455848 + }, + { + "language": "RU", + "text": "К этому моменту все процессы должны работать на 100%. Когда это происходит, мы называем операцию интеллектиуального анализа данных \"актуальной\".", + "updated": 1636193865762 } ], "updated": 1616415623576 @@ -74,6 +79,11 @@ "language": "TR", "text": "Tüm süreçler güncel olduğunda, botlar çalışmaya devam eder ve bilgiyi borsada üretildiği gibi gerçek zamanlı olarak işler. Yani, siz durdurmadığınız sürece veri madenciliği işlemi durmaz!", "updated": 1636015476681 + }, + { + "language": "RU", + "text": "Когда все процессы обновлены, боты продолжают работать, обрабатывая информацию в режиме реального времени по мере ее получения на бирже. То есть операция интеллектуального анализа данных не остановится, пока Вы ее не остановите!", + "updated": 1636194015988 } ] }, @@ -109,6 +119,11 @@ "language": "TR", "text": "Etrafınıza bakın ve tüm işlemlerin %100 olup olmadığını görün", "updated": 1636015521214 + }, + { + "language": "RU", + "text": "Оглянитесь вокруг и посмотрите, все ли процессы работают на 100%.", + "updated": 1636194193682 } ] }, @@ -144,6 +159,11 @@ "language": "TR", "text": "Canlı Alım Satım Oturumu ( Live Trading Session ) yürütmek için, Alım Satım Botunun ( Trading Bot ) canlı alım satım kararları vermek üzere Alım Satım Sisteminizin ( Trading System ) kurallarını uygulayabilmesi için, gerçek zamanlı olarak işlenen borsadan sürekli bir bilgi akışına ihtiyacınız vardır.", "updated": 1636016072081 + }, + { + "language": "RU", + "text": "...To run a Live Trading Session, you need a constant feed of information from the exchange processed in realtime so that the Trading Bot may apply the rules of your Trading System to make live trading decisions.", + "updated": 1636194159296 } ], "updated": 1616415667438 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json index e04da82b4..450cf40ea 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-032-tutorial-step-time-to-stop.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Henüz bir Canlı İşlem Oturumu ( Live Trading Session ) düzenlemeyeceğiz, bu nedenle veri madenciliğimizi bu noktada çalışır durumda tutmanın bir anlamı yok.", "updated": 1636016140799 + }, + { + "language": "RU", + "text": "Мы пока не собираемся проводить Live Trading Session, поэтому на данный момент нет смысла продолжать наш интеллектуальный анализ данных.", + "updated": 1636195299595 } ] }, @@ -74,6 +79,11 @@ "language": "TR", "text": "Veri Görevlerini çalıştırmanın iki ana kullanım durumu vardır:", "updated": 1636016174401 + }, + { + "language": "RU", + "text": "Для выполнения Data Tasks существует два основных варианта использования:", + "updated": 1636195344198 } ] }, @@ -110,6 +120,11 @@ "language": "TR", "text": "Geçmiş verileri işlemek için: Bir Geriye Dönük Test Oturumu (Backtesting Sesion ) yürütmek veya yeni göstergeleri işlemek için belirli bir Piyasanın ( Market ) bir tarih saat aralığını işlemek isteyebilirsiniz.", "updated": 1636016235514 + }, + { + "language": "RU", + "text": "Для обработки исторических данных: Вам может понадобится обработать диапазон дат и времени для любого данного Market, чтобы запустить Backtesting Session или обработать новые индикаторы.", + "updated": 1636195747856 } ] }, @@ -146,6 +161,11 @@ "language": "TR", "text": "Canlı bir oturum yürütmek için: Kağıt Alım Satım Oturumu (Paper Trading Session ), İleriye Yönelik Test Oturumu (Forward Testing Session ) ve Canlı Alım Satım Oturumu ( Live Trading Session ) gibi farklı türlerdeki oturumların tümü canlı bir piyasa akışına ihtiyaç duyar.", "updated": 1636016605221 + }, + { + "language": "RU", + "text": "Для запуска сессии в реальном времени: сессии бывают разных типов: Paper Trading Session, Forward Testing Session и Live Trading Session - это все, что необходимо для потока рынка в реальном времени.", + "updated": 1636195795182 } ] }, @@ -181,6 +201,11 @@ "language": "TR", "text": "Tüm işlemler güncel olduğunda (%100), Piyasa Veri Görevleri ( Market Data Tasks ) düğümünde \"Stop All Tasks\" seçeneğini seçin. Ek bilgi olarak, görevleri başlattığımız düğümden farklı bir düğümden durdurabileceğimizi de unutmayın.", "updated": 1636016732706 + }, + { + "language": "RU", + "text": "Когда все процессы будут обновлены, выберите \"Stop All Tasks\" в узле Market Data Tasks. Обратите внимание, что мы можем остановить задачи с другого узла, чем тот, который мы использовали для их запуска!", + "updated": 1636196044706 } ], "updated": 1622197433719 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json index 0fa0facd9..11336a2e1 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-033-tutorial-step-careful-with-your-data.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Tüm görevlerin durması bir dakika kadar sürebilir. Tüm görevler durmadan sistemi asla kapatmamalısınız.", "updated": 1636033722512 + }, + { + "language": "RU", + "text": "Для остановки всех задач может потребоваться до одной минуты. Вы никогда не должны закрывать систему до остановки всех задач.", + "updated": 1636197133652 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Görevlerin durduğunu görmek için konsol uygulamasını kontrol edin! Görevler çalışırken düğümlerin altında 1/1, 1/2 gibi kaç görev olduğu ve kaçının çalıştığına dair bir gösterge görürsünüz.", "updated": 1636033793821 + }, + { + "language": "RU", + "text": "Проверьте консольное приложение, чтобы увидеть, как прекращается процесс.", + "updated": 1636197186388 } ], "updated": 1616416021973 @@ -103,6 +113,11 @@ "language": "TR", "text": "Superalgos'u kapatmanın doğru yolu şudur:", "updated": 1636033807278 + }, + { + "language": "RU", + "text": "Правильный способ, чтобы закрыть Superalgos:", + "updated": 1636197216206 } ] }, @@ -133,6 +148,11 @@ "language": "TR", "text": "Tüm görevleri durdurun ve birkaç dakika bekleyin.", "updated": 1636033819254 + }, + { + "language": "RU", + "text": "Остановите все задачи и подождите пару минут.", + "updated": 1636197255402 } ] }, @@ -163,6 +183,11 @@ "language": "TR", "text": "Tüm görevler durduğunda konsol uygulamasını kapatabilir veya Ctrl + Key-C ile işlemi durdurabilirsiniz", "updated": 1636033864602 + }, + { + "language": "RU", + "text": "Когда все задачи остановятся, Вы можете закрыть консольное приложение или остановить процесс с помощью клавиш Ctrl + C.", + "updated": 1636197311204 } ] }, @@ -192,6 +217,11 @@ "language": "TR", "text": "Tarayıcıyı istediğiniz zaman kapatabilir ve görevlerin arka planda işlenmesini bırakabilirsiniz.", "updated": 1636033884326 + }, + { + "language": "RU", + "text": "Вы можете закрыть браузер в любой момент и остановить обработку задач в фоновом режиме.", + "updated": 1636197378582 } ] }, @@ -222,6 +252,11 @@ "language": "TR", "text": "Görevler durmadan İstemciyi ( Client ) kapatmak, verilerinizin bozulmasına neden olabilir!", "updated": 1636033906258 + }, + { + "language": "RU", + "text": "Закрытие Client до остановки всех задач может привести к повреждению Ваших данных!", + "updated": 1636197418068 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json index 67277fc2d..d31419964 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-034-tutorial-step-the-bright-side.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Şimdiye kadar Superalgos'un karanlık tarafıyla sınırlı kaldınız. Parlak tarafa maruz kalmaya hazır olun: Grafik Alanı ( Charting Space )", "updated": 1636034022706 + }, + { + "language": "RU", + "text": "До сих пор Вы были ограничены только темной стороной Superalgos. Приготовьтесь к тому, что Вас ждет яркая сторона: Charting Space.", + "updated": 1636197684784 } ] }, @@ -74,6 +79,11 @@ "language": "TR", "text": "Grafik alanı, turkuaz bir kaydırıcı ile ayrılmış tasarım alanının üstünde bulunur. Superalgos'tan beklendiği gibi, grafik alanı yapılandırılabilir ve oldukça esnektir. Orada olan her şey Grafik Alanı ( Charting Space ) hiyerarşisinde tanımlanır.", "updated": 1636034080988 + }, + { + "language": "RU", + "text": "Пространство построения графиков расположено поверх пространства дизайна, разделенного бирюзовыим ползунком. Как Вы и ожидаете от Superalgos, оно является настраиваемым и очень гибким. Все, что там происходит, определено в иерархии Charting Space.", + "updated": 1636197912680 } ] }, @@ -109,6 +119,11 @@ "language": "TR", "text": "Grafik alanı, insanların aklını başından almasıyla bilinir. Lütfen şu anda psikoaktif maddelerin etkisi altındaysanız bu eğitime devam etmekten kaçının :)", "updated": 1636034105076 + }, + { + "language": "RU", + "text": "Пространство постороения графиков известно тем, что будоражит умы людей. Пожалуйста, воздержитесь от продолжения изучения этого материала, если в настоящий момент Вы находитесь под воздействием психоактивных веществ.", + "updated": 1636198131426 } ], "updated": 1616416552336 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json index 9715c5b87..a18816fe8 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-035-tutorial-step-break-on-through.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Hiç vakit kaybetmeden dolaşarak ve çizelge alanına göz atarak sizi hızlandıracağım... Önce kaydırıcıyı ele alalım!", "updated": 1636034139286 + }, + { + "language": "RU", + "text": "Я быстро введу Вас в курс дела с перемещением и просмотром пространства для построения графиков. Давайте сначала роазберемся с ползунком..\n\n", + "updated": 1636198293137 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Tasarım alanını kapatmak ve grafik alanını açmak için turkuaz bölgeyi tıklayarak aşağıya çekin. Kapatmak için tersini yapabilirsiniz. Bunu klavyeyle yapmak için Ctrl + Shift + ↓ tuşlarına basın. ↑ ← →.. Diğer yön tuşlarını da deneyin!", "updated": 1636034296397 + }, + { + "language": "RU", + "text": "Щелкните по нему левой кнопкой мыши и перетащите вниз, чтобы закрыть область проектирования и открыть область построения графиков. Вернитесь в исходное положение. Чтобы сделать это с помощью клавиатуры, нажмите Ctrl + Shift + ↓. Попробуйте также ↑ ← → !", + "updated": 1636198484982 } ] }, @@ -108,6 +118,11 @@ "language": "TR", "text": "Her iki alanın da kısmen açık olmasına ihtiyacınız yoksa, makinenizdeki bilgi işlem kaynaklarından tasarruf etmek için her ikisini de tamamen kapatmak her zaman iyi bir fikirdir.", "updated": 1636034332675 + }, + { + "language": "RU", + "text": "До тех пор пока у Вас не появится необходимость частичного открытия обоих пространств, рекомендуется полностью закрыть каждое из них, чтобы сохранить компьютерные ресурсы на вашем устройстве.", + "updated": 1636198580623 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json index f6e70f3e2..fd242911e 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-036-tutorial-step-navigating-the-white-room.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Tasarım alanı gibi, çizelge alanı da çizelgeler oluşturabileceğiniz devasa bir alana sahiptir... donanımınızın üstesinden gelebileceği kadar!", "updated": 1636034379426 + }, + { + "language": "RU", + "text": "Как и пространство дизайна, пространство построения графиков имеет огромную область, где Вы можете создать диаграмм столько.. сколько сможет выдержать Ваше устройство!", + "updated": 1636199050252 } ] }, @@ -74,6 +79,11 @@ "language": "TR", "text": "Yeni başlayanlar için işleri basit tutmak gerektiğinden bu ( Getting Started Tutorial ) alanında yalnızca iki çizelge vardır. İleri düzey kullanıcılar, birden çok borsadan ve birden çok pazardan gelen tabloları izleyebilirler.", "updated": 1636034464247 + }, + { + "language": "RU", + "text": "Чтобы новичкам было проще, в Getting Started Tutorials workspace имеется только две диаграммы. Опытные пользователи могут отслеживать графики с множествами бирж и рынков.", + "updated": 1636199196560 } ] }, @@ -109,6 +119,11 @@ "language": "TR", "text": "Görünüm Alanında (Viewport) gezinmek için farenizi kullanarak boş alana tıklayın ve sürükleyin. Klavye ile şu tuş kombinasyonunu kullanarakta gezinebilirsin. Shift artı ok tuşları ↑ ← → ↓", "updated": 1636034607617 + }, + { + "language": "RU", + "text": "Чтобы перемещаться по Viewport, удерживайте левую кнопку мыши и перетащите пустую область. При использовании клавиатуры, воспользуйтесь комбинацией клавиш Shift + ↑ ← → ↓.", + "updated": 1636199439035 } ], "updated": 1622198195729 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json index 648ca3a1f..e467a5387 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-037-tutorial-step-talkin-time-travel.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Daha önce bahsetmiştim, bu çalışma alanında iki çizelge var. Superalgos'ta bu çizelgelerin her birine bir Zaman Makinesi ( Time Machine ) diyoruz.", "updated": 1636035055393 + }, + { + "language": "RU", + "text": "Я упоминал ранее, что в этом рабочем пространстве имеется две диаграммы. В Superalgos мы называем каждую из них - Time Machine.", + "updated": 1636199639429 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Bir zaman makinesi, bir veya daha fazla Zaman Çizelgesi Grafiği tutabilir. Onlara zaman makineleri diyoruz çünkü bir zaman makinesindeki tüm zaman çizelgeleri zamanla senkronize edilir. Zaman makinelerinin bu özelliği, aynı Zaman Ölçeğini paylaşan farklı veri katmanlarının üst üste binmesine izin verir.", "updated": 1636035067580 + }, + { + "language": "RU", + "text": "Машина времени может содержать одну или несколько Timeline Chart. Мы называем их машиной времени, потому что все графики временной шкалы в машине времени синхронизированы во времени. Эта особенность машин времени позволяет накладывать различные слои данных, используя один и тот же Time Scale.", + "updated": 1636199955416 } ] }, @@ -108,6 +118,11 @@ "language": "TR", "text": "Fare imlecinizi zaman makinelerinin üzerine getirin!", "updated": 1636035197351 + }, + { + "language": "RU", + "text": "Наведите указатель мыши на машины времени!", + "updated": 1636201484840 } ] }, @@ -144,6 +159,11 @@ "language": "TR", "text": "Sol tarafta beliren ve verilerin hangi borsalar ve pazarlarla ilişkili olduğunu gösteren etikete dikkat edin. Tek bir zaman makinesi birden fazla pazardan ve birden fazla borsadan veri tutabilir!", "updated": 1636035233840 + }, + { + "language": "RU", + "text": "Обратите внимание на появившуюся слева метку, которая указывает на то, с какими биржами и рынками связаны данные. Одна машина времени может содержать данные с множества рынков и бирж.", + "updated": 1636201607160 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json index 08dc282de..91b116fa7 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-038-tutorial-step-bending-time.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Tamam,belki zamanı bükmek gibi değil, ama inan bana bu harika birşey... Zaman makinelerini istediğin formatta şekillendirebiliyor olmana bayılacaksın.", "updated": 1636035360393 + }, + { + "language": "RU", + "text": "Хорошо... Может быть, на самом деле это и не похоже на сгибание, но потерпите.. Вам понравится, как Вы сможете сформировать машины времени в любом желаемом формате.", + "updated": 1636201767989 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Fare imlecinizi zaman makinesini tanımlayan turkuaz çerçevenin herhangi bir kenarının üzerine getirin ve ne olduğunu görün. Kenarın sarı ile nasıl vurgulandığını gördünüz mü?", "updated": 1636035384197 + }, + { + "language": "RU", + "text": "Наведите указатель мыши на любой из краев бирюзовой рамки, определяющий машину времени, и посмотрите, что произойдет. Вы видите, как край рамки выделился желтым цветом?", + "updated": 1636201897527 } ] }, @@ -108,6 +118,11 @@ "language": "TR", "text": "Güzel! Şimdi çerçeveye tıklayın ve çekin!", "updated": 1636035404981 + }, + { + "language": "RU", + "text": "Отлично! Теперь щелкните по рамке левой кнопкой мыши и потяните!", + "updated": 1636202014634 } ] }, @@ -143,6 +158,11 @@ "language": "TR", "text": "Böylece zaman makinelerini kendi zevkinize veya ihtiyacınıza göre şekillendirebilirsiniz.", "updated": 1636035425014 + }, + { + "language": "RU", + "text": "Вот как Вы можете формировать машины времени по своему нраву.", + "updated": 1636202062369 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json index 70bf5d4f6..b3a955b0a 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-039-tutorial-step-size-matters.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Zaman makinesini ekranınızın tam en boy oranına göre şekillendirmeye ne dersiniz?", "updated": 1636035470271 + }, + { + "language": "RU", + "text": "Как насчет того, чтобы настроить по форме машину времени в соответствии с правильным соотношение сторон Вашего экрана?", + "updated": 1636202464425 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Zaman makinelerinizin en boy oranını ekranınızın en boy oranıyla eşleştirmek, yakınlaştırırken grafiklerin ekranınıza sığabilmesi için çok önemlidir!", "updated": 1636035504803 + }, + { + "language": "RU", + "text": "Соответствие соотношения сторон Ваших машин времени с соотношению сторон Вашего экрана, имеет решающее значение, т.к. необходимо, чтобы диаграммы плотно прилегали к Вашему экрану при увеличении масштаба!", + "updated": 1636202715136 } ], "updated": 1622198491208 @@ -110,6 +120,11 @@ "language": "TR", "text": "Farenizi zaman makinelerinden birine yönlendirin ve Ctrl + Shift + Alt + Key-A tuşlarına basın. Aynısını diğeriyle yapın!", "updated": 1636035527567 + }, + { + "language": "RU", + "text": "Наведите курсор мыши на одну из машин времени и нажмите Ctrl + Shift + Alt + A. Сделайте то же самое с другой машиной времени.", + "updated": 1636202757134 } ] }, @@ -146,6 +161,11 @@ "language": "TR", "text": "Şu andan itibaren ekranınızın en boy oranıyla eşleşen iki zaman makinesini görmen lazım.", "updated": 1636035706936 + }, + { + "language": "RU", + "text": "С этого момента оставьте две машины времени, соответствующие соотношению сторон Вашего экрана.", + "updated": 1636202904158 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json index 658581e37..2ce5220dd 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-040-tutorial-step-putting-things-in-order.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Tablolara girmeden önce bir şey daha var. Bu alanı nasıl düzene sokacağını bilmelisin!", "updated": 1636035747714 + }, + { + "language": "RU", + "text": "Еще одна вещь, прежде чем мы погрузимся в графики: Вам необходимо знать, как привести рабочее пространство в порядок.", + "updated": 1636203040872 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Onlarca çizelge ile çalışmanız gereken zamanar gelecek. Biçimlerini nasıl değiştireceğinizi öğrenmiştik. Şimdi, ihtiyaç duyduğunuz düzenlemeleri oluşturabilmeniz için onları nasıl hareket ettireceğinizi öğrenmeniz gerekiyor. Oldukça kolay:", "updated": 1636035803888 + }, + { + "language": "RU", + "text": "Придет время, когда Вы, возможно, будете работать с десятками графиков. Вы уже знаете, как изменить их формат. Теперь необходимо научиться перемещать их так, чтобы Вы могли создавать любые необходимые Вам расположения. Это довольно просто:", + "updated": 1636203598832 } ], "updated": 1616416902513 @@ -110,6 +120,11 @@ "language": "TR", "text": "Shift 'e basın, sol tıklayın ve sürükleyin!", "updated": 1636035874767 + }, + { + "language": "RU", + "text": "Нажмите Shift, щелкните левой кнопокй мыши и перетащите!", + "updated": 1636203698066 } ] }, @@ -145,6 +160,11 @@ "language": "TR", "text": "Grafik alanını nasıl yöneteceğimizle ilgili her şeyi ele aldığımıza inanıyorum. Grafiklere dalmanın zamanı geldi!", "updated": 1636035867318 + }, + { + "language": "RU", + "text": "Я полагаю, что мы рассмотрели все о том, как управлять пространством для построенрия графиков. Пришло время погрузиться в диаграммы!", + "updated": 1636203782409 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json index 796a44aeb..8c63a0790 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-041-tutorial-step-get-in-the-wormhole.json @@ -37,6 +37,11 @@ "language": "TR", "text": "Bir Zaman Makinesine ( Time Machine ) dalıp ne olduğunu görmenin zamanı geldi! Tamamen sürükleyici bir deneyime hazır mısınız?", "updated": 1636036023943 + }, + { + "language": "RU", + "text": "Пришло время погрузиться в Time Machine и посмотреть, что произойдет! Готовы ли Вы к полоноценному погружению?", + "updated": 1636203869752 } ] }, @@ -73,6 +78,11 @@ "language": "TR", "text": "Grafik alanı, piyasa verilerinin Google Haritaları gibidir. Bildiğiniz gibi, haritalarda gezinmek için sol tıklayıp sürüklersiniz... ama detayları görmek için nasıl yakınlaştırıyorsunuz?", "updated": 1636036084427 + }, + { + "language": "RU", + "text": "Пространство для построения графиков похоже на Google Maps рыночных графиков. Как Вы уже знаете, щелкните левой кнопокй мыши и перетащите, чтобы перемещаться по ландшафту... Но как Вы увеличиваете масштаб, чтобы увидеть детали?", + "updated": 1636204134363 } ] }, @@ -108,6 +118,11 @@ "language": "TR", "text": "Farenin tekerleği ile! Dene!", "updated": 1636036095610 + }, + { + "language": "RU", + "text": "С помощью колесика мыши! Пробуйте!", + "updated": 1636204160214 } ] }, @@ -144,6 +159,11 @@ "language": "TR", "text": "Aynen öyle! Tıpkı Google Haritalar'daki gibi! Fareyi ilgilenilen alana doğrultun, ardından yakınlaştırmak için farenin tekerleğini ileri, uzaklaştırmak için geri çevirin!", "updated": 1636036116439 + }, + { + "language": "RU", + "text": "Точно! Прямо как на Google Maps! Наведите курсор мыши на интересующую Вас область, затем прокрутите колесико мыши вперед, чтобы увеличить масштаб, и назад, чтобы уменьшить.", + "updated": 1636204268639 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json index a12599183..9efbe5ecb 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-042-tutorial-step-the-elegant-way..json @@ -37,6 +37,11 @@ "language": "TR", "text": "Biliyorum! Rastgele bir noktaya zum yapmak, grafiği ekranınızla kare şeklinde konumlandırmak pek mümkün değil, değil mi? Endişelenme... bu numarayı dene!", "updated": 1636036151336 + }, + { + "language": "RU", + "text": "Я знаю! Увеличение масштаба в случайном месте вряд ли приведет Вас к тому, что диаграмма окажется в квадрате с Вашим экраном, верно? Не беспокойтесь... Попробуйте это трюк!", + "updated": 1636204552263 } ], "updated": 1616417516192 @@ -69,6 +74,11 @@ "language": "TR", "text": "En-boy oranını ayarlayın: Farenizi Backtesting Session grafiğine (üstteki) getirin ve Ctrl + Shift + Alt + Key-A tuşlarına basın", "updated": 1636036205725 + }, + { + "language": "RU", + "text": "Отрегулируйте соотношение сторон: наведите курсор мыши на график сеансов тестирования (тот, что сверху) и нажмите Ctrl + Shift + Alt + A.", + "updated": 1636204626786 } ] }, @@ -98,6 +108,11 @@ "language": "TR", "text": "Uzaklaştır: en uzak uzaklaştırma konumuna gitmek için fare tekerleğini kullanın; sadece bu konumdan sonraki komut çalışacaktır!", "updated": 1636036274866 + }, + { + "language": "RU", + "text": "Уменьшение масштаба: используйте колесико мыши, чтобы перейти в крайнее положение уменьшения масштаба, т.к. только из этого положения будет работать следующая команда!", + "updated": 1636204795612 } ] }, @@ -133,6 +148,11 @@ "language": "TR", "text": "Bir kez çift tıklayın: bu, grafiği ortalar ve sizi belirli bir yakınlaştırma düzeyine götürür; sol üst köşede grafiğin adına ve sekmesine uyacak şekilde bir kenar boşluğu bırakılır.", "updated": 1636037063264 + }, + { + "language": "RU", + "text": "Дважды щелкните один раз: это центрирует диаграмму и приведет Вас к определенному уровню масштабирования; в левом верхнем углу остается поле, соответствующее названию вкладке диаграммы.", + "updated": 1636204908775 } ], "updated": 1616418234728 @@ -169,6 +189,11 @@ "language": "TR", "text": "Tekrar çift tıklayın: bu sizi grafikte daha ileri götürür, grafiğin ekrana tam olarak oturduğu ve Katman Yöneticilerinin ortaya çıktığı yakınlaştırma düzeyine gidersiniz.", "updated": 1636037090275 + }, + { + "language": "RU", + "text": "Дважды щелкните еще раз: это поведет Вас дальше по диаграмме, к уровню масштабирвания, при котором диаграмма идеально соответствует экрану и появятся Layer Managers.", + "updated": 1636204981598 } ], "updated": 1622198926988 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json index 4099eefbd..a190b43f5 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-043-tutorial-step-moving-in-wonderland.json @@ -36,6 +36,11 @@ "language": "TR", "text": "Sonunda bir grafiğin içindesiniz. Yapmak isteyeceğiniz ilk şey, etrafta dolaşmak ve bu çizelgelerin sizin için neler yapabileceğini öğrenmek.", "updated": 1636092060224 + }, + { + "language": "RU", + "text": "Итак, наконец-то, Вы находитесь внутри диаграммы. Первое, что Вым захочется сделать - это осмотреться и узнать, что эти диаграммы могут сделать для Вас.", + "updated": 1636205299823 } ] }, @@ -71,6 +76,11 @@ "language": "TR", "text": "Bununla devam edelim! Tasarım alanında olduğu gibi, bir zaman makinesinin içindeykende farenizi ve klavyenizi kullanarak hareket edersiniz. Nasıl?", "updated": 1636092104788 + }, + { + "language": "RU", + "text": "В заключении процесса! Как и в пространстве дизайна, когда Вы находитесь внутри машины времени, Вы перемещаетесь с помощью мыши и клавиатуры. Как это происходит:", + "updated": 1636205706347 } ] }, @@ -105,6 +115,11 @@ "language": "TR", "text": "Fare ile sol tıklayın ve sürükleyin. Klavye ile ok tuşlarını kullanın: ← → ↑ ↓", "updated": 1636092129919 + }, + { + "language": "RU", + "text": "С помощью мыши: щелкните левой кнопкой мыши и перетащите. С помощью клавиатуры: используйте клавиши со стрелками ← → ↑ ↓.", + "updated": 1636205526304 } ] }, @@ -139,6 +154,11 @@ "language": "TR", "text": "Ne? Çalışmıyor mu? Donmuş bir çizelgeye mi takıldınız? Bir sonraki adımdaki videodaki gibi mi? Merak etme! Neler olduğunu biliyorum...", "updated": 1636092166517 + }, + { + "language": "RU", + "text": "Что? Это не работает? У Вас все еще заморожен график как на видео в следующем шаге? Не беспокойтесь! Я знаю, что происходит.", + "updated": 1636205608008 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json index 3134599c6..d6f9ea8ac 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-045-tutorial-step-unlocking-time.json @@ -30,6 +30,11 @@ "language": "TR", "text": "Hareket edememenizin nedeni, ilk veri madenciliği işleminizden sonra verileri kolayca bulabilmeniz için skalanın otomatik modda kilitli olmasıdır.", "updated": 1636093218029 + }, + { + "language": "RU", + "text": "Причина, по которой Вы не можете перемещаться заключатеся в том, что весы заблокированы в автоматическом режиме, чтобы Вы могли легко найти данные после первой операции интеллектуального анализа данных.", + "updated": 1636205935534 } ] }, @@ -59,6 +64,11 @@ "language": "TR", "text": "Zaman Ölçeğini ( Time Scale ) otomatik modda ayarlamak, mevcut verilerin tümünün tarih-saat aralığında gösterilmesine zorlar.", "updated": 1636093070726 + }, + { + "language": "RU", + "text": "Установка Time Scale в автоматическом режиме приводит к тому, что на диаграмме отображается весь диапазон доступных данных по дате и времени.", + "updated": 1636205990780 } ] }, @@ -87,6 +97,11 @@ "language": "TR", "text": "Otomatik mod ve manuel mod arasında geçiş yapmak için Shift 'e basın ve farenizin tekerleği ile zaman ölçeği kutusunun üzerinde birkez döndürün. Alternatif olarak, fare işaretçisini ölçek kutusunun üzerine getirebilir ve yukarı ve aşağı ok tuşlarına ↑ ↓ basabilirsiniz.", "updated": 1636093154603 + }, + { + "language": "RU", + "text": "Чтобы переключаться между различным автоматическим и ручным режимами, нажмите Shift и сделайте плавный одношаговый поворот колесиком мыши в верхней части окна шкалы времени. Кроме того, Вы также можете поместить указатель мыши на окно масштаба и нажать клавиши со стрелками ↑ ↓.", + "updated": 1636206214736 } ], "updated": 1622199287763 @@ -117,6 +132,11 @@ "language": "TR", "text": "Artık X ekseninde , yani grafiğin zaman ekseninde serbestçe hareket edebilmeniz gerekir.", "updated": 1636093193714 + }, + { + "language": "RU", + "text": "Теперь Вы должны иметь возможность сободно перемещаться по оси Х, т.е. по временной оси графика.", + "updated": 1636206261878 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json index 18ae41130..70a88a868 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-046-tutorial-step-welcome-charts-scales-unlock-time-scale.json @@ -20,6 +20,11 @@ "language": "TR", "text": "Zaman skalasının üzerine gelin ve fare tekerleğini birkez çevirin.", "updated": 1636093721117 + }, + { + "language": "RU", + "text": "Этот шаг воспроизводит видео в полноэкранном режиме.", + "updated": 1636206314181 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json index 3aff988f7..e3d1c977b 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-047-tutorial-step-scaling-time.json @@ -30,6 +30,11 @@ "language": "TR", "text": "Önceki videodan zamanı ölçeklendirmesini nasılçalıştığını anlayabildiniz mı? Eğer teredütünüz varsa önceki adıma gidin ve dikkatlice izleyin!", "updated": 1636094066007 + }, + { + "language": "RU", + "text": "Вы уловили это трюк для масштабирования времени из предыдущего видео? Если нет, перейдите к предыдущему шагу и внимательно посмотрите.", + "updated": 1636206379436 } ] }, @@ -59,6 +64,11 @@ "language": "TR", "text": "Farenin tekerleğini zaman ölçeği kutusunun üzerinde kaydırmak, zamanı küçültür ve genişletir! Alternatif olarak, fareyi ölçek kutusuna yönlendirebilir ve yan ok tuşlarına basabilirsiniz ← →", "updated": 1636094091641 + }, + { + "language": "RU", + "text": "Прокрутка колесика мыши в верхней части окна шкалы времени уменьшает и увеличивает время! Кроме того, Вы можете навести курсор мыши на шкалу и нажать боковые клавиши со стрелками ← →.", + "updated": 1636206456010 } ], "updated": 1616495837967 @@ -88,6 +98,11 @@ "language": "TR", "text": "Önceki videoda dikkat çeken ilginç bir ayrıntı daha var: zaman ölçeği otomatik moddan çıktığında, otomatik ölçeğin her iki tafafını gösteren iki küçük yeşil üçgen kaybolur! ", "updated": 1636094195564 + }, + { + "language": "RU", + "text": "В предыдущем видео есть одна интересная деталь: когда шкала времени выходит из автоматического режима, два крошечных зеленых треугольника, указывающих на каждый конец автоматической шкалы, - исчезают! Масштаб может быть установлен на автоматический как с одной, так или с обеих сторон.", + "updated": 1636206743590 } ], "updated": 1616504911488 diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json index 66ef52b11..9267c4b00 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-048-tutorial-step-playing-with-the-rate-scale.json @@ -30,6 +30,11 @@ "language": "TR", "text": "Size Fiyat Ölçeğinin nasıl çalıştığını söylememe gerek var mı yoksa kendi başınıza çözebilir misiniz? Tamam... Sana bir ipucu vereceğim...", "updated": 1636094814213 + }, + { + "language": "RU", + "text": "Необходимо ли мне рассказать Вам, как работает Rate Scale, или Вы можете разобраться в этом самостоятельно? Хорошо... Я дам Вам подсказку...", + "updated": 1636206915335 } ] }, @@ -59,6 +64,11 @@ "language": "TR", "text": "Fiyat ölçeği, zaman ölçeği gibi çalışır, ancak klavyeyi kullanırken ok tuşlarını tersini kullanmanız gerekir! Otomatik modlar arasında geçiş yapmak için sol ve sağ okları ← → ve ölçeği etkilemek için yukarı ve aşağı okları ↑ ↓ kullanın! Anlamak için bir sonraki videoyu kontrol edin!", "updated": 1636094888142 + }, + { + "language": "RU", + "text": "Шкала ставок работает так же, как и шкала времени, но при использовании клавиатуры, Вам необходимо поменять местами клавиши со стрелками. Используйте стрелки ← → для переключения между автоматическими режимами и стрелки ↑ ↓ - для изменения масштаба! Проверьте следующее видео для большей ясности!", + "updated": 1636207110611 } ], "updated": 1616505192799 @@ -88,6 +98,11 @@ "language": "TR", "text": "Yarı otomatik ölçek modlarıyla da oynayın! Fare tekerleğinin birkaç hareketinin ardından tek bir küçük üçgen görünür kaldığında yarı otomatik moddasınızdır.", "updated": 1636094932757 + }, + { + "language": "RU", + "text": "Поиграйте с полуавтоматическими масштабными моделями! Вы знаете, когда один крошечный треугольник остается видимым после нескольких щелчков колесика мыши.", + "updated": 1636207203334 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json index 5b2f6d18b..b6388c6fe 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-049-tutorial-step-welcome-charts-scales-unlock-rate-scale.json @@ -20,6 +20,11 @@ "language": "TR", "text": "Bu adımda bir video izleyeceksiniz.", "updated": 1636094992004 + }, + { + "language": "RU", + "text": "Этот шаг воспроизводит видео в полноэкранном режиме.", + "updated": 1636207242104 } ] }, From 5013392681f65c51d4350d1d44f1a8b266acd7a1 Mon Sep 17 00:00:00 2001 From: prepheadrus <83468174+prepheadrus@users.noreply.github.com> Date: Sat, 6 Nov 2021 17:10:11 +0300 Subject: [PATCH 39/39] This is my contribution to Superalgos --- ...tutorial-step-getting-to-the-fun-bits.json | 20 +++++++++++++++++++ ...torial-step-what-is-it-we-are-testing.json | 15 ++++++++++++++ ...71-tutorial-step-green-silver-bullets.json | 15 ++++++++++++++ ...algos-072-tutorial-step-sell-it-quick.json | 20 +++++++++++++++++++ ...073-tutorial-step-shall-we-dig-deeper.json | 20 +++++++++++++++++++ ...-074-tutorial-step-whos-keeping-score.json | 10 ++++++++++ ...utorial-step-the-power-of-data-mining.json | 15 ++++++++++++++ ...utorial-step-find-the-logic-challenge.json | 20 +++++++++++++++++++ ...077-tutorial-step-heres-how-it-works..json | 15 ++++++++++++++ ...s-078-tutorial-step-come-meet-someone.json | 15 ++++++++++++++ ...algos-079-tutorial-step-formulations..json | 15 ++++++++++++++ 11 files changed, 180 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-069-tutorial-step-getting-to-the-fun-bits.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-069-tutorial-step-getting-to-the-fun-bits.json index 89d65e020..a958c7777 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-069-tutorial-step-getting-to-the-fun-bits.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-069-tutorial-step-getting-to-the-fun-bits.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Ich habe mir die Freiheit genommen, Sie zu einem bestimmten Zeitpunkt zu bringen, der interessant für das ist, was jetzt kommt.", "updated": 1634222639833 + }, + { + "language": "TR", + "text": "Sizi zaman içinde belirli bir ana getirme cüretinde bulundum, bundan sonra gelecekte ilginç.", + "updated": 1636180974748 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Sie werden nun die Schönheit von Simulationen kennen lernen. Bin ich eine Simulation? Sind Sie eine? Ist die ganze Sache real?", "updated": 1634222646214 + }, + { + "language": "TR", + "text": "Simülasyonların güzelliğine maruz kalmak üzeresiniz. Ben bir simülasyon muyum? Bütün bunlar gerçek mi?", + "updated": 1636181003797 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Schauen Sie sich um und entscheiden Sie selbst!", "updated": 1634222649291 + }, + { + "language": "TR", + "text": "Etrafınıza bakın ve kendiniz karar verin!", + "updated": 1636181015871 } ] }, @@ -95,6 +110,11 @@ "language": "DE", "text": "Beachten Sie zunächst, dass Sie sich jetzt im 1-Minuten-Zeitrahmen befinden, es handelt sich also um 1-Minuten-Kerzen. Die Zeitspanne auf Ihrem Bildschirm ist etwas mehr als eine Stunde, zu Beginn des 1. September 2020.", "updated": 1634222657547 + }, + { + "language": "TR", + "text": "Her şeyden önce, 1 dakikalık zaman diliminde olduğunuza dikkat edin, bu nedenle bunlar 1 dakikalık mumlardır.", + "updated": 1636181143231 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-070-tutorial-step-what-is-it-we-are-testing.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-070-tutorial-step-what-is-it-we-are-testing.json index a9c45b5c8..d8c1046c4 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-070-tutorial-step-what-is-it-we-are-testing.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-070-tutorial-step-what-is-it-we-are-testing.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Wir haben einen Backtest durchgeführt, aber wir haben noch nicht über das Trading System gesprochen, das wir testen! Lassen Sie uns die Grundlagen durchgehen!", "updated": 1634222921349 + }, + { + "language": "TR", + "text": "Bir geriye dönük test yaptık ama test ettiğimiz Ticaret Sistemini ( Trading System )tartışmadık! Temel bilgileri gözden geçirelim!", + "updated": 1636201414712 } ] }, @@ -50,6 +55,11 @@ "language": "DE", "text": "Die Handelsidee ist, \"the falling knife\" zu kaufen und \"den Rebound\" zu verkaufen. Die Strategie platziert eine Limit Buy Order mit einem Abstand unter dem Preis. Wenn die Order nicht bis zur nächsten Minute ausgeführt wird, wird sie storniert und eine neue Order platziert, möglicherweise zu einem angepassten Kurs. Wenn der Kurs plötzlich fällt, besteht die Chance, dass der Auftrag ausgeführt wird. In diesem Fall versucht die Strategie, zu einem höheren Preis zu verkaufen.", "updated": 1634222949643 + }, + { + "language": "TR", + "text": "Ticaret fikri \"düşen bıçağı\" satın almak ve \"geri tepkiyi\" satmaktır. Strateji, fiyatın biraz altına bir Limitli Alış Emri ( Limit Buy Order ) yerleştirir. Emir bir sonraki dakikaya kadar yerine getirilmezse, emir iptal edilir ve potansiyel olarak ayarlanmış bir oranda yeni bir emir verilir. Fiyat aniden düşerse, siparişin doldurulma ihtimali vardır. Bu olursa, strateji daha yüksek bir fiyattan satmaya çalışır.", + "updated": 1636201723387 } ] }, @@ -78,6 +88,11 @@ "language": "DE", "text": "Wir wollen hier nicht über die Vorzüge der Handelsidee diskutieren, sondern über die Umsetzung. Dies ist nur eine Demo, um die Fähigkeiten des Trading Bot zu zeigen, nicht die Strategie an sich.", "updated": 1634222957739 + }, + { + "language": "TR", + "text": "Ticaret fikrinin esasını değil, uygulamasını tartışalım. Bu, kendi başına stratejiyi değil, Ticaret Botunun kapasitelerini gösteren bir demodur. Bu strateji doğru olmaya bilir, ya da beğenmeyebilirsiniz. Kendi fikirlerinizle yeni stratejiler oluşturabilirsiniz.", + "updated": 1636201810582 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-071-tutorial-step-green-silver-bullets.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-071-tutorial-step-green-silver-bullets.json index dcae2f0fb..09190a171 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-071-tutorial-step-green-silver-bullets.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-071-tutorial-step-green-silver-bullets.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Sehen Sie die grünen Kugeln mit einem L in der Mitte? Das sind die erwähnten limitierten Kaufaufträge.", "updated": 1634224261070 + }, + { + "language": "TR", + "text": "Ortasında \"L\" olan yeşil mermileri görüyor musunuz? Bahsettiğim limit alış emirleri bunlar.", + "updated": 1636203165068 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Beachten Sie, dass jede Minute ein Auftrag erteilt wird, der storniert wird, bevor ein neuer Auftrag erteilt wird. Erkennen Sie das Symbol für die Auftragsstornierung? Es ist die kleinere, dunklere Kugel mit einem weißen horizontalen Streifen in der Mitte!", "updated": 1634224270895 + }, + { + "language": "TR", + "text": "Her dakika bir siparişin nasıl verildiğine ve yeni bir sipariş verilmeden önce iptal edildiğine dikkat edin. Sipariş iptali sembolünü tanıyor musunuz? Ortasında beyaz yatay şerit bulunan daha küçük, daha koyu mermi!", + "updated": 1636203192290 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Beachten Sie, dass das \"Knife\" um 00:21 Uhr gefallen ist! Der Preis fiel deutlich unter den Kurs der Limit-Order, daher wurde die Order ausgeführt! Das zeigt der größere, gefüllte, grüne Punkt an!", "updated": 1634224312254 + }, + { + "language": "TR", + "text": "Fiyatın 00:21'de düştüğüne dikkat edin! Fiyat, limit emrinin oranının çok altına düştü, bu nedenle emir yerine getirildi! Daha büyük, dolu yeşil mermi bunu gösteriyor!", + "updated": 1636203809456 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-072-tutorial-step-sell-it-quick.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-072-tutorial-step-sell-it-quick.json index 65995633b..411e0bb37 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-072-tutorial-step-sell-it-quick.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-072-tutorial-step-sell-it-quick.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Sicherlich haben Sie bemerkt, dass es keine limitierten Kaufaufträge mehr gibt, nachdem der Auftrag ausgeführt wurde. Stattdessen tauchen jetzt Verkaufsaufträge auf!", "updated": 1634224422014 + }, + { + "language": "TR", + "text": "Sipariş doldurulduktan sonra artık limit satın alma emri olmadığını fark etmişsinizdir. Bunun yerine, satış emirleri ortaya çıkmaya başlar!", + "updated": 1636203864365 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Beachten Sie, dass der erste Limit Sell Order um 00:22 Uhr platziert wird, eine Minute nachdem der Kaufauftrag ausgeführt wurde!", "updated": 1634224435222 + }, + { + "language": "TR", + "text": "İlk Limitli Satış Emrinin ( Limit Sell Order ), alış emrinin doldurulmasından bir dakika sonra 00:22 AM'de nasıl verildiğine dikkat edin!", + "updated": 1636203947395 } ] }, @@ -73,6 +83,11 @@ "language": "DE", "text": "Das ist die gleiche Minute, in der Superalgos die Nachricht von der Börse erhalten hätte, dass die Order ausgeführt wurde. Der Trading Bot verbindet sich mit der Börse und durchläuft zwei verschiedene Zyklen.", "updated": 1634224443687 + }, + { + "language": "TR", + "text": "Superalgos'un borsadan siparişin doldurulduğuna dair bildirim almasıyla aynı dakika. Trading Bot, borsa ile bağlantı kurar ve iki farklı döngüden geçer.", + "updated": 1636203973992 } ] }, @@ -96,6 +111,11 @@ "language": "DE", "text": "Im ersten Cycle informiert er sich über den Status der bestehenden Aufträge. Im zweiten Zyklus gibt er neue Anweisungen.", "updated": 1634224454050 + }, + { + "language": "TR", + "text": "İlk Döngüde mevcut siparişlerin durumunu öğrenir. İkincisinde yeni talimatlar verir.", + "updated": 1636203996665 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-073-tutorial-step-shall-we-dig-deeper.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-073-tutorial-step-shall-we-dig-deeper.json index ed7cd0801..4b6f1d8d6 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-073-tutorial-step-shall-we-dig-deeper.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-073-tutorial-step-shall-we-dig-deeper.json @@ -26,6 +26,11 @@ "language": "DE", "text": "Die Logik, die hinter der Platzierung von Kaufaufträgen steht, wird durch die Widerstände und Unterstützungen des Indikator-Bots aus der Masters Data Mine beeinflusst, die Sie zuvor durchgeführt haben.", "updated": 1634224529417 + }, + { + "language": "TR", + "text": "Satın alma emirlerinin verilmesinin ardındaki mantık, şöyle çalışır. Daha önce çalıştırdığınız Masters Data Mine'daki Dirençler ve Destekler botundan etkilenir.", + "updated": 1636204198637 } ] }, @@ -50,6 +55,11 @@ "language": "DE", "text": "Ich habe mir die Freiheit genommen, den Supports-Layer einzuschalten, um Ihnen diese Schönheit zu zeigen... Ich hoffe, es macht Ihnen nichts aus!", "updated": 1634224537478 + }, + { + "language": "TR", + "text": "Size bu güzelliği göstermek için Destekler katmanını açtım... Umarım sakıncası yoktur!", + "updated": 1636204235468 } ] }, @@ -73,6 +83,11 @@ "language": "DE", "text": "Der Indikator identifiziert Niveaus (Preisbereiche), auf denen der Preis abgelehnt wird, und führt einen Zähler, der anzeigt, wie viele Ablehnungen auftreten, bis das Niveau durchbrochen wird.", "updated": 1634224594321 + }, + { + "language": "TR", + "text": "Gösterge, fiyatın reddedildiği seviyeleri (fiyat aralıkları) tanımlar ve seviye ihlal edilene kadar kaç ret gerçekleştiğinin bir sayacını tutar.", + "updated": 1636204267357 } ] }, @@ -96,6 +111,11 @@ "language": "DE", "text": "Die Art und Weise, wie die Niveaus auf dem Bildschirm dargestellt werden, variiert mit der Anzahl der Ablehnungen, die das Niveau erlebt hat, und gibt uns einen visuellen Anhaltspunkt dafür, wie stark jedes Unterstützungsniveau sein kann. Sobald ein Niveau durchbrochen wird, verschwindet es.", "updated": 1634224586403 + }, + { + "language": "TR", + "text": "Seviyelerin ekranda gösterilme şekli, seviyenin tanık olduğu reddedilmelerin sayısına göre değişir ve bize her bir destek seviyesinin ne kadar güçlü olabileceğine dair görsel bir ipucu verir. Bir seviye ihlal edildiğinde, kaybolur.", + "updated": 1636204288960 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-074-tutorial-step-whos-keeping-score.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-074-tutorial-step-whos-keeping-score.json index c5a1bc469..63f1bc4d6 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-074-tutorial-step-whos-keeping-score.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-074-tutorial-step-whos-keeping-score.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Schauen Sie sich die folgende Tabelle an und versuchen Sie, die in den Diagrammen angegebenen Unterstützungsniveaus zu interpretieren.", "updated": 1634224665354 + }, + { + "language": "TR", + "text": "Aşağıdaki tabloyu kontrol edin ve grafiklerde gördüğünüz destek seviyelerini yorumlayın. Her seviye ihlalinde barın rengi değişir. Örneğin Seviye 5 defa ihlal edilmişse yeşil renkli olur.", + "updated": 1636204496181 } ] }, @@ -53,6 +58,11 @@ "language": "DE", "text": "
Bei einem neuen Unterstützungsniveau mit einer Ablehnung markiert die gepunktete Linie das genaue Niveau, an dem der Kurs abgeprallt ist. Bei weiteren Ablehnungen markieren die Blöcke die Kursbereiche, auf denen nachfolgende Ablehnungen gezählt werden.", "updated": 1634224722087 + }, + { + "language": "TR", + "text": "Reddedilen yeni bir destek seviyesi (noktalı çizgi ile ifade edilir), fiyatın sıçradığı tam seviyeyi gösterir. Daha sonraki retler için bloklar kullanılır ve sayıya göre renklendirilir.", + "updated": 1636204639724 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-075-tutorial-step-the-power-of-data-mining.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-075-tutorial-step-the-power-of-data-mining.json index 50f5635fe..05a78de2d 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-075-tutorial-step-the-power-of-data-mining.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-075-tutorial-step-the-power-of-data-mining.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Warum springen die Pegel hoch und runter? Es gibt etwas, das ich Ihnen noch nicht gesagt habe, denn ich fürchte, es könnte Sie umhauen!", "updated": 1634225275729 + }, + { + "language": "TR", + "text": "Seviyeler neden yukarı ve aşağı zıplıyor? Sana henüz söylemediğim bir şey var, bu aklını başından alacak.", + "updated": 1636205310660 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Der Bot verfolgt alle Unterstützungsniveaus seit Beginn des Datensatzes, zeigt Ihnen aber nur die fünf Niveaus, die dem aktuellen Kurs am nächsten liegen.", "updated": 1634225279501 + }, + { + "language": "TR", + "text": "Bot, veri kümesinin başlangıcından bu yana tüm destek seviyelerini canlı olarak takip eder, ancak size yalnızca mevcut fiyata en yakın beş seviyeyi gösterir.", + "updated": 1636205332521 } ] }, @@ -73,6 +83,11 @@ "language": "DE", "text": "Die Verfolgung von Informationen über die gesamte Spanne des Datensatzes - die Jahre zählen kann - ist der außerordentliche Wert des Data Mining, und die Art von Dingen, die Sie nicht in der Lage wären, mit einer Funktion zu berechnen, on the fly. Der Plotter, der mit dem Indicator Bot verbunden ist, zeigt dynamisch die fünf Unterstützungsebenen an, die dem Preis am nächsten liegen, weil dies die relevanten Ebenen für den Kontext sind, und so ist der Plotter aufgebaut!", "updated": 1634225288547 + }, + { + "language": "TR", + "text": "Veri kümesinin tüm aralığı için - ki bu yılları içerebilir - bilgi kaydını tutmak, veri madenciliğinin olağanüstü değeridir ve bir fonksiyonla anında hesaplayamayacağınız türden şeylerdir. Gösterge Botu ile ilişkili Plotter, fiyata en yakın beş destek seviyesini dinamik olarak gösterir, çünkü bunlar durum için ilgili seviyelerdir ve çizici bu şekilde inşa edilmiştir!", + "updated": 1636205604729 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json index 74784aaf8..b90529130 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json @@ -25,6 +25,11 @@ "language": "DE", "text": " Jetzt, wo Sie wissen, wie der Indikator funktioniert, können Sie die Beziehung zwischen Kaufaufträgen und Unterstützungsniveaus finden?", "updated": 1634225345768 + }, + { + "language": "TR", + "text": "Artık göstergenin nasıl çalıştığını bildiğinize göre, satın alma siparişleri ile destek seviyeleri arasındaki ilişkiyi bulabilir misiniz?", + "updated": 1636205670836 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Nehmen Sie sich etwas Zeit, um den getesteten Zeitraum zu untersuchen und nach Hinweisen darauf zu suchen, wie die Unterstützungsniveaus den Kurs der Limit Buy Order bestimmen!", "updated": 1634225355612 + }, + { + "language": "TR", + "text": "Destek seviyelerinin Limitli Alış Emri oranını nasıl belirlediğine dair ipuçlarını aramak ve test edilen süreyi keşfetmek için biraz zaman ayırın!", + "updated": 1636206011307 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Es macht Spaß, zu beobachten, wie sich neue Niveaus bilden, wenn der Preis seine Richtung ändert, und wie ein etabliertes Niveau seine Farbe ändert, wenn der Preis von ihm abprallt.", "updated": 1634225362477 + }, + { + "language": "TR", + "text": "Fiyat yön değiştirdiğinde yeni seviyelerin nasıl oluştuğunu ve fiyat sıçradığında yerleşik bir seviyenin nasıl renk değiştirdiğini fark etmek eğlencelidir.", + "updated": 1636206057671 } ] }, @@ -95,6 +110,11 @@ "language": "DE", "text": "Der Trick besteht darin, die Niveaus oberhalb der Order zu zählen!", "updated": 1634225370008 + }, + { + "language": "TR", + "text": "Ancak işin püf noktası, sıranın üzerindeki seviyeleri saymakta yatar!", + "updated": 1636206075760 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json index feb908480..8d3997fd3 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json @@ -25,6 +25,11 @@ "language": "DE", "text": "Haben Sie es? Der Trading Bot platziert die Limit Buy Order auf der vierten Unterstützungsebene! Was ist die Logik dahinter?", "updated": 1634225434245 + }, + { + "language": "TR", + "text": "Trading Bot 'u, Limit Satın Alma Emri'ni ( Limit Buy Order ) dördüncü destek seviyesine yerleştirir! Bunun arkasındaki mantık nedir?", + "updated": 1636206183071 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Es ist etwas willkürlich, aber die Strategie definiert ein \"fallendes Messer\" als eine Preisaktion, die in der Lage ist, mindestens drei Unterstützungsniveaus zu durchbrechen und das vierte innerhalb einer einzigen Minute zu erreichen. Statistisch gesehen führen solche Ereignisse in diesem Zeitrahmen zu mehr Abprallern als Fortsetzungen. Sie können durch große Marktaufträge verursacht werden, die die Geld-Brief-Spanne im Orderbuch vorübergehend vergrößern.", "updated": 1634225456180 + }, + { + "language": "TR", + "text": "Bu biraz keyfi bir durumdur, ancak strateji, düşen bıçağı (fiyatın ani düşüşünü), tek bir dakika içinde en az üç destek seviyesini aşabilen ve dördüncü seviyeye ulaşabilen fiyat hareketi olarak tanımlar. İstatistiksel olarak, bu tür olaylar - bu zaman çerçevesinde - sürekli daha fazla sıçrama üretir. Emir defterindeki alış/satış farkını geçici olarak artıran büyük piyasa emirlerinden kaynaklanabilirler.", + "updated": 1636206270568 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Nehmen Sie sich eine Minute Zeit, um zu überprüfen, ob Kaufaufträge auf der vierten Unterstützungsebene platziert werden!", "updated": 1634225445485 + }, + { + "language": "TR", + "text": "Satın alma siparişlerinin dördüncü destek seviyesinde verildiğini doğrulamak için bir dakikanızı ayırın!", + "updated": 1636206291919 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json index 691f0933e..d1bc69428 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json @@ -25,6 +25,11 @@ "language": "DE", "text": "Entschuldigen Sie, dass ich Sie von den Charts weggezerrt habe, aber ich wollte Ihnen jemanden vorstellen: Der Typ rechts ist derjenige, der die Kaufaufträge erteilt!", "updated": 1634225548501 + }, + { + "language": "TR", + "text": "Sizi grafiklerden uzaklaştırdığım için özür dilerim ama sizi biriyle tanıştırmak istedim: satın alma siparişlerini veren kişi sağdaki adam!", + "updated": 1636206465488 } ] }, @@ -49,6 +54,11 @@ "language": "DE", "text": "Wir befinden uns im Lightning Strike Trading System, innerhalb der Definitionen der Open Stage. In dieser Phase übernimmt der Execution Algorithm, nachdem die Entscheidung, eine Position einzugehen, bereits in der Trigger Stage getroffen wurde. Ich weiß, dass Sie immer noch nicht wissen, was eine Situation oder eine Condition ist, aber ich möchte, dass Sie trotzdem etwas tun...", "updated": 1634225553603 + }, + { + "language": "TR", + "text": "Lightning Strike Trading Sisteminin ( Trading System ), Open Stage tanımları içerisindeyiz. Bu aşamada, Tetik Aşamasında pozisyon alma kararı verildikten sonra Yürütme Algoritması ( Execution Algorithm ) devreye girer. Hala bir Durum ( Situation ) veya Koşulun ( Condition ) ne olduğunu bilmediğini biliyorum, ama yine de bir şeyler yapmanı istiyorum...", + "updated": 1636207188259 } ] }, @@ -72,6 +82,11 @@ "language": "DE", "text": "Nehmen Sie sich ein paar Minuten Zeit, um die Knoten unterhalb des Ausführungsalgorithmus zu erkunden, die Formeln und Bedingungen zu überprüfen und zu sehen, was Sie daraus machen können!", "updated": 1634225560838 + }, + { + "language": "TR", + "text": "Yürütme algoritmasının altındaki düğümleri keşfetmek için birkaç dakikanızı ayırın, formülleri ve koşulları kontrol edin ve bunlardan neler yapabileceğinizi görün!", + "updated": 1636207209256 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json index 63a1db70f..e2af2afec 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json @@ -50,6 +50,11 @@ "language": "DE", "text": "Dies ist der Knoten, der den Kurs der Limit-Order bestimmt. Erinnern Sie sich, was wir vorhin über die Platzierung der Order zum Kurs der vierten Unterstützungsebene besprochen haben?", "updated": 1634225663708 + }, + { + "language": "TR", + "text": "Bu, limit emrinin oranını belirleyen düğümdür. Dördüncü destek seviyesi oranında sipariş vermekle ilgili daha önce tartıştığımız şeyi hatırlıyor musunuz?", + "updated": 1636207410235 } ] }, @@ -73,6 +78,11 @@ "language": "DE", "text": "Gehen Sie zu der Formula, die mit dem Knoten Order Rate verbunden ist, und klicken Sie im Menü auf Bearbeiten.", "updated": 1634225683670 + }, + { + "language": "TR", + "text": "Sipariş Oranı ( Order Rate ) düğümünnün altındaki formüle ( Formula ) düğümüne gidin ve menüden Düzenle'ye (Edit) tıklayın.", + "updated": 1636207530541 } ] }, @@ -96,6 +106,11 @@ "language": "DE", "text": "Nun... so wird es gemacht! Wie Sie sehen können, ist die Syntax praktisch selbsterklärend! Sie umfasst die Definition des Zeitrahmens, des Indikators und der betreffenden Indikatoreigenschaft.", "updated": 1634225691378 + }, + { + "language": "TR", + "text": "İşte... böyle yapılır! Gördüğünüz gibi, sözdizimi neredeyse kendi kendini açıklayıcıdır! Zaman çerçevesini (chart.at01min), göstergeyi ( Suport ) ve ilgili gösterge özelliğini ( support4rate ) tanımlamayı içerir.", + "updated": 1636207760464 } ] }