diff --git a/.gitignore b/.gitignore index 1792d63b8..749233d0e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ My-Workspaces My-Social-Trading-Data My-Network-Nodes-Data My-Secrets +My-Data-Storage +My-Log-Files debug.log .DS_Store *.db diff --git a/Environment.js b/Environment.js index 38ae6186b..a042eaf5b 100644 --- a/Environment.js +++ b/Environment.js @@ -4,14 +4,14 @@ exports.newEnvironment = function () { WEB_SERVER_URL: 'localhost', CLIENT_WEB_SOCKETS_INTERFACE_PORT: 18041, CLIENT_HTTP_INTERFACE_PORT: 34248, - PATH_TO_DATA_STORAGE: './Data-Storage', + PATH_TO_DATA_STORAGE: './Platform/My-Data-Storage', + PATH_TO_LOG_FILES: './Platform/My-Log-Files', PATH_TO_PROJECTS: './Projects', - PATH_TO_LOG_FILES: './Log-Files', PATH_TO_PROJECTS_REQUIRED: './Projects', PATH_TO_PROJECT_SCHEMA: './Projects/ProjectsSchema.json', PATH_TO_CLIENT: './Platform', PATH_TO_DEFAULT_WORKSPACE: './Projects/Foundations/Plugins/Workspaces', - PATH_TO_MY_WORKSPACES: './My-Workspaces', + PATH_TO_MY_WORKSPACES: './Platform/My-Workspaces', PATH_TO_FONTS: './Platform/WebServer/Fonts' } diff --git a/EnvironmentForDebug.js b/EnvironmentForDebug.js index efb5fec7b..5d7671aa7 100644 --- a/EnvironmentForDebug.js +++ b/EnvironmentForDebug.js @@ -8,15 +8,15 @@ exports.newEnvironment = function () { DESKTOP_WEB_SOCKETS_INTERFACE_HOST: 'localhost', CLIENT_HTTP_INTERFACE_PORT: 34248, DESKTOP_HTTP_INTERFACE_PORT: 34249, - PATH_TO_DATA_STORAGE: './Data-Storage', + PATH_TO_DATA_STORAGE: './Platform/My-Data-Storage', + PATH_TO_LOG_FILES: './Platform/My-Log-Files', PATH_TO_PROJECTS: './Projects', - PATH_TO_LOG_FILES: './Log-Files', PATH_TO_PROJECTS_REQUIRED: './Projects', PATH_TO_PROJECT_SCHEMA: './Projects/ProjectsSchema.json', PATH_TO_CLIENT: './Platform', PATH_TO_DESKTOP: './Desktop', PATH_TO_DEFAULT_WORKSPACE: './Projects/Foundations/Plugins/Workspaces', - PATH_TO_MY_WORKSPACES: './My-Workspaces', + PATH_TO_MY_WORKSPACES: './Platform/My-Workspaces', PATH_TO_FONTS: './Platform/WebServer/Fonts' } diff --git a/Platform/Client/githubServer.js b/Platform/Client/githubServer.js index 004811b2f..148ce0801 100644 --- a/Platform/Client/githubServer.js +++ b/Platform/Client/githubServer.js @@ -340,7 +340,7 @@ exports.newGithubServer = function newGithubServer() { owner: owner, repo: repo, issue_number: pullRequest.number, - body: 'This Pull Request could not be automatically merged and was closed by the Superalgos Governance System because it was detected that a User Profile file... \n\n' + fileContentUrl + '\n\n...was submitted together with ' + (filesChanged.length - 1) + ' other file/s. User Profiles files as per the Governance System rules, must be the only file present at a Pull Request in order to pass all the validations and be automatically merged.' + body: 'This Pull Request could not be automatically merged and was closed by the Superalgos Governance System because it was detected that a User Profile file... \n\n' + fileContentUrl + '\n\n...was submitted together with ' + (filesChanged.length - 1) + ' other file/s. User Profiles files as per the Governance System rules, must be the only file present at a Pull Request in order to pass all the validations and be automatically merged. \n\n If you intentionally submitted the extra files, the way to get your work merged is by first removing your User Profile file from the Plugins folder at your local installation and executing an app.contribute again. Then wait until the PR is merged (manually reviewed) and after that you put your User Profile file again and create a new PR only with that file with an app.contribute. That last PR should be merged automatically.' }); await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME) @@ -508,14 +508,14 @@ exports.newGithubServer = function newGithubServer() { unless the existing one belongs to the same Github username. */ let userProfileIdMap = new Map() - let pluginFileNames = await SA.projects.foundations.utilities.plugins.getPluginFileNames( + let pluginFileNames = await SA.projects.communityPlugins.utilities.plugins.getPluginFileNames( 'Governance', 'User-Profiles' ) for (let i = 0; i < pluginFileNames.length; i++) { let pluginFileName = pluginFileNames[i] - let pluginFileContent = await SA.projects.foundations.utilities.plugins.getPluginFileContent( + let pluginFileContent = await SA.projects.communityPlugins.utilities.plugins.getPluginFileContent( 'Governance', 'User-Profiles', pluginFileName @@ -558,13 +558,13 @@ exports.newGithubServer = function newGithubServer() { unless the existing one belongs to the same Github username. */ let userProfileIdMap = new Map() - let pluginFileNames = await SA.projects.foundations.utilities.plugins.getPluginFileNames( + let pluginFileNames = await SA.projects.communityPlugins.utilities.plugins.getPluginFileNames( 'Governance', 'User-Profiles' ) for (let i = 0; i < pluginFileNames.length; i++) { let pluginFileName = pluginFileNames[i] - let pluginFileContent = await SA.projects.foundations.utilities.plugins.getPluginFileContent( + let pluginFileContent = await SA.projects.communityPlugins.utilities.plugins.getPluginFileContent( 'Governance', 'User-Profiles', pluginFileName diff --git a/Platform/Client/httpInterface.js b/Platform/Client/httpInterface.js index 7d5aa0db5..80ef33312 100644 --- a/Platform/Client/httpInterface.js +++ b/Platform/Client/httpInterface.js @@ -1387,11 +1387,13 @@ exports.newHttpInterface = function newHttpInterface() { try { let project = unescape(requestPath[2]) let folder = unescape(requestPath[3]) - - let response = await SA.projects.foundations.utilities.plugins.getPluginFileNames( + + let response = await SA.projects.communityPlugins.utilities.plugins.getPluginFileNames( project, folder - ) + ).catch(err => { + console.log('[ERROR] httpInterface -> PluginFileNames -> err.stack = ' + err.stack) + }) SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(response), httpResponse) @@ -1424,12 +1426,18 @@ exports.newHttpInterface = function newHttpInterface() { if (fileName === 'Superalgos-CL.json') { fileName = 'Superalgos-PL.json' } - - let response = await SA.projects.foundations.utilities.plugins.getPluginFileContent( + + await SA.projects.communityPlugins.utilities.plugins.getPluginFileContent( project, folder, fileName - ).catch(err => { + ) + .then( response => + { + SA.projects.foundations.utilities.httpResponses.respondWithContent(response, httpResponse) + } + ) + .catch(err => { let error = { result: 'Fail Because', message: err @@ -1438,8 +1446,6 @@ exports.newHttpInterface = function newHttpInterface() { return }) - SA.projects.foundations.utilities.httpResponses.respondWithContent(response, httpResponse) - } catch (err) { console.log('[ERROR] httpInterface -> LoadPlugin -> Method call produced an error.') console.log('[ERROR] httpInterface -> LoadPlugin -> err.stack = ' + err.stack) diff --git a/Projects/Foundations/Icons/Trading/trading-bot.png b/Projects/Algorithmic-Trading/Icons/Trading/trading-bot.png similarity index 100% rename from Projects/Foundations/Icons/Trading/trading-bot.png rename to Projects/Algorithmic-Trading/Icons/Trading/trading-bot.png diff --git a/Projects/Foundations/Icons/Trading/trading-engine.png b/Projects/Algorithmic-Trading/Icons/Trading/trading-engine.png similarity index 100% rename from Projects/Foundations/Icons/Trading/trading-engine.png rename to Projects/Algorithmic-Trading/Icons/Trading/trading-engine.png diff --git a/Projects/Foundations/Icons/Trading/trading-mine.png b/Projects/Algorithmic-Trading/Icons/Trading/trading-mine.png similarity index 100% rename from Projects/Foundations/Icons/Trading/trading-mine.png rename to Projects/Algorithmic-Trading/Icons/Trading/trading-mine.png diff --git a/Projects/Foundations/Icons/Trading/trading-system.png b/Projects/Algorithmic-Trading/Icons/Trading/trading-system.png similarity index 100% rename from Projects/Foundations/Icons/Trading/trading-system.png rename to Projects/Algorithmic-Trading/Icons/Trading/trading-system.png diff --git a/Projects/Algorithmic-Trading/Icons/algorithmic-trading-project.png b/Projects/Algorithmic-Trading/Icons/algorithmic-trading-project.png new file mode 100644 index 000000000..9c5299e7f Binary files /dev/null and b/Projects/Algorithmic-Trading/Icons/algorithmic-trading-project.png differ diff --git a/Projects/Foundations/Plugins/Trading-Engines/Low-Frequency.json b/Projects/Algorithmic-Trading/Plugins/Trading-Engines/Low-Frequency.json similarity index 100% rename from Projects/Foundations/Plugins/Trading-Engines/Low-Frequency.json rename to Projects/Algorithmic-Trading/Plugins/Trading-Engines/Low-Frequency.json diff --git a/Projects/Foundations/Plugins/Trading-Mines/Masters.json b/Projects/Algorithmic-Trading/Plugins/Trading-Mines/Masters.json similarity index 100% rename from Projects/Foundations/Plugins/Trading-Mines/Masters.json rename to Projects/Algorithmic-Trading/Plugins/Trading-Mines/Masters.json diff --git a/Projects/Foundations/Plugins/Trading-Systems/BB-Top-Bounce-BTC-USDT.json b/Projects/Algorithmic-Trading/Plugins/Trading-Systems/BB-Top-Bounce-BTC-USDT.json similarity index 100% rename from Projects/Foundations/Plugins/Trading-Systems/BB-Top-Bounce-BTC-USDT.json rename to Projects/Algorithmic-Trading/Plugins/Trading-Systems/BB-Top-Bounce-BTC-USDT.json diff --git a/Projects/Foundations/Plugins/Trading-Systems/LiveTester-Chart-Scanner.json b/Projects/Algorithmic-Trading/Plugins/Trading-Systems/LiveTester-Chart-Scanner.json similarity index 100% rename from Projects/Foundations/Plugins/Trading-Systems/LiveTester-Chart-Scanner.json rename to Projects/Algorithmic-Trading/Plugins/Trading-Systems/LiveTester-Chart-Scanner.json diff --git a/Projects/Foundations/Plugins/Trading-Systems/Masters-Lightning-Strike.json b/Projects/Algorithmic-Trading/Plugins/Trading-Systems/Masters-Lightning-Strike.json similarity index 100% rename from Projects/Foundations/Plugins/Trading-Systems/Masters-Lightning-Strike.json rename to Projects/Algorithmic-Trading/Plugins/Trading-Systems/Masters-Lightning-Strike.json diff --git a/Projects/Foundations/Plugins/Trading-Systems/Sparta-WHB-BTC-USDT.json b/Projects/Algorithmic-Trading/Plugins/Trading-Systems/Sparta-WHB-BTC-USDT.json similarity index 100% rename from Projects/Foundations/Plugins/Trading-Systems/Sparta-WHB-BTC-USDT.json rename to Projects/Algorithmic-Trading/Plugins/Trading-Systems/Sparta-WHB-BTC-USDT.json diff --git a/Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json b/Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json new file mode 100644 index 000000000..53e974e6d --- /dev/null +++ b/Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json @@ -0,0 +1,63 @@ +{ + "type": "Algorithmic-Trading Project", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "iconPathOn": "algorithmic-trading-project", + "iconPathOff": "algorithmic-trading-project", + "iconProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Trading Mine", + "relatedUiObject": "Trading Mine", + "relatedUiObjectProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Trading Engine", + "relatedUiObject": "Trading Engine", + "relatedUiObjectProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Trading System", + "relatedUiObject": "Trading System", + "relatedUiObjectProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.executeAction", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionProject": "Foundations" + } + ], + "isProjectHead": true, + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "isPinned": true, + "positionLocked": true, + "icon": "algorithmic-trading-project", + "childrenNodesProperties": [ + { + "name": "projectDefinition", + "type": "node", + "childType": "Project Definition", + "project": "Foundations", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/trading-bot.json b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-bot.json similarity index 72% rename from Projects/Foundations/Schemas/App-Schema/trading-bot.json rename to Projects/Algorithmic-Trading/Schemas/App-Schema/trading-bot.json index 0cc624da4..c33a7d668 100644 --- a/Projects/Foundations/Schemas/App-Schema/trading-bot.json +++ b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-bot.json @@ -7,25 +7,29 @@ "iconPathOn": "configuration", "iconPathOff": "configuration", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Product Definition Folder", "relatedUiObject": "Product Definition Folder", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -34,7 +38,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -54,19 +59,22 @@ "name": "processes", "type": "array", "childType": "Process Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "products", "type": "array", "childType": "Product Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "productDefinitionFolders", "type": "array", "childType": "Product Definition Folder", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" } ], "propertyNameAtParent": "tradingBots" diff --git a/Projects/Foundations/Schemas/App-Schema/trading-engine.json b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-engine.json similarity index 71% rename from Projects/Foundations/Schemas/App-Schema/trading-engine.json rename to Projects/Algorithmic-Trading/Schemas/App-Schema/trading-engine.json index 7edb467b7..517079e17 100644 --- a/Projects/Foundations/Schemas/App-Schema/trading-engine.json +++ b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-engine.json @@ -5,7 +5,8 @@ "action": "Add Missing Children", "label": "Add Missing Children", "relatedUiObject": "Trading Engine", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -14,7 +15,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isHierarchyHead": true, @@ -25,19 +27,22 @@ "name": "tradingCurrent", "type": "node", "childType": "Trading Current", - "autoAdd": true + "autoAdd": false, + "project": "Foundations" }, { "name": "tradingLast", "type": "node", "childType": "Trading Last", - "autoAdd": true + "autoAdd": false, + "project": "Foundations" }, { "name": "exchangeOrders", "type": "node", "childType": "Exchange Orders", - "autoAdd": true + "autoAdd": false, + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/trading-mine.json b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-mine.json similarity index 64% rename from Projects/Foundations/Schemas/App-Schema/trading-mine.json rename to Projects/Algorithmic-Trading/Schemas/App-Schema/trading-mine.json index eb2251d85..1f23e2194 100644 --- a/Projects/Foundations/Schemas/App-Schema/trading-mine.json +++ b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-mine.json @@ -6,20 +6,26 @@ "label": "Configure", "iconPathOn": "configuration", "iconPathOff": "configuration", + "iconProject": "Foundations", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Trading Bot", "relatedUiObject": "Trading Bot", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Plotter", "relatedUiObject": "Plotter", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -28,7 +34,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -45,12 +52,14 @@ { "name": "tradingBots", "type": "array", - "childType": "Trading Bot" + "childType": "Trading Bot", + "project": "Algorithmic-Trading" }, { "name": "plotters", "type": "array", - "childType": "Plotter" + "childType": "Plotter", + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/trading-system.json b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-system.json similarity index 72% rename from Projects/Foundations/Schemas/App-Schema/trading-system.json rename to Projects/Algorithmic-Trading/Schemas/App-Schema/trading-system.json index 895e77ccb..7d0ca8e07 100644 --- a/Projects/Foundations/Schemas/App-Schema/trading-system.json +++ b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-system.json @@ -5,7 +5,8 @@ "action": "Add UI Object", "label": "Add Trading Strategy", "relatedUiObject": "Trading Strategy", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", @@ -13,7 +14,8 @@ "propertyToCheckFor": "dynamicIndicators", "label": "Add Dynamic Indicators", "relatedUiObject": "Dynamic Indicators", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -22,7 +24,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isHierarchyHead": true, @@ -33,13 +36,15 @@ "name": "tradingStrategies", "type": "array", "childType": "Trading Strategy", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "dynamicIndicators", "type": "node", "childType": "Dynamic Indicators", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json rename to Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-Engine/trading-engine.json b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Engine/trading-engine.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-Engine/trading-engine.json rename to Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Engine/trading-engine.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-Mine/trading-mine.json b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Mine/trading-mine.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-Mine/trading-mine.json rename to Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-Mine/trading-mine.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json b/Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json rename to Projects/Algorithmic-Trading/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/APIs/ExchangeAPI.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/APIs/ExchangeAPI.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/APIs/ExchangeAPI.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/APIs/ExchangeAPI.js index 665015dcc..dd88e832a 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/APIs/ExchangeAPI.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/APIs/ExchangeAPI.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesExchangeAPI = function (processIndex) { +exports.newAlgorithmicTradingBotModulesExchangeAPI = function (processIndex) { let MODULE_NAME = "Exchange API"; diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js index 60b78456b..910d016f4 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesOrdersCalculations = function (processIndex) { +exports.newAlgorithmicTradingBotModulesOrdersCalculations = function (processIndex) { /* When we are live trading, we need to syncronize with the exchange. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js index b67380074..1d3ea0ac6 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesOrdersSimulations = function (processIndex) { +exports.newAlgorithmicTradingBotModulesOrdersSimulations = function (processIndex) { /* When we are backtesting or paper trading, we need to simulate what would have happened at the exchange. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js index 4a2ed0b9a..65f2d2f6c 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesSnapshots = function(processIndex) { +exports.newAlgorithmicTradingBotModulesSnapshots = function(processIndex) { /* This module encapsulates the snapshots functionality. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js index 439a86ae5..441e5bfb7 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingEngine = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingEngine = function (processIndex) { /* We call the Trading Engine to the data structure that is needed in order to exevute the trading protocol with the specific rules defined at the Trading System. diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js index 0ff1c6762..44f563cca 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingEpisode = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingEpisode = function (processIndex) { /* This module packages all functions related to Episodes. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js similarity index 96% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js index da6371a61..11cba8cd6 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingExecution = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingExecution = function (processIndex) { /* The Trading Execution modules manages the execution nodes and execution algoritms. */ @@ -16,7 +16,7 @@ exports.newFoundationsBotModulesTradingExecution = function (processIndex) { let tradingSystem let sessionParameters - let tradingOrdersModuleObject = TS.projects.foundations.botModules.tradingOrders.newFoundationsBotModulesTradingOrders(processIndex) + let tradingOrdersModuleObject = TS.projects.algorithmicTrading.botModules.tradingOrders.newAlgorithmicTradingBotModulesTradingOrders(processIndex) return thisObject diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js index 26b4207e5..a821d7440 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingOrders = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingOrders = function (processIndex) { /* The Trading Orders modules manages the execution of orders against the exchanges. */ @@ -16,7 +16,7 @@ exports.newFoundationsBotModulesTradingOrders = function (processIndex) { let tradingSystem let sessionParameters - let exchangeAPIModuleObject = TS.projects.foundations.botModules.exchangeAPI.newFoundationsBotModulesExchangeAPI(processIndex) + let exchangeAPIModuleObject = TS.projects.algorithmicTrading.botModules.exchangeAPI.newAlgorithmicTradingBotModulesExchangeAPI(processIndex) let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newFoundationsBotModulesAnnouncements(processIndex) return thisObject @@ -843,7 +843,7 @@ exports.newFoundationsBotModulesTradingOrders = function (processIndex) { let previousBaseAssetFeesPaid = tradingEngineOrder.orderBaseAsset.feesPaid.value let previousQuotedAssetFeesPaid = tradingEngineOrder.orderQuotedAsset.feesPaid.value - let ordersSimulationsModuleObject = TS.projects.foundations.botModules.ordersSimulations.newFoundationsBotModulesOrdersSimulations(processIndex) + let ordersSimulationsModuleObject = TS.projects.algorithmicTrading.botModules.ordersSimulations.newAlgorithmicTradingBotModulesOrdersSimulations(processIndex) ordersSimulationsModuleObject.initialize() ordersSimulationsModuleObject.actualSizeSimulation(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, applyFeePercentage) @@ -874,7 +874,7 @@ exports.newFoundationsBotModulesTradingOrders = function (processIndex) { let previousBaseAssetFeesPaid = tradingEngineOrder.orderBaseAsset.feesPaid.value let previousQuotedAssetFeesPaid = tradingEngineOrder.orderQuotedAsset.feesPaid.value - let ordersCalculationsModuleObject = TS.projects.foundations.botModules.ordersCalculations.newFoundationsBotModulesOrdersCalculations(processIndex) + let ordersCalculationsModuleObject = TS.projects.algorithmicTrading.botModules.ordersCalculations.newAlgorithmicTradingBotModulesOrdersCalculations(processIndex) ordersCalculationsModuleObject.initialize() await ordersCalculationsModuleObject.actualSizeCalculation(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order, applyFeePercentage) diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js similarity index 92% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js index cf1396900..c54869742 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingOutput = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingOutput = function (processIndex) { /* This module will load if necesary all the data outputs so that they can be appended with new records if needed. After running the simulation, it will save all the data outputs. @@ -29,7 +29,7 @@ exports.newFoundationsBotModulesTradingOutput = function (processIndex) { } /* Preparing everything for the Simulation */ - let tradingSimulationModuleObject = TS.projects.foundations.botModules.tradingSimulation.newFoundationsBotModulesTradingSimulation(processIndex) + let tradingSimulationModuleObject = TS.projects.algorithmicTrading.botModules.tradingSimulation.newAlgorithmicTradingBotModulesTradingSimulation(processIndex) let outputDatasets = TS.projects.foundations.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset') let outputDatasetsMap = new Map() diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingPosition.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingPosition.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingPosition.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingPosition.js index c2aaa9302..4b825861e 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingPosition.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingPosition.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingPosition = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingPosition = function (processIndex) { /* This module packages all functions related to Positions. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js index c1f3f2dab..eb92775d4 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingProcess = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingProcess = function (processIndex) { /* This Module will load all the process data dependencies from files and send them downstream. After execution, will save the time range and status report of the process. @@ -16,8 +16,8 @@ let dataFiles = new Map() let multiTimeFrameDataFiles = new Map() - TS.projects.foundations.globals.processModuleObjects.MODULE_OBJECTS_BY_PROCESS_INDEX_MAP.get(processIndex).TRADING_ENGINE_MODULE_OBJECT = TS.projects.foundations.botModules.tradingEngine.newFoundationsBotModulesTradingEngine(processIndex) - let tradingOutputModuleObject = TS.projects.foundations.botModules.tradingOutput.newFoundationsBotModulesTradingOutput(processIndex) + TS.projects.foundations.globals.processModuleObjects.MODULE_OBJECTS_BY_PROCESS_INDEX_MAP.get(processIndex).TRADING_ENGINE_MODULE_OBJECT = TS.projects.algorithmicTrading.botModules.tradingEngine.newAlgorithmicTradingBotModulesTradingEngine(processIndex) + let tradingOutputModuleObject = TS.projects.algorithmicTrading.botModules.tradingOutput.newAlgorithmicTradingBotModulesTradingOutput(processIndex) let currentTimeFrame = {} diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingRecords.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingRecords.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingRecords.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingRecords.js index 0f1d7567c..ab4428a65 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingRecords.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingRecords.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingRecords = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingRecords = function (processIndex) { /* This module facilitates the appending of records to the output of the process. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js index bb3701eef..ce9e39ba4 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingSimulation = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processIndex) { /* This Module represents the trading simulacion. Escentially a loop through a set of candles and the execution at each loop cycle of the Trading System Protocol. @@ -34,13 +34,13 @@ exports.newFoundationsBotModulesTradingSimulation = function (processIndex) { '[INFO] runSimulation -> finalDatetime = ' + sessionParameters.timeRange.config.finalDatetime) /* These are the Modules we will need to run the Simulation */ - let tradingRecordsModuleObject = TS.projects.foundations.botModules.tradingRecords.newFoundationsBotModulesTradingRecords(processIndex) + let tradingRecordsModuleObject = TS.projects.algorithmicTrading.botModules.tradingRecords.newAlgorithmicTradingBotModulesTradingRecords(processIndex) tradingRecordsModuleObject.initialize(outputDatasetsMap) - let tradingSystemModuleObject = TS.projects.foundations.botModules.tradingSystem.newFoundationsBotModulesTradingSystem(processIndex) + let tradingSystemModuleObject = TS.projects.algorithmicTrading.botModules.tradingSystem.newAlgorithmicTradingBotModulesTradingSystem(processIndex) tradingSystemModuleObject.initialize() - let tradingEpisodeModuleObject = TS.projects.foundations.botModules.tradingEpisode.newFoundationsBotModulesTradingEpisode(processIndex) + let tradingEpisodeModuleObject = TS.projects.algorithmicTrading.botModules.tradingEpisode.newAlgorithmicTradingBotModulesTradingEpisode(processIndex) tradingEpisodeModuleObject.initialize() /* Setting up the candles array: The whole simulation is based on the array of candles at the time-frame defined at the session parameters. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js index 34b3f1345..a1e1a0de1 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingStages = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) { /* This module packages all functions related to Stages. */ @@ -21,12 +21,12 @@ exports.newFoundationsBotModulesTradingStages = function (processIndex) { finalize: finalize } - let tradingStrategyModuleObject = TS.projects.foundations.botModules.tradingStrategy.newFoundationsBotModulesTradingStrategy(processIndex) - let tradingPositionModuleObject = TS.projects.foundations.botModules.tradingPosition.newFoundationsBotModulesTradingPosition(processIndex) - let tradingExecutionModuleObject = TS.projects.foundations.botModules.tradingExecution.newFoundationsBotModulesTradingExecution(processIndex) + let tradingStrategyModuleObject = TS.projects.algorithmicTrading.botModules.tradingStrategy.newAlgorithmicTradingBotModulesTradingStrategy(processIndex) + let tradingPositionModuleObject = TS.projects.algorithmicTrading.botModules.tradingPosition.newAlgorithmicTradingBotModulesTradingPosition(processIndex) + let tradingExecutionModuleObject = TS.projects.algorithmicTrading.botModules.tradingExecution.newAlgorithmicTradingBotModulesTradingExecution(processIndex) let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newFoundationsBotModulesAnnouncements(processIndex) - let snapshotsModuleObject = TS.projects.foundations.botModules.snapshots.newFoundationsBotModulesSnapshots(processIndex) - let tradingEpisodeModuleObject = TS.projects.foundations.botModules.tradingEpisode.newFoundationsBotModulesTradingEpisode(processIndex) + let snapshotsModuleObject = TS.projects.algorithmicTrading.botModules.snapshots.newAlgorithmicTradingBotModulesSnapshots(processIndex) + let tradingEpisodeModuleObject = TS.projects.algorithmicTrading.botModules.tradingEpisode.newAlgorithmicTradingBotModulesTradingEpisode(processIndex) let tradingEngine let tradingSystem diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js index f676de4d7..c18aefd1d 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingStrategy = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingStrategy = function (processIndex) { /* This module packages all functions related to Strategies. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js index 149c55e76..4f3d5691a 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingSystem = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) { /* The Trading System is the user defined set of rules compliant with the Trading Protocol that defines the trading logic to be applied during each cycle of the Simulation. @@ -26,7 +26,7 @@ exports.newFoundationsBotModulesTradingSystem = function (processIndex) { let sessionParameters let dynamicIndicators - let tradingStagesModuleObject = TS.projects.foundations.botModules.tradingStages.newFoundationsBotModulesTradingStages(processIndex) + let tradingStagesModuleObject = TS.projects.algorithmicTrading.botModules.tradingStages.newAlgorithmicTradingBotModulesTradingStages(processIndex) let taskParameters = { market: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.baseAsset.referenceParent.config.codeName + diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js index 6592a92f8..23aa53e3c 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js @@ -1,8 +1,8 @@ -exports.newFoundationsBotModulesSingleMarketTradingBot = function (processIndex) { +exports.newAlgorithmicTradingBotModulesSingleMarketTradingBot = function (processIndex) { const MODULE_NAME = "Single Market Trading Bot"; - let session = TS.projects.foundations.botModules.tradingSession.newFoundationsBotModulesTradingSession(processIndex) + let session = TS.projects.algorithmicTrading.botModules.tradingSession.newAlgorithmicTradingBotModulesTradingSession(processIndex) let nextLoopTimeoutHandle; let thisObject = { @@ -282,7 +282,7 @@ "[INFO] run -> loop -> initializeDataDependencies -> onInizialized -> Execution finished well.") switch (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.framework.name) { case 'Low-Frequency-Trading-Process': { - processFramework = TS.projects.foundations.botModules.tradingProcess.newFoundationsBotModulesTradingProcess(processIndex); + processFramework = TS.projects.algorithmicTrading.botModules.tradingProcess.newAlgorithmicTradingBotModulesTradingProcess(processIndex); startProcessFramework(); break; } diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/TradingSession.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/TradingSession.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js index 404516556..d9d3586ee 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/TradingSession.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesTradingSession = function (processIndex) { +exports.newAlgorithmicTradingBotModulesTradingSession = function (processIndex) { const MODULE_NAME = "Trading Session" diff --git a/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js b/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js new file mode 100644 index 000000000..c45e2c3fb --- /dev/null +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,38 @@ +function newAlgorithmicTradingActionSwitch() { + + let thisObject = { + executeAction: executeAction, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + + } + + function initialize() { + /* Nothing to initialize since a Function Library does not hold any state. */ + } + + async function executeAction(action) { + switch (action.name) { + case 'Run Trading Session': + { + UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.runSession(action.node, false, action.callBackFunction) + } + break + case 'Resume Trading Session': + { + UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.runSession(action.node, true, action.callBackFunction) + } + break + case 'Stop Trading Session': + { + UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.stopSession(action.node, action.callBackFunction) + } + break + } + } +} diff --git a/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js new file mode 100644 index 000000000..657af61b0 --- /dev/null +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js @@ -0,0 +1,332 @@ +function newAlgorithmicTradingFunctionLibraryTradingSessionFunctions() { + let thisObject = { + syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd, + runSession: runSession, + stopSession: stopSession + } + + return thisObject + + function syncronizeSessionWithBackEnd(node) { + let validationsResult = validations(node) + if (validationsResult === undefined) { + /* If something fails at validations we just quit. */ + return + } + let lanNetworkNode = validationsResult.lanNetworkNode + if (lanNetworkNode === undefined) { + /* Nodes that do not belong to a network can not get ready. */ + return + } + + let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) + + /* First we setup everything so as to listen to the response from the Task Server */ + let eventSubscriptionIdOnStatus + let key = node.name + '-' + node.type + '-' + node.id + eventsServerClient.listenToEvent(key, 'Status Response', undefined, node.id, onResponse, onStatus) + + function onResponse(message) { + eventSubscriptionIdOnStatus = message.eventSubscriptionId + } + + function onStatus(message) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnStatus, node.id) + if (message.event.status === 'Trading Session Runnning') { + node.payload.uiObject.menu.internalClick('Run Trading Session') + } + } + + /* Second we ask the Task Server if this Session is Running. */ + eventsServerClient.raiseEvent(key, 'Trading Session Status') + } + + function runSession(node, resume, callBackFunction) { + let validationsResult = validations(node) + if (validationsResult === undefined) { + /* If something fails at validations we just quit. */ + return + } + let lanNetworkNode = validationsResult.lanNetworkNode + if (lanNetworkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) + + let key = node.name + '-' + node.type + '-' + node.id + + /* Setup Listener to check Parent Task Status of the Session */ + let eventSubscriptionIdOnStatus + let eventHandlerKey = "Task Client - " + node.payload.parentNode.payload.parentNode.payload.parentNode.id + + eventsServerClient.listenToEvent(eventHandlerKey, 'Task Status', undefined, node.id, onResponse, onStatus) + + function onResponse(message) { + eventSubscriptionIdOnStatus = message.eventSubscriptionId + } + + function onStatus(message) { + eventsServerClient.stopListening(eventHandlerKey, eventSubscriptionIdOnStatus, node.id) + + /* If Task is Not Running Display Error */ + if (message.event.status === 'Task Process Not Running') { + node.payload.uiObject.setErrorMessage('Parent Task Not Running.') + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } else { + node.payload.uiObject.run(eventsServerClient, callBackFunction) + } + } + + /* Raise Event to Check Task Status */ + let eventKey = {} + eventKey.taskId = node.payload.parentNode.payload.parentNode.payload.parentNode.id + + eventsServerClient.raiseEvent("Task Manager", 'Task Status', eventKey) + + let lightingPath = '' + + 'Trading System->' + + 'Dynamic Indicators->Indicator Function->Formula->' + + 'Trading Strategy->' + + 'Trigger Stage->Trigger On Event->Trigger Off Event->Take Position Event->' + + 'Open Stage->' + + 'Manage Stage->' + + 'Managed Stop Loss->Managed Take Profit->' + + 'Phase->Formula->Next Phase Event->Move To Phase Event->Phase->' + + 'Situation->Condition->Javascript Code->' + + 'Close Stage->' + + 'Initial Targets->Target Size In Base Asset->Target Size In Quoted Asset->Target Rate->Formula->' + + 'Open Execution->Close Execution->' + + 'Execution Algorithm->Market Buy Order->Market Sell Order->Limit Buy Order->Limit Sell Order->' + + 'Order Rate->Formula->' + + 'Create Order Event->Cancel Order Event->' + + 'Close Stage Event->' + + 'Announcement->Announcement Formula->Announcement Condition->' + + 'Size In Base Asset->Size In Quoted Asset->Position Rate->Formula->' + + 'Situation->Condition->Javascript Code->' + + 'Market Order->Limit Order->' + + 'Simulated Exchange Events->Simulated Partial Fill->Simulated Actual Rate->Simulated Fees Paid->Formula->' + + 'User Defined Code->Javascript Code->' + + let tradingSystem = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.tradingSystemReference.payload.referenceParent, false, true, true, false, false, lightingPath) + + lightingPath = '' + + 'Trading Engine->' + + 'Dynamic Indicators->Indicator Function->' + + 'Trading Current->Trading Last->Previous->' + + 'Trading Episode->' + + 'Episode Base Asset->Episode Quoted Asset->Trading Episode Counters->Trading Episode Statistics->' + + 'Strategies->Positions->Orders->Hits->Fails->User Defined Counter->' + + 'Profit Loss->Hit Ratio->Hit Fail->Days->ROI->Annualized Rate Of Return->User Defined Statistic->' + + 'Candle->Cycle->' + + 'Begin->End->Last Begin->Last End->Open->Close->Min->Max->Index->' + + 'Distance To Trading Event->' + + 'Head Of The Market->Process Date->' + + 'Trigger On->Trigger Off->Take Position->Close Position->Next Phase->Move To Phase->Create Order->Cancel Order->Close Order->' + + 'Strategy->' + + 'Strategy Counters->' + + 'Position->' + + 'Entry Target Rate->Exit Target Rate->' + + 'Stop Loss->Stop Loss Phase->Stop Loss Position->Begin->End->Initial Value->Final Value->' + + 'Take Profit->Take Profit Phase->Take Profit Position->Begin->End->Initial Value->Final Value->' + + 'Position Counters->' + + 'Position Statistics->Days->User Defined Statistic->' + + 'Position Base Asset->Position Quoted Asset->Entry Target Size->Exit Target Size->' + + 'Profit Loss->ROI->Hit Fail->' + + 'Exchange Orders->Market Buy Orders->Market Sell Orders->Limit Buy Orders->Limit Sell Orders->' + + 'Market Order->Limit Order->' + + 'Exchange Id->Rate->Order Name->Algorithm Name->Lock->' + + 'Order Counters->' + + 'Order Base Asset->Order Quoted Asset->' + + 'Actual Size->Size->Size Filled->Amount Received->Fees Paid->Fees To Be Paid->' + + 'Order Statistics->Percentage Filled->Actual Rate->Days->User Defined Statistic->' + + 'Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->' + + 'Begin->End->Exit Type->Status->Begin Rate->End Rate->Stage Base Asset->Stage Quoted Asset->Size Placed->Target Size->Size Filled->Fees Paid->Stage Defined In->' + + 'Serial Number->Identifier->Begin->End->Begin Rate->End Rate->Strategy Name->Status->Exit Type->' + + 'Balance->Begin Balance->End Balance->' + + 'Index->Situation Name->Formula->Periods->' + + 'User Defined Variables->User Defined Variable->' + + let tradingEngine = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.tradingEngineReference.payload.referenceParent, false, true, true, false, false, lightingPath) + + lightingPath = '' + + 'Backtesting Session->Paper Trading Session->Forward Testing Session->Live Trading Session->' + + 'Trading Parameters->' + + 'Session Base Asset->Session Quoted Asset->Time Range->Time Frame->Slippage->Fee Structure->Snapshots->Heartbeats->User Defined Parameters->' + + 'Social Bots->Telegram Bot->Discord Bot->Slack Bot->Twitter Bot->' + + 'Social Bot Command->Formula->' + + 'Exchange Account Asset->Asset->' + + let session = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node, false, true, true, false, false, lightingPath) + + let defaultExchange = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.exchange.payload, 'codeName') + let defaultMarket = + UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.baseAsset.payload.referenceParent.payload, 'codeName') + + '-' + + UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.quotedAsset.payload.referenceParent.payload, 'codeName') + + let dependencyFilter = UI.projects.foundations.functionLibraries.dependenciesFilter.createDependencyFilter( + defaultExchange, + defaultMarket, + node.tradingSystemReference.payload.referenceParent + ) + + /* Raise event to run the session */ + let event = { + session: JSON.stringify(session), + tradingSystem: JSON.stringify(tradingSystem), + tradingEngine: JSON.stringify(tradingEngine), + dependencyFilter: JSON.stringify(dependencyFilter), + resume: resume + } + + if (resume !== true) { + eventsServerClient.raiseEvent(key, 'Run Trading Session', event) + } else { + eventsServerClient.raiseEvent(key, 'Resume Trading Session', event) + } + + if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + } + + function stopSession(node, callBackFunction) { + let validationsResult = validations(node) + if (validationsResult === undefined) { + /* If something fails at validations we just quit. */ + return + } + let lanNetworkNode = validationsResult.lanNetworkNode + if (lanNetworkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) + + let key = node.name + '-' + node.type + '-' + node.id + eventsServerClient.raiseEvent(key, 'Stop Trading Session') + + node.payload.uiObject.stop(callBackFunction, undefined, true) + } + + function validations(node) { + + let result = {} + + if (node.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a Process Instance parent to be able to run.') + return + } + + if (node.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Process Instance node.') + return + } + + if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Task.') + return + } + + if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Task Manager.') + return + } + + result.taskManager = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode + + if (result.taskManager.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Mine Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Market Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Exchange Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Testing or Production Trading Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Network Node.') + return + } + + result.lanNetworkNode = UI.projects.foundations.utilities.meshes.findNodeInNodeMesh(result.taskManager, 'LAN Network Node', undefined, true, false, true, false) + + if (node.tradingSystemReference === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a child Trading System Reference.') + return + } + + if (node.tradingEngineReference === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a child Trading Engine Reference.') + return + } + + if (node.tradingSystemReference.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Trading System Reference needs to reference a Trading System.') + return + } + + if (node.tradingEngineReference.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Trading Engine Reference needs to reference a Trading Engine.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to have a Default Market.') + return + } + + result.market = result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent + + if (result.market.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Default Market needs to be a child of Exchange Markets.') + return + } + + if (result.market.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Exchange Markets neeed to be a child of Crypto Exchange.') + return + } + + if (result.market.baseAsset === undefined) { + node.payload.uiObject.setErrorMessage('Default Market needs to have a Base Asset.') + return + } + + if (result.market.quotedAsset === undefined) { + node.payload.uiObject.setErrorMessage('Default Market needs to have a Quoted Asset.') + return + } + + if (result.market.baseAsset.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Market Base Asset needs to reference an Asset.') + return + } + + if (result.market.quotedAsset.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Market Quoted Asset needs to reference an Asset.') + return + } + + result.exchange = result.market.payload.parentNode.payload.parentNode + + return result + } +} diff --git a/Projects/Foundations/Icons/Plugins/plugin-api-maps.png b/Projects/Community-Plugins/Icons/plugin-api-maps.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-api-maps.png rename to Projects/Community-Plugins/Icons/plugin-api-maps.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-data-mines.png b/Projects/Community-Plugins/Icons/plugin-data-mines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-data-mines.png rename to Projects/Community-Plugins/Icons/plugin-data-mines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-file-position.png b/Projects/Community-Plugins/Icons/plugin-file-position.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-file-position.png rename to Projects/Community-Plugins/Icons/plugin-file-position.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-file.png b/Projects/Community-Plugins/Icons/plugin-file.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-file.png rename to Projects/Community-Plugins/Icons/plugin-file.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-learning-engines.png b/Projects/Community-Plugins/Icons/plugin-learning-engines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-learning-engines.png rename to Projects/Community-Plugins/Icons/plugin-learning-engines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-learning-mines.png b/Projects/Community-Plugins/Icons/plugin-learning-mines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-learning-mines.png rename to Projects/Community-Plugins/Icons/plugin-learning-mines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-learning-systems.png b/Projects/Community-Plugins/Icons/plugin-learning-systems.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-learning-systems.png rename to Projects/Community-Plugins/Icons/plugin-learning-systems.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-project.png b/Projects/Community-Plugins/Icons/plugin-project.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-project.png rename to Projects/Community-Plugins/Icons/plugin-project.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-super-scripts.png b/Projects/Community-Plugins/Icons/plugin-super-scripts.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-super-scripts.png rename to Projects/Community-Plugins/Icons/plugin-super-scripts.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-trading-engines.png b/Projects/Community-Plugins/Icons/plugin-trading-engines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-trading-engines.png rename to Projects/Community-Plugins/Icons/plugin-trading-engines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-trading-mines.png b/Projects/Community-Plugins/Icons/plugin-trading-mines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-trading-mines.png rename to Projects/Community-Plugins/Icons/plugin-trading-mines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-trading-systems.png b/Projects/Community-Plugins/Icons/plugin-trading-systems.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-trading-systems.png rename to Projects/Community-Plugins/Icons/plugin-trading-systems.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-tutorials.png b/Projects/Community-Plugins/Icons/plugin-tutorials.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-tutorials.png rename to Projects/Community-Plugins/Icons/plugin-tutorials.png diff --git a/Projects/Foundations/Icons/Plugins/plugins.png b/Projects/Community-Plugins/Icons/plugins-project.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugins.png rename to Projects/Community-Plugins/Icons/plugins-project.png diff --git a/Projects/Community-Plugins/Icons/plugins.png b/Projects/Community-Plugins/Icons/plugins.png new file mode 100644 index 000000000..09d71a296 Binary files /dev/null and b/Projects/Community-Plugins/Icons/plugins.png differ diff --git a/Projects/Foundations/SA/Utilities/Plugins.js b/Projects/Community-Plugins/SA/Utilities/Plugins.js similarity index 94% rename from Projects/Foundations/SA/Utilities/Plugins.js rename to Projects/Community-Plugins/SA/Utilities/Plugins.js index 7998febf6..fb5f66c96 100644 --- a/Projects/Foundations/SA/Utilities/Plugins.js +++ b/Projects/Community-Plugins/SA/Utilities/Plugins.js @@ -1,4 +1,4 @@ -exports.newFoundationsUtilitiesPlugins = function () { +exports.newPluginsUtilitiesPlugins = function () { let thisObject = { getPluginFileNames: getPluginFileNames, @@ -14,7 +14,7 @@ exports.newFoundationsUtilitiesPlugins = function () { SA.nodeModules.fs.readdir(path, (err, files) => { if (err) { - reject() + reject(err) return } if (files === undefined) { diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-api-maps.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-api-maps.json similarity index 82% rename from Projects/Foundations/Schemas/App-Schema/plugin-api-maps.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-api-maps.json index 9274fb772..ebe81c9a8 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-api-maps.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-api-maps.json @@ -8,7 +8,8 @@ "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", "relatedUiObject": "API Map", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +18,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-data-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json similarity index 70% rename from Projects/Foundations/Schemas/App-Schema/plugin-data-mines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json index 8599d57c8..841ace1bc 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-data-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json @@ -7,8 +7,11 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Data Mine", - "actionFunction": "payload.executeAction" + "iconPathOn": "data-mine", + "iconPathOff": "data-mine", + "iconProject": "Data-Mining", + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +20,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, @@ -31,7 +35,8 @@ "name": "pluginFiles", "type": "array", "childType": "Plugin File", - "autoAdd": false + "autoAdd": false, + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-file-position.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file-position.json similarity index 83% rename from Projects/Foundations/Schemas/App-Schema/plugin-file-position.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-file-position.json index 98fd30600..982ed5de5 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-file-position.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file-position.json @@ -8,7 +8,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "title": [ diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-file.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json similarity index 78% rename from Projects/Foundations/Schemas/App-Schema/plugin-file.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json index 37dc941cf..96f6a4501 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-file.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json @@ -6,7 +6,8 @@ "label": "Configure", "iconPathOn": "configuration", "iconPathOff": "configuration", - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", @@ -14,25 +15,29 @@ "propertyToCheckFor": "pluginFilePosition", "actionFunction": "payload.executeAction", "label": "Add Plugin File Position", - "relatedUiObject": "Plugin File Position" + "relatedUiObject": "Plugin File Position", + "actionProject": "Foundations" }, { "action": "Enable Saving With Workspace", "actionFunction": "payload.executeAction", "label": "Enable Saving With Workspace", - "relatedUiObject": "Plugin File" + "relatedUiObject": "Plugin File", + "actionProject": "Community-Plugins" }, { "action": "Disable Saving With Workspace", "actionFunction": "payload.executeAction", "label": "Disable Saving With Workspace", - "relatedUiObject": "Plugin File" + "relatedUiObject": "Plugin File", + "actionProject": "Community-Plugins" }, { "action": "Save Plugin", "actionFunction": "payload.executeAction", "label": "Save Plugin", - "relatedUiObject": "Plugin File" + "relatedUiObject": "Plugin File", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -41,7 +46,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "editors": { diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-learning-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json similarity index 74% rename from Projects/Foundations/Schemas/App-Schema/plugin-learning-engines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json index 989fdfef0..810b34ef9 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-learning-engines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json @@ -7,8 +7,11 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Learning Engine", - "actionFunction": "payload.executeAction" + "iconPathOn": "learning-engine", + "iconPathOff": "learning-engine", + "iconProject": "Machine-Learning", + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +20,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-learning-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json similarity index 74% rename from Projects/Foundations/Schemas/App-Schema/plugin-learning-mines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json index 25c3a4891..db072d708 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-learning-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json @@ -7,8 +7,11 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Learning Mine", - "actionFunction": "payload.executeAction" + "iconPathOn": "learning-mine", + "iconPathOff": "learning-mine", + "iconProject": "Machine-Learning", + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +20,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-learning-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json similarity index 74% rename from Projects/Foundations/Schemas/App-Schema/plugin-learning-systems.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json index 362412ab8..56f236216 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-learning-systems.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json @@ -7,8 +7,11 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Learning System", - "actionFunction": "payload.executeAction" + "iconPathOn": "learning-system", + "iconPathOff": "learning-system", + "iconProject": "Machine-Learning", + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +20,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-project.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json similarity index 93% rename from Projects/Foundations/Schemas/App-Schema/plugin-project.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json index e4aa17c5b..2ba4668f7 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-project.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json @@ -6,13 +6,15 @@ "actionFunction": "uiObject.configEditor.activate", "label": "Configure", "iconPathOn": "configuration", - "iconPathOff": "configuration" + "iconPathOff": "configuration", + "actionProject": "Foundations" }, { "action": "Add Missing Plugin Types", "label": "Add Missing Plugin Types", "relatedUiObject": "Plugins", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -21,7 +23,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "initialValues": { diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-trading-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json similarity index 73% rename from Projects/Foundations/Schemas/App-Schema/plugin-trading-engines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json index d8814713c..0c19d38a4 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-trading-engines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json @@ -7,8 +7,11 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Trading Engine", - "actionFunction": "payload.executeAction" + "iconPathOn": "trading-engine", + "iconPathOff": "trading-engine", + "iconProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +20,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-trading-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json similarity index 73% rename from Projects/Foundations/Schemas/App-Schema/plugin-trading-mines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json index 882c3a935..9ca446ab8 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-trading-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json @@ -7,8 +7,11 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Trading Mine", - "actionFunction": "payload.executeAction" + "iconPathOn": "trading-mine", + "iconPathOff": "trading-mine", + "iconProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +20,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-trading-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json similarity index 73% rename from Projects/Foundations/Schemas/App-Schema/plugin-trading-systems.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json index 45a3c1f9c..0195fd6fe 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-trading-systems.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json @@ -7,8 +7,11 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Trading System", - "actionFunction": "payload.executeAction" + "iconPathOn": "trading-system", + "iconPathOff": "trading-system", + "iconProject": "Algorithmic-Trading", + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +20,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Foundations/Schemas/App-Schema/plugin-tutorials.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-tutorials.json similarity index 83% rename from Projects/Foundations/Schemas/App-Schema/plugin-tutorials.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-tutorials.json index ba844f57f..bd34dc710 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-tutorials.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-tutorials.json @@ -9,7 +9,8 @@ "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", "relatedUiObject": "Tutorial", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -18,7 +19,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugins-project.json b/Projects/Community-Plugins/Schemas/App-Schema/plugins-project.json new file mode 100644 index 000000000..f172a7eca --- /dev/null +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugins-project.json @@ -0,0 +1,45 @@ +{ + "type": "Plugins Project", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Foundations Project", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Plugins", + "relatedUiObject": "Plugins", + "relatedUiObjectProject": "Community-Plugins", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.executeAction", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionProject": "Foundations" + } + ], + "isProjectHead": true, + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "isPinned": true, + "positionLocked": true, + "icon": "plugins-project", + "childrenNodesProperties": [ + { + "name": "projectDefinition", + "type": "node", + "childType": "Project Definition", + "project": "Foundations", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/plugins.json b/Projects/Community-Plugins/Schemas/App-Schema/plugins.json similarity index 82% rename from Projects/Foundations/Schemas/App-Schema/plugins.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugins.json index 3858fa98d..7ec46df76 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugins.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugins.json @@ -8,7 +8,8 @@ "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", "relatedUiObject": "Plugin Project", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", @@ -17,7 +18,8 @@ "actionFunction": "payload.executeAction", "label": "Delete", "iconPathOn": "delete-entity", - "iconPathOff": "delete-entity" + "iconPathOff": "delete-entity", + "actionProject": "Foundations" } ], "isHierarchyHead": true, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-API-Maps/plugin-api-maps.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-API-Maps/plugin-api-maps.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-API-Maps/plugin-api-maps.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-API-Maps/plugin-api-maps.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Data-Mines/plugin-data-mines.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Data-Mines/plugin-data-mines.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Data-Mines/plugin-data-mines.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Data-Mines/plugin-data-mines.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-File-Position/plugin-file-position.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-File-Position/plugin-file-position.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-File-Position/plugin-file-position.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-File-Position/plugin-file-position.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-File/plugin-file.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-File/plugin-file.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-File/plugin-file.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-File/plugin-file.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Project/plugin-project.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Project/plugin-project.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Project/plugin-project.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Project/plugin-project.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Super-Scripts/plugin-super-scripts.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Super-Scripts/plugin-super-scripts.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Super-Scripts/plugin-super-scripts.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Super-Scripts/plugin-super-scripts.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Engines/plugin-trading-engines.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Engines/plugin-trading-engines.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Engines/plugin-trading-engines.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Engines/plugin-trading-engines.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Mines/plugin-trading-mines.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Mines/plugin-trading-mines.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Mines/plugin-trading-mines.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Mines/plugin-trading-mines.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Systems/plugin-trading-systems.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Systems/plugin-trading-systems.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Systems/plugin-trading-systems.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Systems/plugin-trading-systems.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Tutorials/plugin-tutorials.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Tutorials/plugin-tutorials.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugin/Plugin-Tutorials/plugin-tutorials.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugin/Plugin-Tutorials/plugin-tutorials.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/P/Plugins/Plugins/plugins.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugins/plugins.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/P/Plugins/Plugins/plugins.json rename to Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugins/plugins.json diff --git a/Projects/Community-Plugins/UI/Function-Libraries/ActionSwitch.js b/Projects/Community-Plugins/UI/Function-Libraries/ActionSwitch.js new file mode 100644 index 000000000..fd5eaf08b --- /dev/null +++ b/Projects/Community-Plugins/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,98 @@ +function newCommunityPluginsActionSwitch() { + + let thisObject = { + executeAction: executeAction, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + + } + + function initialize() { + /* Nothing to initialize since a Function Library does not hold any state. */ + } + + async function executeAction(action) { + switch (action.name) { + case 'Install as Plugin': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.installAsPlugin(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Projects': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginProjects(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Types': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginTypes(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Data Mines': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginDataMines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Trading Mines': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginTradingMines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Trading Systems': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginTradingSystems(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Trading Engines': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginTradingEngines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Learning Mines': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginLearningMines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Learning Systems': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginLearningSystems(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Learning Engines': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginLearningEngines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Tutorials': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginTutorials(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin API Maps': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginApiMaps(action.node, action.rootNodes) + } + break + case 'Enable Saving With Workspace': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.enableSavingWithWorkspace(action.node, action.rootNodes) + } + break + case 'Disable Saving With Workspace': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.disableSavingWithWorkspace(action.node, action.rootNodes) + } + break + case 'Save Plugin': + { + UI.projects.communityPlugins.functionLibraries.pluginsFunctions.savePlugin(action.node, action.rootNodes) + } + break + } + } +} diff --git a/Projects/Foundations/UI/Function-Libraries/PluginsFunctions.js b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js similarity index 66% rename from Projects/Foundations/UI/Function-Libraries/PluginsFunctions.js rename to Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js index 7e4db38a0..a13088a57 100644 --- a/Projects/Foundations/UI/Function-Libraries/PluginsFunctions.js +++ b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js @@ -1,4 +1,4 @@ -function newFoundationsFunctionLibraryPluginsFunctions() { +function newPluginsFunctionLibraryPluginsFunctions() { let thisObject = { addMissingPluginProjects: addMissingPluginProjects, addMissingPluginTypes: addMissingPluginTypes, @@ -43,14 +43,14 @@ function newFoundationsFunctionLibraryPluginsFunctions() { let pluginType = "Plugin" + " " + projectDefinition.plugins[i] if (UI.projects.foundations.utilities.nodeChildren.isMissingChildrenByType(node, pluginType) === true) { - UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, pluginType, undefined, project) + UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, pluginType, undefined, 'Community-Plugins') } } } } function addMissingPluginDataMines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -58,15 +58,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Data-Mines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Data-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Data-Mines', 'Data Mine') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Data-Mines', 'Data Mine', 'Data-Mining') } } function addMissingPluginTradingMines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -74,15 +74,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Trading-Mines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine', 'Algorithmic-Trading') } } function addMissingPluginTradingSystems(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -90,15 +90,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Trading-Systems', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System', 'Algorithmic-Trading') } } function addMissingPluginTradingEngines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -106,15 +106,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Trading-Engines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine', 'Algorithmic-Trading') } } function addMissingPluginLearningMines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -122,15 +122,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Learning-Mines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine', 'Machine-Learning') } } function addMissingPluginLearningSystems(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -138,15 +138,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Learning-Systems', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System', 'Machine-Learning') } } function addMissingPluginLearningEngines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -154,15 +154,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Learning-Engines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine', 'Machine-Learning') } } function addMissingPluginTutorials(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -170,15 +170,15 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Tutorials', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Tutorials', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Tutorials', 'Tutorial') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Tutorials', 'Tutorial', 'Education') } } function addMissingPluginApiMaps(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.") @@ -186,10 +186,10 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'API-Maps', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'API-Maps', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'API-Maps', 'API Map') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'API-Maps', 'API Map', 'Foundations') } } @@ -204,16 +204,16 @@ function newFoundationsFunctionLibraryPluginsFunctions() { } function savePlugin(node, rootNodes) { - UI.projects.foundations.utilities.plugins.savePluginFile(node) + UI.projects.communityPlugins.utilities.plugins.savePluginFile(node) } function installAsPlugin(node, rootNodes) { let plugins = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadByNodeType('Plugins') let pluginProject = UI.projects.foundations.utilities.nodeChildren.findChildByCodeName(plugins, node.project) - let pluginFolderName = UI.projects.foundations.utilities.plugins.getPluginFolderNamesByNodeType(node.type) + let pluginFolderName = UI.projects.communityPlugins.utilities.plugins.getPluginFolderNamesByNodeType(node.type) let pluginForlderNodeType = 'Plugin ' + pluginFolderName.replaceAll('-', ' ') let pluginFolderNode = UI.projects.foundations.utilities.nodeChildren.findChildByType(pluginProject, pluginForlderNodeType) - let pluginFile = UI.projects.foundations.utilities.plugins.addMissingPluginFile(pluginFolderNode, node.name, pluginFolderName, node.type, true) + let pluginFile = UI.projects.communityPlugins.utilities.plugins.addMissingPluginFile(pluginFolderNode, node.name, pluginFolderName, node.type, node.project, true) node.isPlugin = true if (pluginFile === undefined) { @@ -221,6 +221,6 @@ function newFoundationsFunctionLibraryPluginsFunctions() { return } - UI.projects.foundations.utilities.plugins.savePluginFile(pluginFile) + UI.projects.communityPlugins.utilities.plugins.savePluginFile(pluginFile) } } diff --git a/Projects/Foundations/UI/Utilities/Plugins.js b/Projects/Community-Plugins/UI/Utilities/Plugins.js similarity index 97% rename from Projects/Foundations/UI/Utilities/Plugins.js rename to Projects/Community-Plugins/UI/Utilities/Plugins.js index 70fb48ac1..aeea2de25 100644 --- a/Projects/Foundations/UI/Utilities/Plugins.js +++ b/Projects/Community-Plugins/UI/Utilities/Plugins.js @@ -1,4 +1,4 @@ -function newFoundationsUtilitiesPlugins() { +function newPluginsUtilitiesPlugins() { let thisObject = { getPluginFileNames: getPluginFileNames, getPluginFolderNamesByNodeType: getPluginFolderNamesByNodeType, @@ -24,20 +24,20 @@ function newFoundationsUtilitiesPlugins() { } } - function addMissingPluginFiles(node, fileNames, pluginFolder, nodeType) { + function addMissingPluginFiles(node, fileNames, pluginFolder, nodeType, project) { for (let i = 0; i < fileNames.length; i++) { let fileName = fileNames[i] fileName = fileName.replace('.json', '') - addMissingPluginFile(node, fileName, pluginFolder, nodeType, false) + addMissingPluginFile(node, fileName, pluginFolder, nodeType, project, false) } } - function addMissingPluginFile(node, fileName, pluginFolder, nodeType, saveWithWorkspace) { + function addMissingPluginFile(node, fileName, pluginFolder, nodeType, project, saveWithWorkspace) { if (UI.projects.foundations.utilities.nodeChildren.isMissingChildrenByName(node, fileName) === true) { - let child = UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, 'Plugin File', undefined, 'Foundations') + let child = UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, 'Plugin File', undefined, 'Community-Plugins') child.name = fileName child.config = JSON.stringify({ - project: node.project, + project: project, fileName: fileName, folderName: pluginFolder, nodeType: nodeType, diff --git a/Projects/Foundations/Icons/Api/api-data-fetcher-bot.png b/Projects/Data-Mining/Icons/Api/api-data-fetcher-bot.png similarity index 100% rename from Projects/Foundations/Icons/Api/api-data-fetcher-bot.png rename to Projects/Data-Mining/Icons/Api/api-data-fetcher-bot.png diff --git a/Projects/Foundations/Icons/Data/data-mine.png b/Projects/Data-Mining/Icons/Data/data-mine.png similarity index 100% rename from Projects/Foundations/Icons/Data/data-mine.png rename to Projects/Data-Mining/Icons/Data/data-mine.png diff --git a/Projects/Data-Mining/Icons/Data/data-mining-project.png b/Projects/Data-Mining/Icons/Data/data-mining-project.png new file mode 100644 index 000000000..f8b8fa791 Binary files /dev/null and b/Projects/Data-Mining/Icons/Data/data-mining-project.png differ diff --git a/Projects/Foundations/Icons/indicator-bot.png b/Projects/Data-Mining/Icons/indicator-bot.png similarity index 100% rename from Projects/Foundations/Icons/indicator-bot.png rename to Projects/Data-Mining/Icons/indicator-bot.png diff --git a/Projects/Foundations/Icons/sensor-bot.png b/Projects/Data-Mining/Icons/sensor-bot.png similarity index 100% rename from Projects/Foundations/Icons/sensor-bot.png rename to Projects/Data-Mining/Icons/sensor-bot.png diff --git a/Projects/Foundations/Plugins/Data-Mines/Alpha.json b/Projects/Data-Mining/Plugins/Data-Mines/Alpha.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Alpha.json rename to Projects/Data-Mining/Plugins/Data-Mines/Alpha.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Barcelona.json b/Projects/Data-Mining/Plugins/Data-Mines/Barcelona.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Barcelona.json rename to Projects/Data-Mining/Plugins/Data-Mines/Barcelona.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Bollinger.json b/Projects/Data-Mining/Plugins/Data-Mines/Bollinger.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Bollinger.json rename to Projects/Data-Mining/Plugins/Data-Mines/Bollinger.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Buddha.json b/Projects/Data-Mining/Plugins/Data-Mines/Buddha.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Buddha.json rename to Projects/Data-Mining/Plugins/Data-Mines/Buddha.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Candles.json b/Projects/Data-Mining/Plugins/Data-Mines/Candles.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Candles.json rename to Projects/Data-Mining/Plugins/Data-Mines/Candles.json diff --git a/Projects/Foundations/Plugins/Data-Mines/CoinGecko.json b/Projects/Data-Mining/Plugins/Data-Mines/CoinGecko.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/CoinGecko.json rename to Projects/Data-Mining/Plugins/Data-Mines/CoinGecko.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Delta.json b/Projects/Data-Mining/Plugins/Data-Mines/Delta.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Delta.json rename to Projects/Data-Mining/Plugins/Data-Mines/Delta.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Heikin.json b/Projects/Data-Mining/Plugins/Data-Mines/Heikin.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Heikin.json rename to Projects/Data-Mining/Plugins/Data-Mines/Heikin.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Indicator-Add-ons.json b/Projects/Data-Mining/Plugins/Data-Mines/Indicator-Add-ons.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Indicator-Add-ons.json rename to Projects/Data-Mining/Plugins/Data-Mines/Indicator-Add-ons.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Masters.json b/Projects/Data-Mining/Plugins/Data-Mines/Masters.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Masters.json rename to Projects/Data-Mining/Plugins/Data-Mines/Masters.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Messari.json b/Projects/Data-Mining/Plugins/Data-Mines/Messari.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Messari.json rename to Projects/Data-Mining/Plugins/Data-Mines/Messari.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Omega-One.json b/Projects/Data-Mining/Plugins/Data-Mines/Omega-One.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Omega-One.json rename to Projects/Data-Mining/Plugins/Data-Mines/Omega-One.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Pluvtech.json b/Projects/Data-Mining/Plugins/Data-Mines/Pluvtech.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Pluvtech.json rename to Projects/Data-Mining/Plugins/Data-Mines/Pluvtech.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Polus.json b/Projects/Data-Mining/Plugins/Data-Mines/Polus.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Polus.json rename to Projects/Data-Mining/Plugins/Data-Mines/Polus.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Quasar.json b/Projects/Data-Mining/Plugins/Data-Mines/Quasar.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Quasar.json rename to Projects/Data-Mining/Plugins/Data-Mines/Quasar.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Samurai.json b/Projects/Data-Mining/Plugins/Data-Mines/Samurai.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Samurai.json rename to Projects/Data-Mining/Plugins/Data-Mines/Samurai.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Sparta.json b/Projects/Data-Mining/Plugins/Data-Mines/Sparta.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Sparta.json rename to Projects/Data-Mining/Plugins/Data-Mines/Sparta.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Turtles.json b/Projects/Data-Mining/Plugins/Data-Mines/Turtles.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Turtles.json rename to Projects/Data-Mining/Plugins/Data-Mines/Turtles.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Webhooks.json b/Projects/Data-Mining/Plugins/Data-Mines/Webhooks.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Webhooks.json rename to Projects/Data-Mining/Plugins/Data-Mines/Webhooks.json diff --git a/Projects/Foundations/Plugins/Data-Mines/Zeus.json b/Projects/Data-Mining/Plugins/Data-Mines/Zeus.json similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/Zeus.json rename to Projects/Data-Mining/Plugins/Data-Mines/Zeus.json diff --git a/Projects/Foundations/Plugins/Data-Mines/quantum.json b/Projects/Data-Mining/Plugins/Data-Mines/quantum.json old mode 100755 new mode 100644 similarity index 100% rename from Projects/Foundations/Plugins/Data-Mines/quantum.json rename to Projects/Data-Mining/Plugins/Data-Mines/quantum.json diff --git a/Projects/Foundations/Schemas/App-Schema/Api/api-data-fetcher-bot.json b/Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json similarity index 70% rename from Projects/Foundations/Schemas/App-Schema/Api/api-data-fetcher-bot.json rename to Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json index a0837f199..6265ca234 100644 --- a/Projects/Foundations/Schemas/App-Schema/Api/api-data-fetcher-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json @@ -7,19 +7,24 @@ "iconPathOn": "configuration", "iconPathOff": "configuration", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -28,7 +33,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -48,13 +54,15 @@ "name": "processes", "type": "array", "childType": "Process Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "products", "type": "array", "childType": "Product Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" } ], "propertyNameAtParent": "apiDataFetcherBots", diff --git a/Projects/Foundations/Schemas/App-Schema/data-mine.json b/Projects/Data-Mining/Schemas/App-Schema/data-mine.json similarity index 71% rename from Projects/Foundations/Schemas/App-Schema/data-mine.json rename to Projects/Data-Mining/Schemas/App-Schema/data-mine.json index bd5e6de93..fd28d86f6 100644 --- a/Projects/Foundations/Schemas/App-Schema/data-mine.json +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mine.json @@ -6,32 +6,39 @@ "label": "Configure", "iconPathOn": "configuration", "iconPathOff": "configuration", + "iconProject": "Foundations", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Sensor Bot", "relatedUiObject": "Sensor Bot", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add API Data Fetcher Bot", "relatedUiObject": "API Data Fetcher Bot", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Indicator Bot", "relatedUiObject": "Indicator Bot", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Plotter", "relatedUiObject": "Plotter", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -40,7 +47,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -72,7 +80,8 @@ { "name": "plotters", "type": "array", - "childType": "Plotter" + "childType": "Plotter", + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json new file mode 100644 index 000000000..46d4dce98 --- /dev/null +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json @@ -0,0 +1,47 @@ +{ + "type": "Data-Mining Project", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "iconPathOn": "data-mining-project", + "iconPathOff": "data-mining-project", + "iconProject": "Data-Mining", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Data Mine", + "relatedUiObject": "Data Mine", + "relatedUiObjectProject": "Data-Mining", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.executeAction", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionProject": "Foundations" + } + ], + "isProjectHead": true, + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "isPinned": true, + "positionLocked": true, + "icon": "data-mining-project", + "childrenNodesProperties": [ + { + "name": "projectDefinition", + "type": "node", + "childType": "Project Definition", + "project": "Foundations", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/indicator-bot.json b/Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json similarity index 69% rename from Projects/Foundations/Schemas/App-Schema/indicator-bot.json rename to Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json index 98b8b9534..6846ae63a 100644 --- a/Projects/Foundations/Schemas/App-Schema/indicator-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json @@ -7,19 +7,24 @@ "iconPathOn": "configuration", "iconPathOff": "configuration", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -28,7 +33,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -48,13 +54,15 @@ "name": "processes", "type": "array", "childType": "Process Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "products", "type": "array", "childType": "Product Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" } ], "propertyNameAtParent": "indicatorBots" diff --git a/Projects/Foundations/Schemas/App-Schema/sensor-bot.json b/Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json similarity index 69% rename from Projects/Foundations/Schemas/App-Schema/sensor-bot.json rename to Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json index 2fe664109..779e4b644 100644 --- a/Projects/Foundations/Schemas/App-Schema/sensor-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json @@ -7,19 +7,24 @@ "iconPathOn": "configuration", "iconPathOff": "configuration", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -28,7 +33,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -48,13 +54,15 @@ "name": "processes", "type": "array", "childType": "Process Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "products", "type": "array", "childType": "Product Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" } ], "propertyNameAtParent": "sensorBots" diff --git a/Projects/Foundations/Schemas/Docs-Nodes/A/API/API-Data-Fetcher-Bot/api-data-fetcher-bot.json b/Projects/Data-Mining/Schemas/Docs-Nodes/A/API/API-Data-Fetcher-Bot/api-data-fetcher-bot.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/A/API/API-Data-Fetcher-Bot/api-data-fetcher-bot.json rename to Projects/Data-Mining/Schemas/Docs-Nodes/A/API/API-Data-Fetcher-Bot/api-data-fetcher-bot.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json b/Projects/Data-Mining/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json rename to Projects/Data-Mining/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json b/Projects/Data-Mining/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json rename to Projects/Data-Mining/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/S/Sensor/Sensor-Bot/sensor-bot.json b/Projects/Data-Mining/Schemas/Docs-Nodes/S/Sensor/Sensor-Bot/sensor-bot.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/S/Sensor/Sensor-Bot/sensor-bot.json rename to Projects/Data-Mining/Schemas/Docs-Nodes/S/Sensor/Sensor-Bot/sensor-bot.json diff --git a/Projects/Foundations/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js b/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js rename to Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js index 1c3a6ef54..a343e5684 100644 --- a/Projects/Foundations/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js +++ b/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js @@ -1,5 +1,5 @@ -exports.newFoundationsBotModulesFetchingProcess = function (processIndex) { +exports.newDataMiningBotModulesFetchingProcess = function (processIndex) { const MODULE_NAME = "Fetching Process"; diff --git a/Projects/Foundations/TS/Bot-Modules/API-Data-Fetcher-Bot/SingleMarketAPIDataFetcherBot.js b/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/SingleMarketAPIDataFetcherBot.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/API-Data-Fetcher-Bot/SingleMarketAPIDataFetcherBot.js rename to Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/SingleMarketAPIDataFetcherBot.js index b0b9dea23..b87eb3483 100644 --- a/Projects/Foundations/TS/Bot-Modules/API-Data-Fetcher-Bot/SingleMarketAPIDataFetcherBot.js +++ b/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/SingleMarketAPIDataFetcherBot.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesSingleMarketAPIDataFetcherBot = function (processIndex) { +exports.newDataMiningBotModulesSingleMarketAPIDataFetcherBot = function (processIndex) { const MODULE_NAME = "Single Market API Data Fetcher Bot"; @@ -41,7 +41,8 @@ exports.newFoundationsBotModulesSingleMarketAPIDataFetcherBot = function (proces let botModuleDefinition = TS.projects.foundations.functionLibraries.taskFunctions.getBotModuleByName( TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.botModule ) - let project = TS.projects[TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName.toLowerCase()] + let projectCodeName = TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName + let project = TS.projects[PROJECTS_SCHEMA_MAP.get(projectCodeName).propertyName] let botModule = project.botModules[botModuleDefinition.propertyName] let moduleFunction = botModule[botModuleDefinition.functionName] botModuleObject = moduleFunction(processIndex) diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameDaily.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameDaily.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameDaily.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameDaily.js index e7a62f89e..8566dfd9b 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameDaily.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameDaily.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesBollingerBandsMultiTimeFrameDaily = function (processIndex) { +exports.newDataMiningBotModulesBollingerBandsMultiTimeFrameDaily = function (processIndex) { const MODULE_NAME = "Bollinger Bands Multi Time Frame Daily" const CANDLES_FOLDER_NAME = "Candles" diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameMarket.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameMarket.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameMarket.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameMarket.js index 77415d46e..70c615653 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameMarket.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameMarket.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesBollingerBandsMultiTimeFrameMarket = function (processIndex) { +exports.newDataMiningBotModulesBollingerBandsMultiTimeFrameMarket = function (processIndex) { const MODULE_NAME = "Bollinger Bands Multi Time Frame Market" const CANDLES_FOLDER_NAME = "Candles" diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js index 56962ad7f..e50e98bc7 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesCandlesVolumesMultiTimeFrameDaily = function (processIndex) { +exports.newDataMiningBotModulesCandlesVolumesMultiTimeFrameDaily = function (processIndex) { const MODULE_NAME = "Candles Volumes Multi Time Frame Daily"; const CANDLES_FOLDER_NAME = "Candles"; diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js index ea86ca2f6..51f986645 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesCandlesVolumesMultiTimeFrameMarket = function (processIndex) { +exports.newDataMiningBotModulesCandlesVolumesMultiTimeFrameMarket = function (processIndex) { const MODULE_NAME = "Candles Volumes Multi Time Frame Market" const CANDLES_FOLDER_NAME = "Candles" diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameDaily.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameDaily.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameDaily.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameDaily.js index 93c384207..8ca4f8a82 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameDaily.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameDaily.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesFromOneMinToMultiTimeFrameDaily = function (processIndex) { +exports.newDataMiningBotModulesFromOneMinToMultiTimeFrameDaily = function (processIndex) { /* This module is about converting a One-Min Daily typeo of data set into a Multi Time Frame Daily type. diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameMarket.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameMarket.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameMarket.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameMarket.js index 6d943ed83..6c07fa35f 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameMarket.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameMarket.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesFromOneMinToMultiTimeFrameMarket = function (processIndex) { +exports.newDataMiningBotModulesFromOneMinToMultiTimeFrameMarket = function (processIndex) { /* This module is about converting a One-Min Daily typeo of data set into a Multi Time Frame Market type. diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js index f6f23ce0c..68129a3ff 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesIndicatorOutput = function (processIndex) { +exports.newDataMiningBotModulesIndicatorOutput = function (processIndex) { /* This module coordinates the actions to be taken to generate an indicator output. It is used from both Multi-Time-Frame-Market and Multi-Time-Frame-Daily frameworks. diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js index d4815fe6b..db2b8c77b 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesMultiTimeFrameDaily = function (processIndex) { +exports.newDataMiningBotModulesMultiTimeFrameDaily = function (processIndex) { const MODULE_NAME = "Multi Time Frame Daily" /* This module deals with Daily Files, that are data files for Time Frames below 1 hour. @@ -25,7 +25,7 @@ statusDependenciesModule = pStatusDependencies; dataDependenciesModule = pStatusDependenciesModule; - indicatorOutputModule = TS.projects.foundations.botModules.indicatorOutput.newFoundationsBotModulesIndicatorOutput(processIndex) + indicatorOutputModule = TS.projects.dataMining.botModules.indicatorOutput.newDataMiningBotModulesIndicatorOutput(processIndex) indicatorOutputModule.initialize(callBackFunction) } diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js index 739a7dc5d..764653a54 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesMultiTimeFrameMarket = function (processIndex) { +exports.newDataMiningBotModulesMultiTimeFrameMarket = function (processIndex) { const MODULE_NAME = "Multi Time Frame Market" /* This module deals with Market Files, that are data files for Time Frames of 1 hour and above. @@ -24,7 +24,7 @@ statusDependenciesModule = pStatusDependencies dataDependenciesModule = pStatusDependenciesModule - indicatorOutputModule = TS.projects.foundations.botModules.indicatorOutput.newFoundationsBotModulesIndicatorOutput(processIndex) + indicatorOutputModule = TS.projects.dataMining.botModules.indicatorOutput.newDataMiningBotModulesIndicatorOutput(processIndex) indicatorOutputModule.initialize(callBackFunction) } diff --git a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js rename to Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js index 85baf3204..47de8ea6e 100644 --- a/Projects/Foundations/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesSingleMarketIndicatorBot = function (processIndex) { +exports.newDataMiningBotModulesSingleMarketIndicatorBot = function (processIndex) { const MODULE_NAME = "Single Market Indicator Bot"; @@ -40,7 +40,8 @@ let botModuleDefinition = TS.projects.foundations.functionLibraries.taskFunctions.getBotModuleByName( TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.botModule ) - let project = TS.projects[TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName.toLowerCase()] + let projectCodeName = TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName + let project = TS.projects[PROJECTS_SCHEMA_MAP.get(projectCodeName).propertyName] let botModule = project.botModules[botModuleDefinition.propertyName] let moduleFunction = botModule[botModuleDefinition.functionName] botModuleObject = moduleFunction(processIndex) @@ -276,22 +277,22 @@ switch (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.framework.name) { case 'Multi-Time-Frame-Market': { - processFramework = TS.projects.foundations.botModules.multiTimeFrameMarket.newFoundationsBotModulesMultiTimeFrameMarket(processIndex) + processFramework = TS.projects.dataMining.botModules.multiTimeFrameMarket.newDataMiningBotModulesMultiTimeFrameMarket(processIndex) intitializeProcessFramework() break; } case 'Multi-Time-Frame-Daily': { - processFramework = TS.projects.foundations.botModules.multiTimeFrameDaily.newFoundationsBotModulesMultiTimeFrameDaily(processIndex) + processFramework = TS.projects.dataMining.botModules.multiTimeFrameDaily.newDataMiningBotModulesMultiTimeFrameDaily(processIndex) intitializeProcessFramework() break; } case 'From-One-Min-To-Multi-Time-Frame-Market': { - processFramework = TS.projects.foundations.botModules.fromOneMinToMultiTimeFrameMarket.newFoundationsBotModulesFromOneMinToMultiTimeFrameMarket(processIndex) + processFramework = TS.projects.dataMining.botModules.fromOneMinToMultiTimeFrameMarket.newDataMiningBotModulesFromOneMinToMultiTimeFrameMarket(processIndex) intitializeProcessFramework() break; } case 'From-One-Min-To-Multi-Time-Frame-Daily': { - processFramework = TS.projects.foundations.botModules.fromOneMinToMultiTimeFrameDaily.newFoundationsBotModulesFromOneMinToMultiTimeFrameDaily(processIndex) + processFramework = TS.projects.dataMining.botModules.fromOneMinToMultiTimeFrameDaily.newDataMiningBotModulesFromOneMinToMultiTimeFrameDaily(processIndex) intitializeProcessFramework() break; } diff --git a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Exchange-Raw-Data/HistoricOHLCVs.js b/Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/Exchange-Raw-Data/HistoricOHLCVs.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Exchange-Raw-Data/HistoricOHLCVs.js rename to Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/Exchange-Raw-Data/HistoricOHLCVs.js index 34cbb378e..ca299e350 100644 --- a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Exchange-Raw-Data/HistoricOHLCVs.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/Exchange-Raw-Data/HistoricOHLCVs.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesHistoricOHLCVs = function (processIndex) { +exports.newDataMiningBotModulesHistoricOHLCVs = function (processIndex) { const MODULE_NAME = "Historic OHLCVs"; const CANDLES_FOLDER_NAME = "Candles/One-Min"; diff --git a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/SingleMarketSensorBot.js b/Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/SingleMarketSensorBot.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Sensor-Bot/SingleMarketSensorBot.js rename to Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/SingleMarketSensorBot.js index 479524f04..32b7e8c16 100644 --- a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/SingleMarketSensorBot.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/SingleMarketSensorBot.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesSingleMarketSensorBot = function (processIndex) { +exports.newDataMiningBotModulesSingleMarketSensorBot = function (processIndex) { const MODULE_NAME = "Single Market Sensor Bot"; @@ -41,7 +41,8 @@ let botModuleDefinition = TS.projects.foundations.functionLibraries.taskFunctions.getBotModuleByName( TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.botModule ) - let project = TS.projects[TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName.toLowerCase()] + let projectCodeName = TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName + let project = TS.projects[PROJECTS_SCHEMA_MAP.get(projectCodeName).propertyName] let botModule = project.botModules[botModuleDefinition.propertyName] let moduleFunction = botModule[botModuleDefinition.functionName] botModuleObject = moduleFunction(processIndex) diff --git a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js b/Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js rename to Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js index 23d8753c4..ff45cd70d 100644 --- a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js @@ -1,5 +1,5 @@  -exports.newFoundationsBotModulesCheckWebhook = function (processIndex) { +exports.newDataMiningBotModulesCheckWebhook = function (processIndex) { const MODULE_NAME = "Check Webhooks"; const FOLDER_NAME = "External-Signals"; diff --git a/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js b/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js new file mode 100644 index 000000000..9a00f8ac1 --- /dev/null +++ b/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,38 @@ +function newDataMiningActionSwitch() { + + let thisObject = { + executeAction: executeAction, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + + } + + function initialize() { + /* Nothing to initialize since a Function Library does not hold any state. */ + } + + async function executeAction(action) { + switch (action.name) { + case 'Add All Output Datasets': + { + UI.projects.dataMining.functionLibraries.mineFunctions.addAllOutputDatasets(action.node) + } + break + case 'Add All Data Dependencies': + { + UI.projects.dataMining.functionLibraries.mineFunctions.addAllDataDependencies(action.node) + } + break + case 'Add All Data Mine Dependencies': + { + UI.projects.dataMining.functionLibraries.mineFunctions.addAllDataMineDataDependencies(action.node, action.rootNodes) + } + break + } + } +} diff --git a/Projects/Foundations/UI/Function-Libraries/MineFunctions.js b/Projects/Data-Mining/UI/Function-Libraries/MineFunctions.js similarity index 98% rename from Projects/Foundations/UI/Function-Libraries/MineFunctions.js rename to Projects/Data-Mining/UI/Function-Libraries/MineFunctions.js index 322cd5b39..3082c0f08 100644 --- a/Projects/Foundations/UI/Function-Libraries/MineFunctions.js +++ b/Projects/Data-Mining/UI/Function-Libraries/MineFunctions.js @@ -1,4 +1,4 @@ -function newFoundationsFunctionLibraryMineFunctions() { +function newDataMiningFunctionLibraryMineFunctions() { let thisObject = { addAllOutputDatasets: addAllOutputDatasets, addAllDataDependencies: addAllDataDependencies, diff --git a/Projects/Education/Schemas/App-Schema/tutorial-step.json b/Projects/Education/Schemas/App-Schema/tutorial-step.json index cc05ff412..8f64be60d 100644 --- a/Projects/Education/Schemas/App-Schema/tutorial-step.json +++ b/Projects/Education/Schemas/App-Schema/tutorial-step.json @@ -3,7 +3,7 @@ "menuItems": [ { "action": "Play Tutorial Step", - "actionProject": "Foundations", + "actionProject": "Education", "label": "Play", "iconPathOn": "play", "iconPathOff": "play", @@ -11,7 +11,7 @@ }, { "action": "Resume Tutorial Step", - "actionProject": "Foundations", + "actionProject": "Education", "label": "Resume", "iconPathOn": "resume", "iconPathOff": "resume", diff --git a/Projects/Education/Schemas/App-Schema/tutorial-topic.json b/Projects/Education/Schemas/App-Schema/tutorial-topic.json index 5c68799a9..90d9a08fe 100644 --- a/Projects/Education/Schemas/App-Schema/tutorial-topic.json +++ b/Projects/Education/Schemas/App-Schema/tutorial-topic.json @@ -3,7 +3,7 @@ "menuItems": [ { "action": "Play Tutorial Topic", - "actionProject": "Foundations", + "actionProject": "Education", "label": "Play", "iconPathOn": "play", "iconPathOff": "play", @@ -11,7 +11,7 @@ }, { "action": "Resume Tutorial Topic", - "actionProject": "Foundations", + "actionProject": "Education", "label": "Resume", "iconPathOn": "resume", "iconPathOff": "resume", diff --git a/Projects/Education/Schemas/App-Schema/tutorial.json b/Projects/Education/Schemas/App-Schema/tutorial.json index c0d67ff91..bba92c9f3 100644 --- a/Projects/Education/Schemas/App-Schema/tutorial.json +++ b/Projects/Education/Schemas/App-Schema/tutorial.json @@ -3,7 +3,7 @@ "menuItems": [ { "action": "Play Tutorial", - "actionProject": "Foundations", + "actionProject": "Education", "label": "Play", "iconPathOn": "play", "iconPathOff": "play", @@ -11,7 +11,7 @@ }, { "action": "Resume Tutorial", - "actionProject": "Foundations", + "actionProject": "Education", "label": "Resume", "iconPathOn": "resume", "iconPathOff": "resume", @@ -40,7 +40,7 @@ }, { "action": "Reset Tutorial Progress", - "actionProject": "Foundations", + "actionProject": "Education", "askConfirmation": true, "confirmationLabel": "Confirm to Reset", "label": "Reset Tutorial Progress", diff --git a/Projects/Education/UI/Function-Libraries/ActionSwitch.js b/Projects/Education/UI/Function-Libraries/ActionSwitch.js index 03bf636ca..329bb4a35 100644 --- a/Projects/Education/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Education/UI/Function-Libraries/ActionSwitch.js @@ -18,9 +18,41 @@ function newEducationActionSwitch() { async function executeAction(action) { switch (action.name) { - case 'Action Name': { - // Example: return UI.projects.foundations.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) - } + case 'Play Tutorial': + { + UI.projects.education.spaces.tutorialSpace.playTutorial(action.node) + } + break + case 'Play Tutorial Topic': + { + UI.projects.education.spaces.tutorialSpace.playTutorialTopic(action.node) + } + break + case 'Play Tutorial Step': + { + UI.projects.education.spaces.tutorialSpace.playTutorialStep(action.node) + } + break + case 'Resume Tutorial': + { + UI.projects.education.spaces.tutorialSpace.resumeTutorial(action.node) + } + break + case 'Resume Tutorial Topic': + { + UI.projects.education.spaces.tutorialSpace.resumeTutorialTopic(action.node) + } + break + case 'Resume Tutorial Step': + { + UI.projects.education.spaces.tutorialSpace.resumeTutorialStep(action.node) + } + break + case 'Reset Tutorial Progress': + { + UI.projects.education.spaces.tutorialSpace.resetTutorialProgress(action.node) + } + break } } } diff --git a/Projects/Education/UI/Spaces/Docs-Space/DocumentPage.js b/Projects/Education/UI/Spaces/Docs-Space/DocumentPage.js index 15d64e845..eba891dec 100644 --- a/Projects/Education/UI/Spaces/Docs-Space/DocumentPage.js +++ b/Projects/Education/UI/Spaces/Docs-Space/DocumentPage.js @@ -854,7 +854,7 @@ function newFoundationsDocsDocumentPage() { if (appSchemaDocument === undefined || appSchemaDocument.menuItems === undefined) { return } for (let i = 0; i < appSchemaDocument.menuItems.length; i++) { let menuItem = appSchemaDocument.menuItems[i] - let collectionImage = getIcon() + let collectionImage = getIcon(appSchemaDocument.menuItems[i].relatedUiObjectProject, appSchemaDocument.menuItems[i].actionProject) if (collectionImage === undefined) { continue } @@ -866,12 +866,23 @@ function newFoundationsDocsDocumentPage() { let dummyImage = parentElement.childNodes[0] parentElement.replaceChild(imageElement, dummyImage) - function getIcon() { + function getIcon(relatedUiObjectProject, actionProject) { + let project if (menuItem.relatedUiObject !== undefined) { - return UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(UI.projects.education.spaces.docsSpace.currentDocumentBeingRendered.project, menuItem.relatedUiObject) + if (relatedUiObjectProject !== undefined) { + project = relatedUiObjectProject + } else { + project = UI.projects.education.spaces.docsSpace.currentDocumentBeingRendered.project + } + return UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(project, menuItem.relatedUiObject) } else { + if (actionProject !== undefined) { + project = actionProject + } else { + project = UI.projects.education.spaces.docsSpace.currentDocumentBeingRendered.project + } if (menuItem.iconPathOn !== undefined) { - return UI.projects.foundations.spaces.designSpace.getIconByProjectAndName(UI.projects.education.spaces.docsSpace.currentDocumentBeingRendered.project, menuItem.iconPathOn) + return UI.projects.foundations.spaces.designSpace.getIconByProjectAndName(project, menuItem.iconPathOn) } else { return UI.projects.foundations.spaces.designSpace.getIconByProjectAndName('Foundations', 'bitcoin') } diff --git a/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json b/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json index 2d0c7b7e4..4640f55fb 100644 --- a/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json +++ b/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json @@ -1,6 +1,6 @@ { "type": "Workspace", - "name": "Getting Started Tutorials", + "name": "Getting-Started-Tutorials", "config": "{\n \"docsLanguage\": \"EN\",\n \"contributionsBranch\": \"develop\"\n}", "rootNodes": [ { @@ -20,7 +20,7 @@ "projectDataTasks": [ { "type": "Project Data Tasks", - "name": "Foundations", + "name": "Data-Mining", "project": "Foundations", "exchangeDataTasks": [ { @@ -87,13 +87,13 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ "Resistances and Supports", "Indicator Bot", - "Foundations", + "Data-Mining", "d88356a2-36cc-4bdc-ac10-01b8643352c2" ], [ @@ -139,13 +139,13 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ "Resistances and Supports", "Indicator Bot", - "Foundations", + "Data-Mining", "d88356a2-36cc-4bdc-ac10-01b8643352c2" ], [ @@ -259,7 +259,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ] ] @@ -319,13 +319,13 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ "Exchange Raw Data", "Sensor Bot", - "Foundations", + "Data-Mining", "af924204-66a2-47d4-9910-66ab78acb06f" ], [ @@ -428,13 +428,13 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ "Candles Volumes", "Indicator Bot", - "Foundations", + "Data-Mining", "285a4618-0423-4ac9-9df9-7a78be6fd915" ], [ @@ -480,13 +480,13 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ "Candles Volumes", "Indicator Bot", - "Foundations", + "Data-Mining", "285a4618-0423-4ac9-9df9-7a78be6fd915" ], [ @@ -600,7 +600,7 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ] ] @@ -740,21 +740,21 @@ }, "referenceParent": { "type": "Project Definition", - "name": "Foundations", - "id": "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "name": "Data-Mining", + "id": "588e6946-31d9-4389-8cf2-37715795ba4d" }, "referenceParentCombinedNodePath": [ [ - "New Foundations Project", - "Foundations Project", - "Foundations", - "cf9f8b3b-77c6-43c6-b01f-95cf366a91f6" + "New Data-Mining Project", + "Data-Mining Project", + "Data-Mining", + "c80ac0bd-1c21-4e7c-b4b8-020e212bd6f4" ], [ - "Foundations", + "Data-Mining", "Project Definition", "Foundations", - "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "588e6946-31d9-4389-8cf2-37715795ba4d" ] ] } @@ -790,7 +790,7 @@ "projectLearningTasks": [ { "type": "Project Learning Tasks", - "name": "Foundations", + "name": "Machine-Learning", "project": "Foundations", "exchangeLearningTasks": [ { @@ -806,17 +806,17 @@ "id": "aa592e1f-24db-41c7-a5e7-67723812fbce", "savedPayload": { "position": { - "x": 25839.356993272086, - "y": 29987.688294073963 + "x": 25897.356993272086, + "y": 29983.688294073963 }, "targetPosition": { - "x": 25689.356993272086, - "y": 30247.495915209296 + "x": 25747.356993272086, + "y": 30243.495915209296 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 @@ -867,12 +867,12 @@ "id": "598be123-5912-4b2c-857d-aee0667c620b", "savedPayload": { "position": { - "x": 25689.356993272086, - "y": 30247.495915209296 + "x": 25747.356993272086, + "y": 30243.495915209296 }, "targetPosition": { - "x": 25539.356993272086, - "y": 30507.30353634463 + "x": 25597.356993272086, + "y": 30503.30353634463 }, "floatingObject": { "isPinned": false, @@ -916,17 +916,17 @@ "id": "7619d28e-1012-4d41-9d65-75d44e0b42b4", "savedPayload": { "position": { - "x": 25539.356993272086, - "y": 30507.30353634463 + "x": 25597.356993272086, + "y": 30503.30353634463 }, "targetPosition": { - "x": 25389.356993272086, - "y": 30767.11115747996 + "x": 25447.356993272086, + "y": 30763.11115747996 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 3, "distanceToParent": 3, "arrangementStyle": 0 @@ -936,21 +936,21 @@ }, "referenceParent": { "type": "Project Definition", - "name": "Foundations", - "id": "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "name": "Machine-Learning", + "id": "b15d5bbb-0433-40c3-bdd7-3d2aa0ddc389" }, "referenceParentCombinedNodePath": [ [ - "New Foundations Project", - "Foundations Project", - "Foundations", - "cf9f8b3b-77c6-43c6-b01f-95cf366a91f6" + "New Machine-Learning Project", + "Machine-Learning Project", + "Machine-Learning", + "949164da-b9f8-4e0a-8482-f1fd06a22cd0" ], [ - "Foundations", + "Machine-Learning", "Project Definition", "Foundations", - "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "b15d5bbb-0433-40c3-bdd7-3d2aa0ddc389" ] ] } @@ -986,7 +986,7 @@ "projectTradingTasks": [ { "type": "Project Trading Tasks", - "name": "Foundations", + "name": "Algorithmic-Trading", "project": "Foundations", "exchangeTradingTasks": [ { @@ -1340,7 +1340,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ] ] @@ -1380,7 +1380,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ] ] @@ -1439,13 +1439,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -1559,7 +1559,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ] ] @@ -1699,21 +1699,21 @@ }, "referenceParent": { "type": "Project Definition", - "name": "Foundations", - "id": "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "name": "Algorithmic-Trading", + "id": "159d6c95-233b-4d79-8fe0-b1d75d40f90b" }, "referenceParentCombinedNodePath": [ [ - "New Foundations Project", - "Foundations Project", - "Foundations", - "cf9f8b3b-77c6-43c6-b01f-95cf366a91f6" + "New Algorithmic-Trading Project", + "Algorithmic-Trading Project", + "Algorithmic-Trading", + "96734230-bb91-4527-b2a9-e2f16eb0be96" ], [ - "Foundations", + "Algorithmic-Trading", "Project Definition", "Foundations", - "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "159d6c95-233b-4d79-8fe0-b1d75d40f90b" ] ] } @@ -2075,7 +2075,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ] ] @@ -2115,7 +2115,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ] ] @@ -2174,13 +2174,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -2370,7 +2370,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ] ] @@ -2622,13 +2622,13 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ "Resistances and Supports", "Indicator Bot", - "Foundations", + "Data-Mining", "d88356a2-36cc-4bdc-ac10-01b8643352c2" ], [ @@ -2674,13 +2674,13 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ "Resistances and Supports", "Indicator Bot", - "Foundations", + "Data-Mining", "d88356a2-36cc-4bdc-ac10-01b8643352c2" ], [ @@ -2748,7 +2748,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ] ] @@ -2798,13 +2798,13 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ "Exchange Raw Data", "Sensor Bot", - "Foundations", + "Data-Mining", "af924204-66a2-47d4-9910-66ab78acb06f" ], [ @@ -2850,13 +2850,13 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ "Exchange Raw Data", "Sensor Bot", - "Foundations", + "Data-Mining", "af924204-66a2-47d4-9910-66ab78acb06f" ], [ @@ -2932,13 +2932,13 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ "Candles Volumes", "Indicator Bot", - "Foundations", + "Data-Mining", "285a4618-0423-4ac9-9df9-7a78be6fd915" ], [ @@ -2984,13 +2984,13 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ "Candles Volumes", "Indicator Bot", - "Foundations", + "Data-Mining", "285a4618-0423-4ac9-9df9-7a78be6fd915" ], [ @@ -3058,7 +3058,7 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ] ] @@ -3323,13 +3323,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3387,13 +3387,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3451,13 +3451,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3515,13 +3515,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3579,13 +3579,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3643,13 +3643,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3707,13 +3707,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3771,13 +3771,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3865,13 +3865,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -3929,13 +3929,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4023,13 +4023,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4087,13 +4087,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4151,13 +4151,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4215,13 +4215,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4309,13 +4309,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4373,13 +4373,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4437,13 +4437,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4501,13 +4501,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4595,13 +4595,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4659,13 +4659,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4723,13 +4723,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4787,13 +4787,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4851,13 +4851,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -4915,13 +4915,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5033,13 +5033,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5091,13 +5091,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5149,13 +5149,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5207,13 +5207,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5265,13 +5265,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5323,13 +5323,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5381,13 +5381,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5439,13 +5439,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5497,13 +5497,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5585,13 +5585,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5643,13 +5643,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5708,13 +5708,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5772,13 +5772,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5836,13 +5836,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5900,13 +5900,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -5994,13 +5994,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6058,13 +6058,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6122,13 +6122,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6186,13 +6186,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6280,13 +6280,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6344,13 +6344,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6408,13 +6408,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6472,13 +6472,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6536,13 +6536,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6670,7 +6670,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ] ] @@ -6723,7 +6723,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -6841,13 +6841,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6905,13 +6905,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -6969,13 +6969,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7033,13 +7033,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7097,13 +7097,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7161,13 +7161,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7225,13 +7225,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7289,13 +7289,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7383,13 +7383,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7447,13 +7447,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7541,13 +7541,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7605,13 +7605,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7669,13 +7669,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7733,13 +7733,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7827,13 +7827,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7891,13 +7891,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -7955,13 +7955,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8019,13 +8019,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8113,13 +8113,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8177,13 +8177,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8241,13 +8241,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8305,13 +8305,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8369,13 +8369,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8433,13 +8433,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8551,13 +8551,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8609,13 +8609,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8667,13 +8667,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8725,13 +8725,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8783,13 +8783,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8841,13 +8841,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8899,13 +8899,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -8957,13 +8957,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9015,13 +9015,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9103,13 +9103,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9161,13 +9161,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9226,13 +9226,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9290,13 +9290,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9354,13 +9354,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9418,13 +9418,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9512,13 +9512,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9576,13 +9576,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9640,13 +9640,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9704,13 +9704,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9798,13 +9798,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9862,13 +9862,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9926,13 +9926,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -9990,13 +9990,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -10054,13 +10054,13 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ "Low Frequency", "Trading Bot", - "Foundations", + "Algorithmic-Trading", "8c7f3687-b5ae-4a45-bda1-751cb2c55995" ], [ @@ -10188,7 +10188,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ] ] @@ -10732,7 +10732,7 @@ "floatingObject": { "isPinned": true, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -24324,7 +24324,7 @@ "viewport": { "type": "Viewport", "name": "New Viewport", - "config": "{\"zoom\":\"0.00\"}", + "config": "{\"zoom\":\"1.40\"}", "project": "Foundations", "id": "01713f1d-91b8-44f9-9c5d-a0c12fd09037", "savedPayload": { @@ -24349,8 +24349,8 @@ }, "frame": { "position": { - "x": 828.4999999999999, - "y": 194.0257847533632 + "x": 40, + "y": -1445 } } } @@ -24426,7 +24426,7 @@ "timeScale": { "type": "Time Scale", "name": "New Time Scale", - "config": "{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"fromDate\": \"2020-01-01T00:00:00.000Z\",\n \"toDate\": \"2021-08-24T23:59:59.999Z\"\n}", + "config": "{\n \"autoMinScale\": false,\n \"autoMaxScale\": false,\n \"fromDate\": \"2020-08-31T22:29:46.517Z\",\n \"toDate\": \"2020-09-01T04:17:38.377Z\"\n}", "project": "Foundations", "id": "b12b6892-52a3-4bf8-a1d9-85bfe72d2f44", "savedPayload": { @@ -24454,7 +24454,7 @@ "rateScale": { "type": "Rate Scale", "name": "New Rate Scale", - "config": "{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"minValue\": 3744.3087,\n \"maxValue\": 65502.54\n}", + "config": "{\n \"autoMinScale\": true,\n \"autoMaxScale\": true,\n \"minValue\": 11394.7713,\n \"maxValue\": 11900.161607250002\n}", "project": "Foundations", "id": "c6d395a1-dfb0-438b-b7be-64fa1a53fe5e", "savedPayload": { @@ -24482,7 +24482,7 @@ "timeFrameScale": { "type": "Time Frame Scale", "name": "New Time Frame Scale", - "config": "{\"value\":\"24-hs\"}", + "config": "{\"value\":\"01-min\"}", "project": "Foundations", "id": "9ac80476-a542-4d74-bf7a-7e55c754887a", "savedPayload": { @@ -24581,7 +24581,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -24768,7 +24768,7 @@ { "type": "Layer", "name": "Trading Episode Statistics", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"on\",\n \"showPanels\": false\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -24810,7 +24810,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -24997,7 +24997,7 @@ { "type": "Layer", "name": "Episode Candle", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"on\"\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -25208,7 +25208,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -29270,7 +29270,7 @@ { "type": "Layer", "name": "Trading System Highlights", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"on\"\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -29433,7 +29433,7 @@ { "type": "Layer", "name": "Trading System Values", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"on\"\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -29596,7 +29596,7 @@ { "type": "Layer", "name": "Trading System Status", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"on\"\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -30744,7 +30744,7 @@ "layerManager": { "type": "Layer Manager", "name": "Masters", - "config": "{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}", + "config": "{\n \"visibleLayers\": 1,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}", "project": "Foundations", "layers": [], "botLayers": [ @@ -30762,7 +30762,7 @@ { "type": "Layer", "name": "Episodes", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"on\",\n \"showPanels\": false\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -30804,7 +30804,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -30863,7 +30863,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -30922,7 +30922,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31010,7 +31010,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31075,7 +31075,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31140,7 +31140,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31205,7 +31205,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31364,7 +31364,7 @@ { "type": "Layer", "name": "Strategies", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"off\",\n \"showPanels\": true\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -31406,7 +31406,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31494,7 +31494,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31559,7 +31559,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31624,7 +31624,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31689,7 +31689,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31897,7 +31897,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -31956,7 +31956,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32015,7 +32015,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32074,7 +32074,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32162,7 +32162,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32369,7 +32369,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32428,7 +32428,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32487,7 +32487,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32546,7 +32546,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32634,7 +32634,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32841,7 +32841,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32900,7 +32900,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -32959,7 +32959,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33018,7 +33018,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33106,7 +33106,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33171,7 +33171,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33236,7 +33236,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33443,7 +33443,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33502,7 +33502,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33561,7 +33561,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33620,7 +33620,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33708,7 +33708,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33773,7 +33773,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -33838,7 +33838,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34075,7 +34075,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34163,7 +34163,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34228,7 +34228,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34293,7 +34293,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34358,7 +34358,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34523,7 +34523,7 @@ { "type": "Layer", "name": "Open Stages", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"off\",\n \"showPanels\": true\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -34565,7 +34565,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34653,7 +34653,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34718,7 +34718,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34783,7 +34783,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -34848,7 +34848,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35013,7 +35013,7 @@ { "type": "Layer", "name": "Manage Stages", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"off\",\n \"showPanels\": true\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -35055,7 +35055,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35143,7 +35143,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35208,7 +35208,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35273,7 +35273,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35338,7 +35338,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35545,7 +35545,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35633,7 +35633,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35698,7 +35698,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35763,7 +35763,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -35828,7 +35828,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36065,7 +36065,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36124,7 +36124,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36212,7 +36212,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36277,7 +36277,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36484,7 +36484,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36572,7 +36572,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36637,7 +36637,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36702,7 +36702,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36909,7 +36909,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -36997,7 +36997,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -37062,7 +37062,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -37127,7 +37127,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -37334,7 +37334,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -37422,7 +37422,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -37629,7 +37629,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -37717,7 +37717,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -37980,7 +37980,7 @@ "y": 80 }, "width": 150, - "height": 40, + "height": 120, "radius": 0 }, "referenceParent": { @@ -38076,7 +38076,7 @@ "layerManager": { "type": "Layer Manager", "name": "Masters", - "config": "{\n \"visibleLayers\": 0,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}", + "config": "{\n \"visibleLayers\": 2,\n \"panelLocation\": {\n \"upOrDown\": \"up\",\n \"leftOrRight\": \"left\"\n }\n}", "project": "Foundations", "layers": [], "botLayers": [ @@ -38088,7 +38088,7 @@ { "type": "Layer", "name": "Resistances", - "config": "{ \n\"status\": \"off\"\n}", + "config": "{\n \"status\": \"on\",\n \"showPanels\": true\n}", "project": "Foundations", "layerPanels": { "type": "Layer Panels", @@ -38130,7 +38130,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38189,7 +38189,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38248,7 +38248,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38336,7 +38336,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38401,7 +38401,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38466,7 +38466,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38531,7 +38531,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38596,7 +38596,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38661,7 +38661,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38726,7 +38726,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38791,7 +38791,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38856,7 +38856,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38921,7 +38921,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -38986,7 +38986,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39175,7 +39175,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39234,7 +39234,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39293,7 +39293,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39381,7 +39381,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39446,7 +39446,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39511,7 +39511,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39576,7 +39576,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39641,7 +39641,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39706,7 +39706,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39771,7 +39771,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39836,7 +39836,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39901,7 +39901,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -39966,7 +39966,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -40031,7 +40031,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -40228,7 +40228,7 @@ "y": 80 }, "width": 150, - "height": 40, + "height": 190, "radius": 0 }, "referenceParent": { @@ -40401,7 +40401,7 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ @@ -40612,7 +40612,7 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ @@ -40970,7 +40970,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -41242,7 +41242,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -41471,7 +41471,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -41869,7 +41869,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -47465,7 +47465,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -47524,7 +47524,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -47583,7 +47583,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -47671,7 +47671,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -47736,7 +47736,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -47801,7 +47801,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -47866,7 +47866,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48067,7 +48067,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48155,7 +48155,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48220,7 +48220,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48285,7 +48285,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48350,7 +48350,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48558,7 +48558,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48617,7 +48617,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48676,7 +48676,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48735,7 +48735,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -48823,7 +48823,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49030,7 +49030,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49089,7 +49089,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49148,7 +49148,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49207,7 +49207,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49295,7 +49295,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49502,7 +49502,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49561,7 +49561,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49620,7 +49620,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49679,7 +49679,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49767,7 +49767,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49832,7 +49832,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -49897,7 +49897,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50104,7 +50104,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50163,7 +50163,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50222,7 +50222,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50281,7 +50281,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50369,7 +50369,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50434,7 +50434,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50499,7 +50499,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50736,7 +50736,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50824,7 +50824,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50889,7 +50889,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -50954,7 +50954,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51019,7 +51019,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51226,7 +51226,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51314,7 +51314,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51379,7 +51379,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51444,7 +51444,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51509,7 +51509,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51716,7 +51716,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51804,7 +51804,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51869,7 +51869,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51934,7 +51934,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -51999,7 +51999,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52206,7 +52206,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52294,7 +52294,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52359,7 +52359,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52424,7 +52424,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52489,7 +52489,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52726,7 +52726,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52785,7 +52785,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52873,7 +52873,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -52938,7 +52938,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53145,7 +53145,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53233,7 +53233,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53298,7 +53298,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53363,7 +53363,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53570,7 +53570,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53658,7 +53658,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53723,7 +53723,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53788,7 +53788,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -53995,7 +53995,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -54083,7 +54083,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -54290,7 +54290,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -54378,7 +54378,7 @@ [ "Masters", "Trading Mine", - "Foundations", + "Algorithmic-Trading", "6a54eece-4582-4cda-a854-1cd805e00fed" ], [ @@ -54791,7 +54791,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -54850,7 +54850,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -54909,7 +54909,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -54997,7 +54997,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55062,7 +55062,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55127,7 +55127,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55192,7 +55192,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55257,7 +55257,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55322,7 +55322,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55387,7 +55387,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55452,7 +55452,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55517,7 +55517,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55582,7 +55582,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55647,7 +55647,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55836,7 +55836,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55895,7 +55895,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -55954,7 +55954,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56042,7 +56042,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56107,7 +56107,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56172,7 +56172,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56237,7 +56237,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56302,7 +56302,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56367,7 +56367,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56432,7 +56432,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56497,7 +56497,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56562,7 +56562,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56627,7 +56627,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -56692,7 +56692,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -57062,7 +57062,7 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ @@ -57273,7 +57273,7 @@ [ "Candles", "Data Mine", - "Foundations", + "Data-Mining", "70c7eea3-a786-4dda-b526-0514e2cb14cc" ], [ @@ -57807,204 +57807,38 @@ { "type": "Plugins", "name": "New Plugins", - "project": "Foundations", + "project": "Community-Plugins", "pluginProjects": [ { "type": "Plugin Project", - "name": "Foundations", - "config": "{ \n \"codeName\": \"Foundations\"\n}", - "project": "Foundations", - "pluginDataMines": { - "type": "Plugin Data Mines", - "name": "New Plugin Data Mines", - "project": "Foundations", - "pluginFiles": [ - { - "type": "Plugin File", - "name": "Masters", - "config": "{\n\"codeName\": \"\"\n}", - "project": "Foundations", - "pluginFilePosition": { - "type": "Plugin File Position", - "name": "Masters", - "project": "Foundations", - "id": "d5234bd2-ef4e-4856-a6a0-ce7659653a48", - "savedPayload": { - "position": { - "x": 18879.35218735615, - "y": 18688.55301821844 - }, - "targetPosition": { - "x": 31521.72973529933, - "y": 18212.746239098742 - }, - "floatingObject": { - "isPinned": true, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "ecc1a524-de9b-4e73-8874-b99a7ea0402b", - "savedPayload": { - "position": { - "x": 31521.72973529933, - "y": 18212.746239098742 - }, - "targetPosition": { - "x": 31744.673182942548, - "y": 18413.4854210064 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Plugin File", - "name": "Candles", - "config": "{\n\"codeName\": \"\"\n}", - "project": "Foundations", - "pluginFilePosition": { - "type": "Plugin File Position", - "name": "Candles", - "project": "Foundations", - "id": "f2d06aec-536a-4af1-872d-681bf8cdeb12", - "savedPayload": { - "position": { - "x": 31037.420197433203, - "y": 18670.84686056612 - }, - "targetPosition": { - "x": 31807.046690187875, - "y": 18120.04114078626 - }, - "floatingObject": { - "isPinned": true, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "3ee7e2da-8c0a-4efe-a354-233c881fdb82", - "savedPayload": { - "position": { - "x": 31807.046690187875, - "y": 18120.04114078626 - }, - "targetPosition": { - "x": 31744.673182942548, - "y": 18413.4854210064 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - } - ], - "id": "cbc3d9be-5e59-45d8-bb0f-4ec82763691d", - "savedPayload": { - "position": { - "x": 37341.67318294255, - "y": 10582.466800207203 - }, - "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, + "name": "Algorithmic-Trading", + "config": "{\"codeName\":\"Algorithmic-Trading\"}", + "project": "Community-Plugins", "pluginTradingMines": { "type": "Plugin Trading Mines", "name": "New Plugin Trading Mines", - "project": "Foundations", + "project": "Community-Plugins", "pluginFiles": [ { "type": "Plugin File", "name": "Masters", - "config": "{\n\"codeName\": \"\"\n}", - "project": "Foundations", - "pluginFilePosition": { - "type": "Plugin File Position", - "name": "Masters", - "project": "Foundations", - "id": "ad1ce785-858f-4cfc-ba68-108b5e0c54d9", - "savedPayload": { - "position": { - "x": 24986.217404066585, - "y": 18713.893045797242 - }, - "targetPosition": { - "x": 37398.96808463006, - "y": 10188.168466117855 - }, - "floatingObject": { - "isPinned": true, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "8a64c00e-4f8c-49bf-b57d-4e2e388bae41", + "config": "{\"project\":\"Algorithmic-Trading\",\"fileName\":\"Masters\",\"folderName\":\"Trading-Mines\",\"nodeType\":\"Trading Mine\",\"saveWithWorkspace\":false}", + "project": "Community-Plugins", + "id": "68bdcf8f-5b90-4683-bd24-0cbb90649cea", "savedPayload": { "position": { - "x": 37398.96808463006, - "y": 10188.168466117855 + "x": 38008.64234996696, + "y": 10334.538307183018 }, "targetPosition": { - "x": 37491.67318294255, - "y": 10473.4854210064 + "x": 37796.510315611, + "y": 10546.670341538982 }, "floatingObject": { "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -58014,39 +57848,11 @@ } } ], - "id": "8d881813-3ab9-4e8b-ab5a-48dedab2dd19", + "id": "b784724f-9692-4365-8e01-032158248fc4", "savedPayload": { "position": { - "x": 37491.67318294255, - "y": 10473.4854210064 - }, - "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "pluginLearningMines": { - "type": "Plugin Learning Mines", - "name": "New Plugin Learning Mines", - "project": "Foundations", - "pluginFiles": [], - "id": "980ba5ef-6bd2-4f92-becb-348b591d147b", - "savedPayload": { - "position": { - "x": 37677.08337956752, - "y": 10473.4854210064 + "x": 37796.510315611, + "y": 10546.670341538982 }, "targetPosition": { "x": 37584.378281255034, @@ -58056,7 +57862,7 @@ "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -58068,49 +57874,22 @@ "pluginTradingSystems": { "type": "Plugin Trading Systems", "name": "New Plugin Trading Systems", - "project": "Foundations", + "project": "Community-Plugins", "pluginFiles": [ { "type": "Plugin File", "name": "Masters-Lightning-Strike", - "config": "{\n\"codeName\": \"\"\n}", - "project": "Foundations", - "pluginFilePosition": { - "type": "Plugin File Position", - "name": "Masters-Lightning-Strike", - "project": "Foundations", - "id": "37ab4b0d-6bd8-46b6-9778-e193c32669a4", - "savedPayload": { - "position": { - "x": 31050.365708673427, - "y": 31068.826468868458 - }, - "targetPosition": { - "x": 38069.78847788001, - "y": 10406.13122451946 - }, - "floatingObject": { - "isPinned": true, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "5fdcecee-8c8f-4e0f-b36b-81e9231970a6", + "config": "{\"project\":\"Algorithmic-Trading\",\"fileName\":\"Masters-Lightning-Strike\",\"folderName\":\"Trading-Systems\",\"nodeType\":\"Trading System\",\"saveWithWorkspace\":false}", + "project": "Community-Plugins", + "id": "b5c5eed1-ac0e-4f1b-bbe8-9f2d6dcc519b", "savedPayload": { "position": { - "x": 38069.78847788001, - "y": 10406.13122451946 + "x": 38184.378281255034, + "y": 10758.802375894946 }, "targetPosition": { - "x": 37827.08337956752, - "y": 10582.466800207203 + "x": 37884.378281255034, + "y": 10758.802375894946 }, "floatingObject": { "isPinned": false, @@ -58126,35 +57905,7 @@ } } ], - "id": "3569d452-c593-4e54-a356-7ff8c6b519f3", - "savedPayload": { - "position": { - "x": 37827.08337956752, - "y": 10582.466800207203 - }, - "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "pluginLearningSystems": { - "type": "Plugin Learning Systems", - "name": "New Plugin Learning Systems", - "project": "Foundations", - "pluginFiles": [], - "id": "ba0dfd42-a5e6-4a03-9617-f46f0bc5c7a1", + "id": "ed5fbe5f-6957-47d7-b776-f4868b521378", "savedPayload": { "position": { "x": 37884.378281255034, @@ -58168,7 +57919,7 @@ "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -58180,55 +57931,28 @@ "pluginTradingEngines": { "type": "Plugin Trading Engines", "name": "New Plugin Trading Engines", - "project": "Foundations", + "project": "Community-Plugins", "pluginFiles": [ { "type": "Plugin File", "name": "Low-Frequency", - "config": "{\n\"codeName\": \"\"\n}", - "project": "Foundations", - "pluginFilePosition": { - "type": "Plugin File Position", - "name": "Low-Frequency", - "project": "Foundations", - "id": "e117a2a4-09b3-4181-8455-e680de3bdeb3", - "savedPayload": { - "position": { - "x": 30923.55093774257, - "y": 24967.049392142086 - }, - "targetPosition": { - "x": 29820.22642897682, - "y": 18678.80776835817 - }, - "floatingObject": { - "isPinned": true, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "e9270d67-4630-4ac9-91ca-1dec4fb5aa38", + "config": "{\"project\":\"Algorithmic-Trading\",\"fileName\":\"Low-Frequency\",\"folderName\":\"Trading-Engines\",\"nodeType\":\"Trading Engine\",\"saveWithWorkspace\":false}", + "project": "Community-Plugins", + "id": "a584a09f-6d55-4358-8c3a-cd76e6fd4fb2", "savedPayload": { "position": { - "x": 29820.22642897682, - "y": 18678.80776835817 + "x": 38008.64234996696, + "y": 11183.066444606873 }, "targetPosition": { - "x": 30320.32799443869, - "y": 18678.805890109317 + "x": 37796.510315611, + "y": 10970.93441025091 }, "floatingObject": { "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -58238,11 +57962,11 @@ } } ], - "id": "87a28762-63d0-45f7-bd39-9dea436d8244", + "id": "34cd7afd-774b-4340-ab6b-ebcaa61c2d05", "savedPayload": { "position": { - "x": 37827.08337956752, - "y": 10935.137951582688 + "x": 37796.510315611, + "y": 10970.93441025091 }, "targetPosition": { "x": 37584.378281255034, @@ -58251,8 +57975,8 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, + "isCollapsed": false, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -58261,20 +57985,105 @@ } } }, - "pluginLearningEngines": { - "type": "Plugin Learning Engines", - "name": "New Plugin Learning Engines", - "project": "Foundations", - "pluginFiles": [], - "id": "6e8d19f0-51a5-4d7c-857e-3549c553f008", + "id": "252daf71-559e-4a54-a534-42ec1e7f1a31", + "savedPayload": { + "position": { + "x": 37584.378281255034, + "y": 10758.802375894946 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Data-Mining", + "config": "{\"codeName\":\"Data-Mining\"}", + "project": "Community-Plugins", + "pluginDataMines": { + "type": "Plugin Data Mines", + "name": "New Plugin Data Mines", + "project": "Community-Plugins", + "pluginFiles": [ + { + "type": "Plugin File", + "name": "Candles", + "config": "{\n \"project\": \"Data-Mining\",\n \"fileName\": \"Candles\",\n \"folderName\": \"Data-Mines\",\n \"nodeType\": \"Data Mine\",\n \"saveWithWorkspace\": false\n}", + "project": "Community-Plugins", + "id": "868419c3-cd9d-4825-a208-8b7c15be0468", + "savedPayload": { + "position": { + "x": 38039.447273030084, + "y": 11196.569395006949 + }, + "targetPosition": { + "x": 37744.00494712642, + "y": 11144.47494170687 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin File", + "name": "Masters", + "config": "{\"project\":\"Data-Mining\",\"fileName\":\"Masters\",\"folderName\":\"Data-Mines\",\"nodeType\":\"Data Mine\",\"saveWithWorkspace\":false}", + "project": "Community-Plugins", + "id": "9817eb10-418e-4035-aa38-6158d4a2d848", + "savedPayload": { + "position": { + "x": 37846.61099012412, + "y": 11426.382727942642 + }, + "targetPosition": { + "x": 37744.00494712642, + "y": 11144.47494170687 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "42d84322-438f-4219-8b7e-58b1b58de7b0", "savedPayload": { "position": { - "x": 37677.08337956752, - "y": 11044.119330783491 + "x": 37744.00494712642, + "y": 11144.47494170687 }, "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 + "x": 37514.19161419073, + "y": 10951.638658800908 }, "floatingObject": { "isPinned": false, @@ -58289,20 +58098,356 @@ } } }, + "id": "9e34391d-8a7f-465d-aaae-d1aab31d27af", + "savedPayload": { + "position": { + "x": 37536.75434110439, + "y": 10920.994621131626 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Community-Plugins", + "config": "{\"codeName\":\"Community-Plugins\"}", + "project": "Community-Plugins", + "id": "005d0fc0-5d81-4607-856b-32bcb1665b64", + "savedPayload": { + "position": { + "x": 37409.0027851556, + "y": 11031.691974501302 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Ethereum", + "config": "{\"codeName\":\"Ethereum\"}", + "project": "Community-Plugins", + "id": "bddb8fdb-f325-4615-a828-9935d37583ad", + "savedPayload": { + "position": { + "x": 37241.68382977305, + "y": 11055.748808459226 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "TensorFlow", + "config": "{\"codeName\":\"TensorFlow\"}", + "project": "Community-Plugins", + "id": "d6649bf0-8e12-456a-a2d0-a7d4617f6843", + "savedPayload": { + "position": { + "x": 37087.92006107145, + "y": 10985.527248201222 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Education", + "config": "{\"codeName\":\"Education\"}", + "project": "Community-Plugins", + "id": "e72188be-7474-4a0d-85c1-413810bfa807", + "savedPayload": { + "position": { + "x": 36996.530389170686, + "y": 10843.322142947374 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Governance", + "config": "{\"codeName\":\"Governance\"}", + "project": "Community-Plugins", + "id": "5614b71b-9e5f-42b0-a6fb-6322564623ea", + "savedPayload": { + "position": { + "x": 36996.530389170686, + "y": 10674.282608842517 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Network", + "config": "{\"codeName\":\"Network\"}", + "project": "Community-Plugins", + "id": "624a4851-e3d8-411f-8ac3-b1418516f30d", + "savedPayload": { + "position": { + "x": 37087.92006107145, + "y": 10532.077503588669 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Social-Trading", + "config": "{\"codeName\":\"Social-Trading\"}", + "project": "Community-Plugins", + "id": "b41eaa84-a3bc-44fc-8199-48cc117cbd27", + "savedPayload": { + "position": { + "x": 37241.68382977305, + "y": 10461.855943330665 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Machine-Learning", + "config": "{\"codeName\":\"Machine-Learning\"}", + "project": "Community-Plugins", + "pluginLearningMines": { + "type": "Plugin Learning Mines", + "name": "New Plugin Learning Mines", + "project": "Community-Plugins", + "pluginFiles": [], + "id": "691b8eec-79db-42b9-9ca4-d22176ecabdb", + "savedPayload": { + "position": { + "x": 37304.16353127587, + "y": 10204.82785978866 + }, + "targetPosition": { + "x": 37409.0027851556, + "y": 10485.91277728859 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "pluginLearningSystems": { + "type": "Plugin Learning Systems", + "name": "New Plugin Learning Systems", + "project": "Community-Plugins", + "pluginFiles": [], + "id": "99f881d1-74f5-487e-8e2a-4ed83101ce42", + "savedPayload": { + "position": { + "x": 37533.62728905617, + "y": 10213.023178682233 + }, + "targetPosition": { + "x": 37409.0027851556, + "y": 10485.91277728859 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "pluginLearningEngines": { + "type": "Plugin Learning Engines", + "name": "New Plugin Learning Engines", + "project": "Community-Plugins", + "pluginFiles": [], + "id": "1594d693-040c-4762-9c19-ce3212bdddae", + "savedPayload": { + "position": { + "x": 37690.08770265553, + "y": 10381.07352340886 + }, + "targetPosition": { + "x": 37409.0027851556, + "y": 10485.91277728859 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "0c2a59f9-362c-4a72-b9ff-e49dd7c26e7e", + "savedPayload": { + "position": { + "x": 37409.0027851556, + "y": 10485.91277728859 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Plugin Project", + "name": "Foundations", + "config": "{\"codeName\":\"Foundations\"}", + "project": "Community-Plugins", "pluginTutorials": { "type": "Plugin Tutorials", "name": "New Plugin Tutorials", - "project": "Foundations", + "project": "Community-Plugins", "pluginFiles": [], - "id": "dc01958c-5bd4-4941-b790-aec7da3c1638", + "id": "cab27915-c4e9-44c7-94d6-e3d20ed0e382", "savedPayload": { "position": { - "x": 37491.67318294255, - "y": 11044.119330783491 + "x": 37522.47976635727, + "y": 10296.949928903363 }, "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 + "x": 37536.75434110439, + "y": 10596.610130658266 }, "floatingObject": { "isPinned": false, @@ -58320,17 +58465,17 @@ "pluginApiMaps": { "type": "Plugin API Maps", "name": "New Plugin API Maps", - "project": "Foundations", + "project": "Community-Plugins", "pluginFiles": [], - "id": "b75d5c18-f8d1-47de-aa4b-95040435d094", + "id": "7ad3f24a-38e4-4f33-a7e1-0d06121c09d0", "savedPayload": { "position": { - "x": 37341.67318294255, - "y": 10935.137951582688 + "x": 37803.40497570086, + "y": 10734.07808717649 }, "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 + "x": 37536.75434110439, + "y": 10596.610130658266 }, "floatingObject": { "isPinned": false, @@ -58345,11 +58490,11 @@ } } }, - "id": "c4e402d7-5228-408c-9d67-379d6ef40bae", + "id": "b5c1cb14-d645-4ca5-b34b-553646f65cf4", "savedPayload": { "position": { - "x": 37584.378281255034, - "y": 10758.802375894946 + "x": 37536.75434110439, + "y": 10596.610130658266 }, "targetPosition": { "x": 37284.378281255034, @@ -58358,7 +58503,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -58651,12 +58796,12 @@ "id": "cf9f8b3b-77c6-43c6-b01f-95cf366a91f6", "savedPayload": { "position": { - "x": 18903, - "y": 10733.5 + "x": 4260.875, + "y": 40334.982972136226 }, "targetPosition": { - "x": 18903, - "y": 10733.5 + "x": 4260.875, + "y": 40334.982972136226 }, "floatingObject": { "isPinned": true, @@ -60251,7 +60396,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -60438,7 +60583,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -60675,7 +60820,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61052,7 +61197,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ] ] @@ -61112,7 +61257,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61321,7 +61466,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61502,7 +61647,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61643,7 +61788,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61821,7 +61966,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -62002,7 +62147,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -62078,7 +62223,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ] ] @@ -62122,7 +62267,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -62420,12 +62565,12 @@ }, "referenceParent": { "type": "Workspace", - "name": "Getting Started Tutorials", - "id": "a3333ada-a69c-4086-bba6-3c950bd1f6fd" + "name": "Getting-Started-Tutorials", + "id": "c6f0d16a-c053-4794-9066-0fbed2ad370d" }, "referenceParentCombinedNodePath": [ [ - "Getting Started Tutorials", + "Getting-Started-Tutorials", "Workspace" ] ] @@ -62503,7 +62648,7 @@ [ "New Plugins", "Plugins", - "Foundations", + "Community-Plugins", "bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6" ] ] @@ -62574,38 +62719,7 @@ "name": "Masters-Lightning-Strike", "id": "37ab4b0d-6bd8-46b6-9778-e193c32669a4" }, - "referenceParentCombinedNodePath": [ - [ - "New Plugins", - "Plugins", - "Foundations", - "bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6" - ], - [ - "Foundations", - "Plugin Project", - "Foundations", - "c4e402d7-5228-408c-9d67-379d6ef40bae" - ], - [ - "New Plugin Trading Systems", - "Plugin Trading Systems", - "Foundations", - "3569d452-c593-4e54-a356-7ff8c6b519f3" - ], - [ - "Masters-Lightning-Strike", - "Plugin File", - "Foundations", - "5fdcecee-8c8f-4e0f-b36b-81e9231970a6" - ], - [ - "Masters-Lightning-Strike", - "Plugin File Position", - "Foundations", - "37ab4b0d-6bd8-46b6-9778-e193c32669a4" - ] - ] + "referenceParentCombinedNodePath": [] } }, { @@ -62642,26 +62756,7 @@ "name": "New Plugin Trading Systems", "id": "3569d452-c593-4e54-a356-7ff8c6b519f3" }, - "referenceParentCombinedNodePath": [ - [ - "New Plugins", - "Plugins", - "Foundations", - "bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6" - ], - [ - "Foundations", - "Plugin Project", - "Foundations", - "c4e402d7-5228-408c-9d67-379d6ef40bae" - ], - [ - "New Plugin Trading Systems", - "Plugin Trading Systems", - "Foundations", - "3569d452-c593-4e54-a356-7ff8c6b519f3" - ] - ] + "referenceParentCombinedNodePath": [] } }, { @@ -64077,7 +64172,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64175,7 +64270,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64795,7 +64890,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64875,7 +64970,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64967,7 +65062,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -65071,7 +65166,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -66286,13 +66381,13 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ "Resistances and Supports", "Indicator Bot", - "Foundations", + "Data-Mining", "d88356a2-36cc-4bdc-ac10-01b8643352c2" ], [ @@ -66342,7 +66437,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -66681,7 +66776,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -66791,7 +66886,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -66907,7 +67002,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -67553,7 +67648,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67621,7 +67716,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67701,7 +67796,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67769,7 +67864,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67819,7 +67914,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67927,7 +68022,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ] ] @@ -67971,7 +68066,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ], [ @@ -68095,7 +68190,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ], [ @@ -68157,7 +68252,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ], [ @@ -68760,7 +68855,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -69964,6 +70059,171 @@ "status": "Done" } } + }, + { + "type": "Algorithmic-Trading Project", + "name": "New Algorithmic-Trading Project", + "project": "Algorithmic-Trading", + "projectDefinition": { + "type": "Project Definition", + "name": "Algorithmic-Trading", + "config": "{ \n \"codeName\": \"Algorithmic-Trading\"\n}", + "project": "Foundations", + "id": "159d6c95-233b-4d79-8fe0-b1d75d40f90b", + "savedPayload": { + "position": { + "x": 4613.125, + "y": 10824.41124871001 + }, + "targetPosition": { + "x": 4313.125, + "y": 10824.41124871001 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "96734230-bb91-4527-b2a9-e2f16eb0be96", + "savedPayload": { + "position": { + "x": 4313.125, + "y": 10824.41124871001 + }, + "targetPosition": { + "x": 4313.125, + "y": 10824.41124871001 + }, + "floatingObject": { + "isPinned": true, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Data-Mining Project", + "name": "New Data-Mining Project", + "project": "Data-Mining", + "projectDefinition": { + "type": "Project Definition", + "name": "Data-Mining", + "config": "{ \n \"codeName\": \"Data-Mining\"\n}", + "project": "Foundations", + "id": "588e6946-31d9-4389-8cf2-37715795ba4d", + "savedPayload": { + "position": { + "x": 4601.708333333332, + "y": 19847.940660474716 + }, + "targetPosition": { + "x": 4301.708333333332, + "y": 19847.940660474716 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "c80ac0bd-1c21-4e7c-b4b8-020e212bd6f4", + "savedPayload": { + "position": { + "x": 4301.708333333332, + "y": 19847.940660474716 + }, + "targetPosition": { + "x": 4301.708333333332, + "y": 19847.940660474716 + }, + "floatingObject": { + "isPinned": true, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Machine-Learning Project", + "name": "New Machine-Learning Project", + "project": "Machine-Learning", + "projectDefinition": { + "type": "Project Definition", + "name": "Machine-Learning", + "config": "{ \n \"codeName\": \"Machine-Learning\"\n}", + "project": "Foundations", + "id": "b15d5bbb-0433-40c3-bdd7-3d2aa0ddc389", + "savedPayload": { + "position": { + "x": 4587.75, + "y": 30875.953560371516 + }, + "targetPosition": { + "x": 4287.75, + "y": 30875.953560371516 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "949164da-b9f8-4e0a-8482-f1fd06a22cd0", + "savedPayload": { + "position": { + "x": 4287.75, + "y": 30875.953560371516 + }, + "targetPosition": { + "x": 4287.75, + "y": 30875.953560371516 + }, + "floatingObject": { + "isPinned": true, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } } ] } \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/back-learning-session.json b/Projects/Foundations/Schemas/App-Schema/back-learning-session.json index ab1db3ae2..a2aa63be7 100644 --- a/Projects/Foundations/Schemas/App-Schema/back-learning-session.json +++ b/Projects/Foundations/Schemas/App-Schema/back-learning-session.json @@ -15,7 +15,8 @@ "secondaryIcon": "stop", "iconPathOn": "run", "iconPathOff": "run", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Machine-Learning" }, { "action": "Resume Learning Session", @@ -31,7 +32,8 @@ "secondaryIcon": "stop", "iconPathOn": "resume", "iconPathOff": "resume", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Machine-Learning" }, { "action": "Configure", diff --git a/Projects/Foundations/Schemas/App-Schema/backtesting-session.json b/Projects/Foundations/Schemas/App-Schema/backtesting-session.json index ec1c618a6..f71d6bd28 100644 --- a/Projects/Foundations/Schemas/App-Schema/backtesting-session.json +++ b/Projects/Foundations/Schemas/App-Schema/backtesting-session.json @@ -15,7 +15,8 @@ "secondaryIcon": "stop", "iconPathOn": "run", "iconPathOff": "run", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Resume Trading Session", @@ -31,7 +32,8 @@ "secondaryIcon": "stop", "iconPathOn": "resume", "iconPathOff": "resume", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Configure", diff --git a/Projects/Foundations/Schemas/App-Schema/data-mine-data-dependencies.json b/Projects/Foundations/Schemas/App-Schema/data-mine-data-dependencies.json index 3c441323c..b4a3af275 100644 --- a/Projects/Foundations/Schemas/App-Schema/data-mine-data-dependencies.json +++ b/Projects/Foundations/Schemas/App-Schema/data-mine-data-dependencies.json @@ -14,7 +14,8 @@ "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", "relatedUiObject": "Data Dependency", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Data-Mining" }, { "action": "Delete UI Object", diff --git a/Projects/Foundations/Schemas/App-Schema/forward-testing-session.json b/Projects/Foundations/Schemas/App-Schema/forward-testing-session.json index 794f179a6..8a3c088d8 100644 --- a/Projects/Foundations/Schemas/App-Schema/forward-testing-session.json +++ b/Projects/Foundations/Schemas/App-Schema/forward-testing-session.json @@ -15,7 +15,8 @@ "secondaryIcon": "stop", "iconPathOn": "run", "iconPathOff": "run", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Resume Trading Session", @@ -31,7 +32,8 @@ "secondaryIcon": "stop", "iconPathOn": "resume", "iconPathOff": "resume", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Configure", diff --git a/Projects/Foundations/Schemas/App-Schema/live-learning-session.json b/Projects/Foundations/Schemas/App-Schema/live-learning-session.json index 84bafb5d8..0f470182a 100644 --- a/Projects/Foundations/Schemas/App-Schema/live-learning-session.json +++ b/Projects/Foundations/Schemas/App-Schema/live-learning-session.json @@ -15,7 +15,8 @@ "secondaryIcon": "stop", "iconPathOn": "run", "iconPathOff": "run", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Machine-Learning" }, { "action": "Resume Learning Session", @@ -31,7 +32,8 @@ "secondaryIcon": "stop", "iconPathOn": "resume", "iconPathOff": "resume", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Machine-Learning" }, { "action": "Configure", diff --git a/Projects/Foundations/Schemas/App-Schema/live-trading-session.json b/Projects/Foundations/Schemas/App-Schema/live-trading-session.json index 6dfac97d8..d76898c43 100644 --- a/Projects/Foundations/Schemas/App-Schema/live-trading-session.json +++ b/Projects/Foundations/Schemas/App-Schema/live-trading-session.json @@ -15,7 +15,8 @@ "secondaryIcon": "stop", "iconPathOn": "run", "iconPathOff": "run", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Resume Trading Session", @@ -31,7 +32,8 @@ "secondaryIcon": "stop", "iconPathOn": "resume", "iconPathOff": "resume", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Configure", diff --git a/Projects/Foundations/Schemas/App-Schema/paper-trading-session.json b/Projects/Foundations/Schemas/App-Schema/paper-trading-session.json index 591fca594..88f5ff479 100644 --- a/Projects/Foundations/Schemas/App-Schema/paper-trading-session.json +++ b/Projects/Foundations/Schemas/App-Schema/paper-trading-session.json @@ -15,7 +15,8 @@ "secondaryIcon": "stop", "iconPathOn": "run", "iconPathOff": "run", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Resume Trading Session", @@ -31,7 +32,8 @@ "secondaryIcon": "stop", "iconPathOn": "resume", "iconPathOff": "resume", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Algorithmic-Trading" }, { "action": "Configure", diff --git a/Projects/Foundations/Schemas/App-Schema/process-definition.json b/Projects/Foundations/Schemas/App-Schema/process-definition.json index 1c14c333c..1eb76e7b4 100644 --- a/Projects/Foundations/Schemas/App-Schema/process-definition.json +++ b/Projects/Foundations/Schemas/App-Schema/process-definition.json @@ -35,7 +35,7 @@ }, "level": 1, "attachingRules": { - "compatibleTypes": "->Sensor Bot->API Data Fetcher Bot->Indicator Bot->Trading Bot->Learning Bot->" + "compatibleTypes": "->Data-Mining|Sensor Bot->Data-Mining|API Data Fetcher Bot->Data-Mining|Indicator Bot->Trading Bot->Learning Bot->" }, "childrenNodesProperties": [ { diff --git a/Projects/Foundations/Schemas/App-Schema/process-dependencies.json b/Projects/Foundations/Schemas/App-Schema/process-dependencies.json index 6d625bc17..d1602b730 100644 --- a/Projects/Foundations/Schemas/App-Schema/process-dependencies.json +++ b/Projects/Foundations/Schemas/App-Schema/process-dependencies.json @@ -20,7 +20,8 @@ "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", "relatedUiObject": "Data Mine Data Dependencies", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Data-Mining" }, { "action": "Add UI Object", diff --git a/Projects/Foundations/Schemas/App-Schema/process-output.json b/Projects/Foundations/Schemas/App-Schema/process-output.json index de970c159..9a558f70f 100644 --- a/Projects/Foundations/Schemas/App-Schema/process-output.json +++ b/Projects/Foundations/Schemas/App-Schema/process-output.json @@ -20,7 +20,8 @@ "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", "relatedUiObject": "Output Dataset", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Data-Mining" }, { "action": "Delete UI Object", diff --git a/Projects/Foundations/Schemas/App-Schema/product-definition.json b/Projects/Foundations/Schemas/App-Schema/product-definition.json index a10f42c92..22d229deb 100644 --- a/Projects/Foundations/Schemas/App-Schema/product-definition.json +++ b/Projects/Foundations/Schemas/App-Schema/product-definition.json @@ -52,7 +52,7 @@ "compatibleTypes": "->Plotter Module->" }, "attachingRules": { - "compatibleTypes": "->Sensor Bot->API Data Fetcher Bot->Indicator Bot->Trading Bot->Learning Bot->Product Definition Folder->" + "compatibleTypes": "->Data-Mining|Sensor Bot->Data-Mining|API Data Fetcher Bot->Data-Mining|Indicator Bot->Trading Bot->Learning Bot->Product Definition Folder->" }, "childrenNodesProperties": [ { diff --git a/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-005-data-mining-indicator-frameworks.json b/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-005-data-mining-indicator-frameworks.json index 53840f973..24323fa1a 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-005-data-mining-indicator-frameworks.json +++ b/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-005-data-mining-indicator-frameworks.json @@ -90,7 +90,7 @@ }, { "style": "Json", - "text": "\"botModules\": [\n {\n \"name\": \"Candles Volumes Multi Time Frame Market\",\n \"propertyName\": \"candlesVolumesMultiTimeFrameMarket\",\n \"functionName\": \"newFoundationsBotModulesCandlesVolumesMultiTimeFrameMarket\",\n \"fileName\": \"CandlesVolumesMultiTimeFrameMarket.js\",\n \"folderName\": \"Indicator-Bot/Candles-Volumes\"\n },", + "text": "\"botModules\": [\n {\n \"name\": \"Candles Volumes Multi Time Frame Market\",\n \"propertyName\": \"candlesVolumesMultiTimeFrameMarket\",\n \"functionName\": \"newDataMiningBotModulesCandlesVolumesMultiTimeFrameMarket\",\n \"fileName\": \"CandlesVolumesMultiTimeFrameMarket.js\",\n \"folderName\": \"Indicator-Bot/Candles-Volumes\"\n },", "updated": 1621703869144 }, { diff --git a/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-006-data-mining-data-mine-hierarchy.json b/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-006-data-mining-data-mine-hierarchy.json index ec65c079e..a37ff8df2 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-006-data-mining-data-mine-hierarchy.json +++ b/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-006-data-mining-data-mine-hierarchy.json @@ -121,7 +121,7 @@ }, { "style": "Include", - "text": "Foundations->Node->Sensor Bot->Definition", + "text": "Data-Mining->Node->Sensor Bot->Definition", "updated": 1611407914247 }, { @@ -131,7 +131,7 @@ }, { "style": "Include", - "text": "Foundations->Node->Indicator Bot->Definition", + "text": "Data-Mining->Node->Indicator Bot->Definition", "updated": 1611407948292 }, { diff --git a/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-016-data-mining-indicator-bots.json b/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-016-data-mining-indicator-bots.json index aeee1c320..323e68e2d 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-016-data-mining-indicator-bots.json +++ b/Projects/Foundations/Schemas/Docs-Topics/D/Data/Data-Mining/data-mining-016-data-mining-indicator-bots.json @@ -9,12 +9,12 @@ "paragraphs": [ { "style": "Include", - "text": "Foundations->Node->Indicator Bot->Definition", + "text": "Data-Mining->Node->Indicator Bot->Definition", "updated": 1611408242603 }, { "style": "Include", - "text": "Foundations->Node->Indicator Bot->Content", + "text": "Data-Mining->Node->Indicator Bot->Content", "updated": 1611408247595 }, { @@ -23,7 +23,7 @@ }, { "style": "Hierarchy", - "text": "Foundations->Indicator Bot->2", + "text": "Data-Mining->Indicator Bot->2", "updated": 1611408262027 } ] diff --git a/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-008-automating-actions-adding-an-action-switch-case.json b/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-008-automating-actions-adding-an-action-switch-case.json index 829842bbb..f04dac108 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-008-automating-actions-adding-an-action-switch-case.json +++ b/Projects/Foundations/Schemas/Docs-Topics/H/How/How-to-Automate-Actions-at-The-Design-Space/how-to-automate-actions-at-the-design-space-008-automating-actions-adding-an-action-switch-case.json @@ -32,7 +32,7 @@ }, { "style": "Javascript", - "text": "UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginTradingEngines(action.node, action.rootNodes)\n", + "text": "UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTradingEngines(action.node, action.rootNodes)\n", "updated": 1614938043930 }, { @@ -50,7 +50,7 @@ }, { "style": "Json", - "text": "{\n \"name\": \"Plugins Functions\",\n \"propertyName\": \"pluginsFunctions\",\n \"functionName\": \"newFoundationsFunctionLibraryPluginsFunctions\"\n }", + "text": "{\n \"name\": \"Plugins Functions\",\n \"propertyName\": \"pluginsFunctions\",\n \"functionName\": \"newPluginsFunctionLibraryPluginsFunctions\"\n }", "updated": 1614938194636 }, { diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/Announcements.js similarity index 100% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js rename to Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/Announcements.js diff --git a/Projects/Foundations/TS/Process-Modules/StatusReport.js b/Projects/Foundations/TS/Process-Modules/StatusReport.js index 94303354f..bc33ccf70 100644 --- a/Projects/Foundations/TS/Process-Modules/StatusReport.js +++ b/Projects/Foundations/TS/Process-Modules/StatusReport.js @@ -315,7 +315,7 @@ if (ownerId !== botId) { let filePathRoot = 'Project/' + - statusDependencyNode.project + "/" + + statusDependencyNode.referenceParent.parentNode.parentNode.parentNode.project + "/" + statusDependencyNode.mineType + "/" + statusDependencyNode.dataMine + "/" + statusDependencyNode.bot + '/' + diff --git a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 664d37866..9b693d260 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -101,7 +101,7 @@ function newFoundationsActionSwitch() { break case 'Add UI Object': { - UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(action.node, action.relatedNodeType, action.rootNodes) + UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(action.node, action.relatedNodeType, action.rootNodes, action.project) } break case 'Add Missing Children': @@ -114,11 +114,6 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.nodeDeleter.deleteUIObject(action.node, action.rootNodes) } break - case 'Install as Plugin': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.installAsPlugin(action.node, action.rootNodes) - } - break case 'Edit Code': break @@ -423,11 +418,6 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.cryptoEcosystemFunctions.uninstallMarket(action.node, action.rootNodes) } break - case 'Add All Output Datasets': - { - UI.projects.foundations.functionLibraries.mineFunctions.addAllOutputDatasets(action.node) - } - break case 'Add All Data Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addAllDataProducts(action.node) @@ -503,16 +493,6 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingProjectDataProducts(action.node, action.rootNodes) } break - case 'Add All Data Dependencies': - { - UI.projects.foundations.functionLibraries.mineFunctions.addAllDataDependencies(action.node) - } - break - case 'Add All Data Mine Dependencies': - { - UI.projects.foundations.functionLibraries.mineFunctions.addAllDataMineDataDependencies(action.node, action.rootNodes) - } - break case 'Add All Layer Panels': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addAllLayerPanels(action.node) @@ -543,76 +523,11 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addMissingProjectDashboards(action.node, action.rootNodes) } break - case 'Play Tutorial': - { - UI.projects.education.spaces.tutorialSpace.playTutorial(action.node) - } - break - case 'Play Tutorial Topic': - { - UI.projects.education.spaces.tutorialSpace.playTutorialTopic(action.node) - } - break - case 'Play Tutorial Step': - { - UI.projects.education.spaces.tutorialSpace.playTutorialStep(action.node) - } - break - case 'Resume Tutorial': - { - UI.projects.education.spaces.tutorialSpace.resumeTutorial(action.node) - } - break - case 'Resume Tutorial Topic': - { - UI.projects.education.spaces.tutorialSpace.resumeTutorialTopic(action.node) - } - break - case 'Resume Tutorial Step': - { - UI.projects.education.spaces.tutorialSpace.resumeTutorialStep(action.node) - } - break - case 'Reset Tutorial Progress': - { - UI.projects.education.spaces.tutorialSpace.resetTutorialProgress(action.node) - } - break case 'Send Webhook Test Message': { UI.projects.foundations.functionLibraries.webhookFunctions.sendTestMessage(action.node, action.callBackFunction) } break - case 'Run Trading Session': - { - UI.projects.foundations.functionLibraries.tradingSessionFunctions.runSession(action.node, false, action.callBackFunction) - } - break - case 'Resume Trading Session': - { - UI.projects.foundations.functionLibraries.tradingSessionFunctions.runSession(action.node, true, action.callBackFunction) - } - break - case 'Stop Trading Session': - { - UI.projects.foundations.functionLibraries.tradingSessionFunctions.stopSession(action.node, action.callBackFunction) - } - break - case 'Run Learning Session': - { - UI.projects.foundations.functionLibraries.learningSessionFunctions.runSession(action.node, false, action.callBackFunction) - } - break - case 'Resume Learning Session': - { - UI.projects.foundations.functionLibraries.learningSessionFunctions.runSession(action.node, true, action.callBackFunction) - } - break - case 'Stop Learning Session': - { - UI.projects.foundations.functionLibraries.learningSessionFunctions.stopSession(action.node, action.callBackFunction) - } - break case 'Run Super Action': { UI.projects.foundations.functionLibraries.superScriptsFunctions.runSuperScript(action.node, action.rootNodes) @@ -660,76 +575,6 @@ function newFoundationsActionSwitch() { } } break - case 'Add Missing Plugin Projects': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginProjects(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Types': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginTypes(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Data Mines': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginDataMines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Trading Mines': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginTradingMines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Trading Systems': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginTradingSystems(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Trading Engines': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginTradingEngines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Learning Mines': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginLearningMines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Learning Systems': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginLearningSystems(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Learning Engines': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginLearningEngines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Tutorials': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginTutorials(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin API Maps': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.addMissingPluginApiMaps(action.node, action.rootNodes) - } - break - case 'Enable Saving With Workspace': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.enableSavingWithWorkspace(action.node, action.rootNodes) - } - break - case 'Disable Saving With Workspace': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.disableSavingWithWorkspace(action.node, action.rootNodes) - } - break - case 'Save Plugin': - { - UI.projects.foundations.functionLibraries.pluginsFunctions.savePlugin(action.node, action.rootNodes) - } - break case 'Add Missing Workspace Projects': { UI.projects.foundations.functionLibraries.workspaceFunctions.addMissingWorkspaceProjects(action.node, action.rootNodes) diff --git a/Projects/Foundations/UI/Function-Libraries/ReferenceAttachDetach.js b/Projects/Foundations/UI/Function-Libraries/ReferenceAttachDetach.js index 0e82a6356..60c293b6a 100644 --- a/Projects/Foundations/UI/Function-Libraries/ReferenceAttachDetach.js +++ b/Projects/Foundations/UI/Function-Libraries/ReferenceAttachDetach.js @@ -8,9 +8,9 @@ function newFoundationsFunctionLibraryReferenceAttachDetach() { return thisObject function referenceDetachNode(node) { - cleanAttachNodePath(node) - completeDetachment(node) - + cleanAttachNodePath(node) + completeDetachment(node) + } function referenceAttachNode(node, attachToNode) { @@ -20,18 +20,19 @@ function newFoundationsFunctionLibraryReferenceAttachDetach() { // Store the path to the reference parent to make restoring it possible if the reference parent is updated and given a new id function storeAttachNodePath(node, attachToNode) { + if (node.payload === undefined) { return } let attachNodePath = UI.projects.foundations.utilities.hierarchy.getNodeNameTypePath(attachToNode) // Remove unused node id, and project tag from stored path - for (let i = 0; i < attachNodePath.length; i++ ) { - attachNodePath[i].splice(2,2) + for (let i = 0; i < attachNodePath.length; i++) { + attachNodePath[i].splice(2, 2) } - + // Save attach path to active payload node.payload.referenceParentCombinedNodePath = attachNodePath } // Clear the path to reference parent when the reference is cleared - function cleanAttachNodePath(node){ + function cleanAttachNodePath(node) { if (node.payload !== undefined) { node.payload.referenceParentCombinedNodePath = undefined if (node.savedPayload !== undefined) { diff --git a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js index e38999466..bed053755 100644 --- a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js +++ b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js @@ -587,30 +587,33 @@ function newFoundationsFunctionLibraryTaskFunctions() { } function addMissingProjectDataTasks(node, rootNodes) { - addMissingProjectTasks(node, rootNodes, 'Project Data Tasks') + addMissingProjectTasks(node, rootNodes, 'Project Data Tasks', 'Data Tasks') } function addMissingProjectTradingTasks(node, rootNodes) { - addMissingProjectTasks(node, rootNodes, 'Project Trading Tasks') + addMissingProjectTasks(node, rootNodes, 'Project Trading Tasks', 'Trading Tasks') } function addMissingProjectLearningTasks(node, rootNodes) { - addMissingProjectTasks(node, rootNodes, 'Project Learning Tasks') + addMissingProjectTasks(node, rootNodes, 'Project Learning Tasks', 'Learning Tasks') } - function addMissingProjectTasks(node, rootNodes, newNodeType) { + function addMissingProjectTasks(node, rootNodes, newNodeType, taskType) { for (let k = 0; k < PROJECTS_SCHEMA.length; k++) { let projectDefinition = PROJECTS_SCHEMA[k] let project = projectDefinition.name + if (projectDefinition.tasks === undefined) { continue } + if (projectDefinition.tasks.includes(taskType) === false) { continue } + for (let j = 0; j < rootNodes.length; j++) { let rootNode = rootNodes[j] if (rootNode.type === project + ' Project') { let projectDefinition = rootNode.projectDefinition if (projectDefinition !== undefined) { if (UI.projects.foundations.utilities.nodeChildren.isMissingChildrenById(node, projectDefinition, true) === true) { - let projectTasks = UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, newNodeType, undefined, project) + let projectTasks = UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, newNodeType, undefined, node.project) UI.projects.foundations.functionLibraries.attachDetach.referenceAttachNode(projectTasks, projectDefinition) } } diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index 754b230da..0bb771897 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -66,7 +66,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { for (let j = 0; j < plugins.pluginProjects.length; j++) { let project = plugins.pluginProjects[j] /* - Foundations Plugin Types + Miscelaneours Plugin Types */ if (project.pluginDataMines !== undefined) { totalPlugin = totalPlugin + project.pluginDataMines.pluginFiles.length @@ -96,6 +96,9 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { totalPlugin = totalPlugin + project.pluginLearningEngines.pluginFiles.length pluginAllTheseFiles(project.pluginLearningEngines.pluginFiles, 'Learning-Engines') } + /* + Foundations Plugin Types + */ if (project.pluginTutorials !== undefined) { totalPlugin = totalPlugin + project.pluginTutorials.pluginFiles.length pluginAllTheseFiles(project.pluginTutorials.pluginFiles, 'Tutorials') @@ -202,7 +205,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { config.codeName = name receivedNode.config = JSON.stringify(config) - if (pluginFile.pluginFilePosition !== undefined) { + if (pluginFile.pluginFilePosition !== undefined && receivedNode.savedPayload !== undefined) { let positionOffset = { x: pluginFile.pluginFilePosition.savedPayload.position.x - receivedNode.savedPayload.position.x, y: pluginFile.pluginFilePosition.savedPayload.position.y - receivedNode.savedPayload.position.y @@ -270,7 +273,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { function syncronizeTradingSessionsFoundAtWorkspaceWithBackEnd() { for (let i = 0; i < tradingSessionsFoundAtWorkspace.length; i++) { let node = tradingSessionsFoundAtWorkspace[i] - UI.projects.foundations.functionLibraries.tradingSessionFunctions.syncronizeSessionWithBackEnd(node) + UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.syncronizeSessionWithBackEnd(node) } tradingSessionsFoundAtWorkspace = undefined } @@ -278,7 +281,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { function syncronizeLearningSessionsFoundAtWorkspaceWithBackEnd() { for (let i = 0; i < learningSessionsFoundAtWorkspace.length; i++) { let node = learningSessionsFoundAtWorkspace[i] - UI.projects.foundations.functionLibraries.tradingSessionFunctions.syncronizeSessionWithBackEnd(node) + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.syncronizeSessionWithBackEnd(node) } learningSessionsFoundAtWorkspace = undefined } @@ -443,6 +446,52 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { ) { node.type = "LAN Network Node" } + + if ( + node.type === 'Data Mine' || + node.type === 'API Data Fetcher Bot' || + node.type === 'Indicator Bot' || + node.type === 'Sensor Bot' + ) { + node.project = "Data-Mining" + } + + if ( + node.type === 'Trading Engine' || + node.type === 'Trading Mine' || + node.type === 'Trading System' || + node.type === 'Trading Bot' + ) { + node.project = "Algorithmic-Trading" + } + + if ( + node.type === 'Learning Engine' || + node.type === 'Learning Mine' || + node.type === 'Learning System' || + node.type === 'Learning Bot' + ) { + node.project = "Machine-Learning" + } + + if ( + node.type === 'Plugins' || + node.type === 'Plugin Tutorials' || + node.type === 'Plugin Trading Systems' || + node.type === 'Plugin Trading Mines' || + node.type === 'Plugin Trading Engines' || + node.type === 'Plugin Project' || + node.type === 'Plugin Learning Systems' || + node.type === 'Plugin Learning Mines' || + node.type === 'Plugin Learning Engines' || + node.type === 'Plugin File' || + node.type === 'Plugin File Position' || + node.type === 'Plugin Data Mines' || + node.type === 'Plugin API Maps' + ) { + node.project = "Community-Plugins" + } + /* This function can be called with a positionOffset to change the node saved position and all of its descendants positions as well with an @@ -718,7 +767,11 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { if (property.type === 'node') { if (property.name !== previousPropertyName) { if (node[property.name] === undefined) { - addUIObject(node, property.childType, rootNodes) + let currenAngleToParent = node.payload.floatingObject.angleToParent + node.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + let uiObject = addUIObject(node, property.childType, rootNodes, property.project) + node.payload.floatingObject.angleToParent = currenAngleToParent + //uiObject.payload.floatingObject.angleToParent = currenAngleToParent previousPropertyName = property.name } } diff --git a/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js b/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js index 61a2b1335..c8ab84b65 100644 --- a/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js +++ b/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js @@ -18,7 +18,7 @@ function newWorkspace() { share: shareWorkspace, getNodesByTypeAndHierarchyHeadsType: getNodesByTypeAndHierarchyHeadsType, getProjectsHeads: getProjectsHeads, - getProjectHeadByNodeType: getProjectHeadByNodeType, + getProjectHeadByNodeType: getProjectHeadByNodeType, getHierarchyHeads: getHierarchyHeads, getHierarchyHeadsById: getHierarchyHeadsById, getHierarchyHeadsByCodeNameAndNodeType: getHierarchyHeadsByCodeNameAndNodeType, @@ -72,7 +72,7 @@ function newWorkspace() { for (let i = 0; i < PROJECTS_SCHEMA.length; i++) { let project = PROJECTS_SCHEMA[i].name try { - let actionSwitch = eval('new' + project + 'ActionSwitch()') + let actionSwitch = eval('new' + project.replaceAll('-', '') + 'ActionSwitch()') actionSwitchesByProject.set(project, actionSwitch) } catch (err) { console.log('[WARN] Action Switch for project ' + project + ' not found.') @@ -255,7 +255,7 @@ function newWorkspace() { let saveWithWorkspace = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(pluginFile.payload, 'saveWithWorkspace') if (saveWithWorkspace === true) { - UI.projects.foundations.utilities.plugins.savePluginFile(pluginFile) + UI.projects.communityPlugins.utilities.plugins.savePluginFile(pluginFile) } } } @@ -706,6 +706,10 @@ function newWorkspace() { action.rootNodes = thisObject.workspaceNode.rootNodes let actionSwitch = actionSwitchesByProject.get(action.project) + if (actionSwitch === undefined) { + console.log('[ERROR] Action Switch for project ' + action.project + ' could not be found.') + return + } return actionSwitch.executeAction(action) } diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenu.js b/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenu.js index c9fa366ba..18701154a 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenu.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenu.js @@ -80,6 +80,7 @@ function newCircularMenu() { menuItem.angle = menuItemInitialValue.angle menuItem.currentStatus = menuItemInitialValue.currentStatus menuItem.relatedUiObject = menuItemInitialValue.relatedUiObject + menuItem.relatedUiObjectProject = menuItemInitialValue.relatedUiObjectProject menuItem.dontShowAtFullscreen = menuItemInitialValue.dontShowAtFullscreen menuItem.askConfirmation = menuItemInitialValue.askConfirmation menuItem.confirmationLabel = menuItemInitialValue.confirmationLabel diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js index 5bf0f56e5..16f89505d 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js @@ -1433,9 +1433,6 @@ function newUiObject() { function drawForeground() { if (thisObject.isOnFocus === false) { drawBodyAndPicture() - if (isDragging === false) { - thisObject.menu.drawForeground() - } } if (thisObject.circularProgressBar !== undefined) { diff --git a/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js b/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js index e8a4a29e5..6209338a6 100644 --- a/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js +++ b/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js @@ -9,7 +9,7 @@ function newGovernanceFunctionLibraryPluginsFunctions() { return thisObject function addMissingPluginUserProfiles(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage( @@ -20,15 +20,15 @@ function newGovernanceFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'User-Profiles', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'User-Profiles', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'User-Profiles', 'User Profile') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'User-Profiles', 'User Profile', 'Governance') } } function addMissingPluginPools(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage( @@ -39,15 +39,15 @@ function newGovernanceFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Pools', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Pools', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Pools', 'Pools') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Pools', 'Pools', 'Governance') } } function addMissingPluginAssets(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage( @@ -58,15 +58,15 @@ function newGovernanceFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Assets', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Assets', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Assets', 'Assets') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Assets', 'Assets', 'Governance') } } function addMissingPluginFeatures(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage( @@ -77,15 +77,15 @@ function newGovernanceFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Features', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Features', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Features', 'Features') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Features', 'Features', 'Governance') } } function addMissingPluginPositionss(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { if (node.payload.parentNode !== undefined) { node.payload.parentNode.payload.uiObject.setErrorMessage( @@ -96,10 +96,10 @@ function newGovernanceFunctionLibraryPluginsFunctions() { } } - UI.projects.foundations.utilities.plugins.getPluginFileNames(projectName, 'Positions', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Positions', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Positions', 'Positions') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Positions', 'Positions', 'Governance') } } } diff --git a/Projects/Foundations/Icons/Learning/learning-bot.png b/Projects/Machine-Learning/Icons/Learning/learning-bot.png similarity index 100% rename from Projects/Foundations/Icons/Learning/learning-bot.png rename to Projects/Machine-Learning/Icons/Learning/learning-bot.png diff --git a/Projects/Foundations/Icons/Learning/learning-engine.png b/Projects/Machine-Learning/Icons/Learning/learning-engine.png similarity index 100% rename from Projects/Foundations/Icons/Learning/learning-engine.png rename to Projects/Machine-Learning/Icons/Learning/learning-engine.png diff --git a/Projects/Foundations/Icons/Learning/learning-mine.png b/Projects/Machine-Learning/Icons/Learning/learning-mine.png similarity index 100% rename from Projects/Foundations/Icons/Learning/learning-mine.png rename to Projects/Machine-Learning/Icons/Learning/learning-mine.png diff --git a/Projects/Foundations/Icons/Learning/learning-system.png b/Projects/Machine-Learning/Icons/Learning/learning-system.png similarity index 100% rename from Projects/Foundations/Icons/Learning/learning-system.png rename to Projects/Machine-Learning/Icons/Learning/learning-system.png diff --git a/Projects/Machine-Learning/Icons/machine-learning-project.png b/Projects/Machine-Learning/Icons/machine-learning-project.png new file mode 100644 index 000000000..688bcacdb Binary files /dev/null and b/Projects/Machine-Learning/Icons/machine-learning-project.png differ diff --git a/Projects/Foundations/Plugins/Learning-Engines/Low-Frequency.json b/Projects/Machine-Learning/Plugins/Learning-Engines/Low-Frequency.json similarity index 100% rename from Projects/Foundations/Plugins/Learning-Engines/Low-Frequency.json rename to Projects/Machine-Learning/Plugins/Learning-Engines/Low-Frequency.json diff --git a/Projects/Foundations/Plugins/Learning-Mines/Masters.json b/Projects/Machine-Learning/Plugins/Learning-Mines/Masters.json similarity index 100% rename from Projects/Foundations/Plugins/Learning-Mines/Masters.json rename to Projects/Machine-Learning/Plugins/Learning-Mines/Masters.json diff --git a/Projects/Foundations/Plugins/Learning-Systems/Sandbox.json b/Projects/Machine-Learning/Plugins/Learning-Systems/Sandbox.json similarity index 100% rename from Projects/Foundations/Plugins/Learning-Systems/Sandbox.json rename to Projects/Machine-Learning/Plugins/Learning-Systems/Sandbox.json diff --git a/Projects/Foundations/Schemas/App-Schema/learning-bot.json b/Projects/Machine-Learning/Schemas/App-Schema/learning-bot.json similarity index 72% rename from Projects/Foundations/Schemas/App-Schema/learning-bot.json rename to Projects/Machine-Learning/Schemas/App-Schema/learning-bot.json index 8123e86b6..4439652a9 100644 --- a/Projects/Foundations/Schemas/App-Schema/learning-bot.json +++ b/Projects/Machine-Learning/Schemas/App-Schema/learning-bot.json @@ -7,25 +7,29 @@ "iconPathOn": "configuration", "iconPathOff": "configuration", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Product Definition Folder", "relatedUiObject": "Product Definition Folder", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -34,7 +38,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -54,19 +59,22 @@ "name": "processes", "type": "array", "childType": "Process Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "products", "type": "array", "childType": "Product Definition", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "productDefinitionFolders", "type": "array", "childType": "Product Definition Folder", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" } ], "propertyNameAtParent": "learningBots" diff --git a/Projects/Foundations/Schemas/App-Schema/learning-engine.json b/Projects/Machine-Learning/Schemas/App-Schema/learning-engine.json similarity index 70% rename from Projects/Foundations/Schemas/App-Schema/learning-engine.json rename to Projects/Machine-Learning/Schemas/App-Schema/learning-engine.json index ae575426a..fb41c8d92 100644 --- a/Projects/Foundations/Schemas/App-Schema/learning-engine.json +++ b/Projects/Machine-Learning/Schemas/App-Schema/learning-engine.json @@ -5,7 +5,8 @@ "action": "Add Missing Children", "label": "Add Missing Children", "relatedUiObject": "Learning Engine", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -14,7 +15,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isHierarchyHead": true, @@ -25,25 +27,29 @@ "name": "learningCurrent", "type": "node", "childType": "Learning Current", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "features", "type": "node", "childType": "Features", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "labels", "type": "node", "childType": "Labels", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "predictions", "type": "node", "childType": "Predictions", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/learning-mine.json b/Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json similarity index 68% rename from Projects/Foundations/Schemas/App-Schema/learning-mine.json rename to Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json index cefbe2b42..989b24cdc 100644 --- a/Projects/Foundations/Schemas/App-Schema/learning-mine.json +++ b/Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json @@ -7,19 +7,23 @@ "iconPathOn": "configuration", "iconPathOff": "configuration", "dontShowAtFullscreen": true, - "actionFunction": "uiObject.configEditor.activate" + "actionFunction": "uiObject.configEditor.activate", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Learning Bot", "relatedUiObject": "Learning Bot", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Add UI Object", "label": "Add Plotter", "relatedUiObject": "Plotter", - "actionFunction": "payload.executeAction" + "relatedUiObjectProject": "Foundations", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -28,7 +32,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -45,12 +50,14 @@ { "name": "learningBots", "type": "array", - "childType": "Learning Bot" + "childType": "Learning Bot", + "project": "Algorithmic-Trading" }, { "name": "plotters", "type": "array", - "childType": "Plotter" + "childType": "Plotter", + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Foundations/Schemas/App-Schema/learning-system.json b/Projects/Machine-Learning/Schemas/App-Schema/learning-system.json similarity index 74% rename from Projects/Foundations/Schemas/App-Schema/learning-system.json rename to Projects/Machine-Learning/Schemas/App-Schema/learning-system.json index 9d1c8390e..4075463ae 100644 --- a/Projects/Foundations/Schemas/App-Schema/learning-system.json +++ b/Projects/Machine-Learning/Schemas/App-Schema/learning-system.json @@ -8,7 +8,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isHierarchyHead": true, @@ -18,7 +19,8 @@ { "name": "machineLearningLibrary", "type": "node", - "childType": "TensorFlow Library" + "childType": "TensorFlow Library", + "project": "Foundations" } ] } \ No newline at end of file diff --git a/Projects/Machine-Learning/Schemas/App-Schema/machine-learning-project.json b/Projects/Machine-Learning/Schemas/App-Schema/machine-learning-project.json new file mode 100644 index 000000000..2c2c32481 --- /dev/null +++ b/Projects/Machine-Learning/Schemas/App-Schema/machine-learning-project.json @@ -0,0 +1,63 @@ +{ + "type": "Machine-Learning Project", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "iconPathOn": "machine-learning-project", + "iconPathOff": "machine-learning-project", + "iconProject": "Machine-Learning", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Learning Mine", + "relatedUiObject": "Learning Mine", + "relatedUiObjectProject": "Machine-Learning", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Learning Engine", + "relatedUiObject": "Learning Engine", + "relatedUiObjectProject": "Machine-Learning", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Learning System", + "relatedUiObject": "Learning System", + "relatedUiObjectProject": "Machine-Learning", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.executeAction", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionProject": "Foundations" + } + ], + "isProjectHead": true, + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "isPinned": true, + "positionLocked": true, + "icon": "machine-learning-project", + "childrenNodesProperties": [ + { + "name": "projectDefinition", + "type": "node", + "childType": "Project Definition", + "project": "Foundations", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Foundations/Schemas/Docs-Nodes/L/Learning/Learning-Bot/learning-bot.json b/Projects/Machine-Learning/Schemas/Docs-Nodes/L/Learning/Learning-Bot/learning-bot.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/L/Learning/Learning-Bot/learning-bot.json rename to Projects/Machine-Learning/Schemas/Docs-Nodes/L/Learning/Learning-Bot/learning-bot.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/L/Learning/Learning-Mine/learning-mine.json b/Projects/Machine-Learning/Schemas/Docs-Nodes/L/Learning/Learning-Mine/learning-mine.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/L/Learning/Learning-Mine/learning-mine.json rename to Projects/Machine-Learning/Schemas/Docs-Nodes/L/Learning/Learning-Mine/learning-mine.json diff --git a/Projects/Foundations/Schemas/Docs-Nodes/L/Learning/Learning-System/learning-system.json b/Projects/Machine-Learning/Schemas/Docs-Nodes/L/Learning/Learning-System/learning-system.json similarity index 100% rename from Projects/Foundations/Schemas/Docs-Nodes/L/Learning/Learning-System/learning-system.json rename to Projects/Machine-Learning/Schemas/Docs-Nodes/L/Learning/Learning-System/learning-system.json diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/LearningSession.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/LearningSession.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/LearningSession.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/LearningSession.js index ed0f52dcb..50459a29f 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/LearningSession.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/LearningSession.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningSession = function (processIndex) { +exports.newMachineLearningBotModulesLearningSession = function (processIndex) { const MODULE_NAME = "Learning Session" diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js index 84f53097e..c63f52b31 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningEngine = function (processIndex) { +exports.newMachineLearningBotModulesLearningEngine = function (processIndex) { /* We call the Learning Engine to the data structure that is needed in order to exevute the learning protocol with the specific rules defined at the Learning System. diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js index 6eba82d6e..6ea0bdb39 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningEpisode = function (processIndex) { +exports.newMachineLearningBotModulesLearningEpisode = function (processIndex) { /* This module packages all functions related to Episodes. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js similarity index 92% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js index d6768c04e..b2c6539fe 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningOutput = function (processIndex) { +exports.newMachineLearningBotModulesLearningOutput = function (processIndex) { /* This module will load if necesary all the data outputs so that they can be appended with new records if needed. After running the simulation, it will save all the data outputs. @@ -29,7 +29,7 @@ exports.newFoundationsBotModulesLearningOutput = function (processIndex) { } /* Preparing everything for the Simulation */ - let learningSimulationModuleObject = TS.projects.foundations.botModules.learningSimulation.newFoundationsBotModulesLearningSimulation(processIndex) + let learningSimulationModuleObject = TS.projects.machineLearning.botModules.learningSimulation.newMachineLearningBotModulesLearningSimulation(processIndex) let outputDatasets = TS.projects.foundations.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset') let outputDatasetsMap = new Map() diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js index 3ed2a043c..1bbdcd3c4 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningProcess = function (processIndex) { +exports.newMachineLearningBotModulesLearningProcess = function (processIndex) { /* This Module will load all the process data dependencies from files and send them downstream. After execution, will save the time range and status report of the process. @@ -16,8 +16,9 @@ let dataFiles = new Map() let multiTimeFrameDataFiles = new Map() - TS.projects.foundations.globals.processModuleObjects.MODULE_OBJECTS_BY_PROCESS_INDEX_MAP.get(processIndex).LEARNING_ENGINE_MODULE_OBJECT = TS.projects.foundations.botModules.learningEngine.newFoundationsBotModulesLearningEngine(processIndex) - let learningOutputModuleObject = TS.projects.foundations.botModules.learningOutput.newFoundationsBotModulesLearningOutput(processIndex) + TS.projects.foundations.globals.processModuleObjects.MODULE_OBJECTS_BY_PROCESS_INDEX_MAP.get(processIndex).LEARNING_ENGINE_MODULE_OBJECT = + TS.projects.machineLearning.botModules.learningEngine.newMachineLearningBotModulesLearningEngine(processIndex) + let learningOutputModuleObject = TS.projects.machineLearning.botModules.learningOutput.newMachineLearningBotModulesLearningOutput(processIndex) let currentTimeFrame = {} diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningRecords.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningRecords.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningRecords.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningRecords.js index 9c9b916d5..6ca21e3a8 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningRecords.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningRecords.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningRecords = function (processIndex) { +exports.newMachineLearningBotModulesLearningRecords = function (processIndex) { /* This module facilitates the appending of records to the output of the process. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js index 53ee68f92..b1127e248 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningSimulation = function (processIndex) { +exports.newMachineLearningBotModulesLearningSimulation = function (processIndex) { /* This Module represents the learning simulation. Essentially a loop through a set of candles and the execution at each loop cycle of the Learning System Protocol. @@ -33,10 +33,10 @@ exports.newFoundationsBotModulesLearningSimulation = function (processIndex) { '[INFO] runSimulation -> finalDatetime = ' + sessionParameters.timeRange.config.finalDatetime) /* These are the Modules we will need to run the Simulation */ - let learningRecordsModuleObject = TS.projects.foundations.botModules.learningRecords.newFoundationsBotModulesLearningRecords(processIndex) + let learningRecordsModuleObject = TS.projects.machineLearning.botModules.learningRecords.newMachineLearningBotModulesLearningRecords(processIndex) learningRecordsModuleObject.initialize(outputDatasetsMap) - let learningSystemModuleObject = TS.projects.foundations.botModules.learningSystem.newFoundationsBotModulesLearningSystem(processIndex) + let learningSystemModuleObject = TS.projects.machineLearning.botModules.learningSystem.newMachineLearningBotModulesLearningSystem(processIndex) learningSystemModuleObject.initialize() /* @@ -77,7 +77,7 @@ exports.newFoundationsBotModulesLearningSimulation = function (processIndex) { } } - let learningEpisodeModuleObject = TS.projects.foundations.botModules.learningEpisode.newFoundationsBotModulesLearningEpisode(processIndex) + let learningEpisodeModuleObject = TS.projects.machineLearning.botModules.learningEpisode.newMachineLearningBotModulesLearningEpisode(processIndex) learningEpisodeModuleObject.initialize() /* Setting up the candles array: The whole simulation is based on the array of candles at the time-frame defined at the session parameters. */ diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSystem.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSystem.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSystem.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSystem.js index c1505f124..f6f41c4c1 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSystem.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSystem.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesLearningSystem = function (processIndex) { +exports.newMachineLearningBotModulesLearningSystem = function (processIndex) { /* The Learning System is the user defined set of rules compliant with the Learning Protocol that defines the learning logic to be applied during each cycle of the Simulation. diff --git a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js similarity index 99% rename from Projects/Foundations/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js rename to Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js index 22aa322e5..7eae12d5b 100644 --- a/Projects/Foundations/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js @@ -1,8 +1,8 @@ -exports.newFoundationsBotModulesSingleMarketLearningBot = function (processIndex) { +exports.newMachineLearningBotModulesSingleMarketLearningBot = function (processIndex) { const MODULE_NAME = "Single Market Learning Bot"; - let session = TS.projects.foundations.botModules.learningSession.newFoundationsBotModulesLearningSession(processIndex) + let session = TS.projects.machineLearning.botModules.learningSession.newMachineLearningBotModulesLearningSession(processIndex) let nextLoopTimeoutHandle; let thisObject = { @@ -282,7 +282,7 @@ "[INFO] run -> loop -> initializeDataDependencies -> onInizialized -> Execution finished well.") switch (TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.config.framework.name) { case 'Low-Frequency-Learning-Process': { - processFramework = TS.projects.foundations.botModules.learningProcess.newFoundationsBotModulesLearningProcess(processIndex); + processFramework = TS.projects.machineLearning.botModules.learningProcess.newMachineLearningBotModulesLearningProcess(processIndex); startProcessFramework(); break; } diff --git a/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js b/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js new file mode 100644 index 000000000..a03c5d97f --- /dev/null +++ b/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,38 @@ +function newMachineLearningActionSwitch() { + + let thisObject = { + executeAction: executeAction, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + + } + + function initialize() { + /* Nothing to initialize since a Function Library does not hold any state. */ + } + + async function executeAction(action) { + switch (action.name) { + case 'Run Learning Session': + { + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.runSession(action.node, false, action.callBackFunction) + } + break + case 'Resume Learning Session': + { + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.runSession(action.node, true, action.callBackFunction) + } + break + case 'Stop Learning Session': + { + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.stopSession(action.node, action.callBackFunction) + } + break + } + } +} diff --git a/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js b/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js new file mode 100644 index 000000000..878656d4d --- /dev/null +++ b/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js @@ -0,0 +1,306 @@ +function newMachineLearningFunctionLibraryLearningSessionFunctions() { + let thisObject = { + syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd, + runSession: runSession, + stopSession: stopSession + } + + return thisObject + + function syncronizeSessionWithBackEnd(node) { + let validationsResult = validations(node) + if (validationsResult === undefined) { + /* If something fails at validations we just quit. */ + return + } + let lanNetworkNode = validationsResult.lanNetworkNode + if (lanNetworkNode === undefined) { + /* Nodes that do not belong to a network can not get ready. */ + return + } + + let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) + + /* First we setup everything so as to listen to the response from the Task Server */ + let eventSubscriptionIdOnStatus + let key = node.name + '-' + node.type + '-' + node.id + eventsServerClient.listenToEvent(key, 'Status Response', undefined, node.id, onResponse, onStatus) + + function onResponse(message) { + eventSubscriptionIdOnStatus = message.eventSubscriptionId + } + + function onStatus(message) { + eventsServerClient.stopListening(key, eventSubscriptionIdOnStatus, node.id) + if (message.event.status === 'Learning Session Runnning') { + node.payload.uiObject.menu.internalClick('Run Learning Session') + } + } + + /* Second we ask the Task Server if this Session is Running. */ + eventsServerClient.raiseEvent(key, 'Learning Session Status') + } + + function runSession(node, resume, callBackFunction) { + let validationsResult = validations(node) + if (validationsResult === undefined) { + /* If something fails at validations we just quit. */ + return + } + let lanNetworkNode = validationsResult.lanNetworkNode + if (lanNetworkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) + + node.payload.uiObject.run(eventsServerClient, callBackFunction) + + let key = node.name + '-' + node.type + '-' + node.id + + let lightingPath = '' + + 'Learning System->' + + 'TensorFlow Library->' + + 'Execution Environment->Supervised Learning->Unsupervised Learning->Self Learning->Reinforcement Learning->' + + 'WebGL Backend->NodeJS Backend->WASM Backend->CPU Backend->' + + 'Environment Flags->Debug Mode->Production Mode->' + + 'Supervised Learning->Unsupervised Learning->Self Learning->Reinforcement Learning->' + + 'Artificial Neural Network->Model->' + + 'Logistic Regression->Model->' + + 'Compile->Optimizer->Loss Function->Metrics->Optimizer by Name->SGD Instance->Momentum Instance->Adagrad Instance->Adadelta Instance->Adam Instance->Rmsprop Instance->' + + 'Fit Dataset->Verbose->Epochs->Callbacks->Dataset Args->Batches Per Gradient Update->Shuffle->' + + 'Layers API->Core API->' + + 'Sequential Model->Functional Model->' + + 'Data Reporting->' + + 'Input Layer->Sequential layer->Output Layer->'+ + 'Input Features->Data Feature->Feature Formula->Input Shape->Batch Input Shape->Feature Preprocessing->MinMax Scaler->Standard Scaler->Collection Condition->' + + 'Output Labels->Data Label->Label Formula->' + + 'Advanced Activation Layers->Basic Layers->Convolutional Layers->' + + 'Conv 1D Layer->Conv 2D Layer->Conv 2D Transpose Layer->Conv 3D Layer->Cropping 2D Layer->Depthwise Convo 2D Layer->Separable Convo 2D Layer->Up Sampling 2D Layer->' + + 'Activation Layer->Dense Layer->Dropout Layer->Embedding Layer->Flatten Layer->Permutable Layer->Rrepeat Vector Layer->Reshape Layer->Spatial Dropout 1D Layer->' + + 'Elu Layer->Leaky Relu Layer->Prelu Layer->Relu Layer->Softmax Layer->Thresholded Relu Layer->'+ + 'Dimensionality Units->Activation Function->Dtype->Trainable->Weights->Tensor->Kernel->Bias->' + + 'Kernel Initializer->Kernel Constraint->Kernel Regularizer->' + + 'Bias Initializer->Bias Constraint->Bias Regularizer->' + + let learningSystem = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.learningSystemReference.payload.referenceParent, false, true, true, false, false, lightingPath) + + lightingPath = '' + + 'Learning Engine->' + + 'Learning Current->Learning Last->Previous->' + + 'Learning Episode->' + + 'Episode Base Asset->Episode Quoted Asset->Learning Episode Counters->Learning Episode Statistics->' + + 'Strategies->Positions->Orders->Hits->Fails->' + + 'Profit Loss->Hit Ratio->Hit Fail->Days->ROI->Annualized Rate Of Return->User Defined Statistic->' + + 'Candle->Cycle->' + + 'Begin->End->Last Begin->Last End->Open->Close->Min->Max->Index->' + + 'Distance To Learning Event->' + + 'Head Of The Market->Process Date->' + + 'Trigger On->Trigger Off->Take Position->Close Position->Next Phase->Move To Phase->Create Order->Cancel Order->Close Order->' + + 'Strategy->' + + 'Strategy Counters->' + + 'Position->' + + 'Entry Target Rate->Exit Target Rate->' + + 'Stop Loss->Stop Loss Phase->Stop Loss Position->Begin->End->Initial Value->Final Value->' + + 'Take Profit->Take Profit Phase->Take Profit Position->Begin->End->Initial Value->Final Value->' + + 'Position Counters->' + + 'Position Statistics->Days->User Defined Statistic->' + + 'Position Base Asset->Position Quoted Asset->Entry Target Size->Exit Target Size->' + + 'Profit Loss->ROI->Hit Fail->' + + 'Exchange Orders->Market Buy Orders->Market Sell Orders->Limit Buy Orders->Limit Sell Orders->' + + 'Market Order->Limit Order->' + + 'Exchange Id->Rate->Order Name->Algorithm Name->Lock->' + + 'Order Counters->' + + 'Order Base Asset->Order Quoted Asset->' + + 'Actual Size->Size->Size Filled->Amount Received->Fees Paid->Fees To Be Paid->' + + 'Order Statistics->Percentage Filled->Actual Rate->Days->User Defined Statistic->' + + 'Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->' + + 'Begin->End->Exit Type->Status->Begin Rate->End Rate->Stage Base Asset->Stage Quoted Asset->Size Placed->Target Size->Size Filled->Fees Paid->Stage Defined In->' + + 'Serial Number->Identifier->Begin->End->Begin Rate->End Rate->Strategy Name->Status->Exit Type->' + + 'Balance->Begin Balance->End Balance->' + + 'Index->Situation Name->Formula->Periods->' + + 'Features->Feature->Begin->End->Feature Value->'+ + 'Labels->Label->Begin->End->Label Value->'+ + 'Predictions->Prediction->Begin->End->Prediction Value->' + + let learningEngine = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.learningEngineReference.payload.referenceParent, false, true, true, false, false, lightingPath) + + lightingPath = '' + + 'Back Learning Session->Live Learning Session->' + + 'Learning Parameters->' + + 'Learning Algorithm->Time Range->Time Frame->Heartbeats->User Defined Parameters->' + + 'Social Bots->Telegram Bot->Discord Bot->Slack Bot->Twitter Bot ->' + + let session = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node, false, true, true, false, false, lightingPath) + + let defaultExchange = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.exchange.payload, 'codeName') + let defaultMarket = + UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.baseAsset.payload.referenceParent.payload, 'codeName') + + '-' + + UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.quotedAsset.payload.referenceParent.payload, 'codeName') + + let dependencyFilter = UI.projects.foundations.functionLibraries.dependenciesFilter.createDependencyFilter( + defaultExchange, + defaultMarket, + node.learningSystemReference.payload.referenceParent + ) + + /* Raise event to run the session */ + let event = { + session: JSON.stringify(session), + learningSystem: JSON.stringify(learningSystem), + learningEngine: JSON.stringify(learningEngine), + dependencyFilter: JSON.stringify(dependencyFilter), + resume: resume + } + + if (resume !== true) { + eventsServerClient.raiseEvent(key, 'Run Learning Session', event) + } else { + eventsServerClient.raiseEvent(key, 'Resume Learning Session', event) + } + + if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + } + + function stopSession(node, callBackFunction) { + let validationsResult = validations(node) + if (validationsResult === undefined) { + /* If something fails at validations we just quit. */ + return + } + let lanNetworkNode = validationsResult.lanNetworkNode + if (lanNetworkNode === undefined) { + /* This means that the validations failed. */ + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) + + let key = node.name + '-' + node.type + '-' + node.id + eventsServerClient.raiseEvent(key, 'Stop Learning Session') + + node.payload.uiObject.stop(callBackFunction, undefined, true) + } + + function validations(node) { + + let result = {} + + if (node.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a Process Instance parent to be able to run.') + return + } + + if (node.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Process Instance node.') + return + } + + if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Task.') + return + } + + if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Task Manager.') + return + } + + result.taskManager = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode + + if (result.taskManager.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Mine Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Market Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside Exchange Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Testing or Production Learning Tasks.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to be inside a Network Node.') + return + } + + result.lanNetworkNode = UI.projects.foundations.utilities.meshes.findNodeInNodeMesh(result.taskManager, 'LAN Network Node', undefined, true, false, true, false) + + if (node.learningSystemReference === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a child Learning System Reference.') + return + } + + if (node.learningEngineReference === undefined) { + node.payload.uiObject.setErrorMessage('Session needs a child Learning Engine Reference.') + return + } + + if (node.learningSystemReference.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Learning System Reference needs to reference a Learning System.') + return + } + + if (node.learningEngineReference.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Learning Engine Reference needs to reference a Learning Engine.') + return + } + + if (result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Session needs to have a Default Market.') + return + } + + result.market = result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent + + if (result.market.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Default Market needs to be a child of Exchange Markets.') + return + } + + if (result.market.payload.parentNode.payload.parentNode === undefined) { + node.payload.uiObject.setErrorMessage('Exchange Markets neeed to be a child of Crypto Exchange.') + return + } + + if (result.market.baseAsset === undefined) { + node.payload.uiObject.setErrorMessage('Default Market needs to have a Base Asset.') + return + } + + if (result.market.quotedAsset === undefined) { + node.payload.uiObject.setErrorMessage('Default Market needs to have a Quoted Asset.') + return + } + + if (result.market.baseAsset.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Market Base Asset needs to reference an Asset.') + return + } + + if (result.market.quotedAsset.payload.referenceParent === undefined) { + node.payload.uiObject.setErrorMessage('Market Quoted Asset needs to reference an Asset.') + return + } + + result.exchange = result.market.payload.parentNode.payload.parentNode + + return result + } +} diff --git a/Projects/Social-Trading/NT/Modules/Bootstrap.js b/Projects/Social-Trading/NT/Modules/Bootstrap.js index f46a016b7..303c2791a 100644 --- a/Projects/Social-Trading/NT/Modules/Bootstrap.js +++ b/Projects/Social-Trading/NT/Modules/Bootstrap.js @@ -18,7 +18,7 @@ exports.newBootstrap = function newBootstrap() { async function initialize() { - let pluginFileNames = await SA.projects.foundations.utilities.plugins.getPluginFileNames( + let pluginFileNames = await SA.projects.communityPlugins.utilities.plugins.getPluginFileNames( 'Governance', 'User-Profiles' ) @@ -26,7 +26,7 @@ exports.newBootstrap = function newBootstrap() { for (let i = 0; i < pluginFileNames.length; i++) { let pluginFileName = pluginFileNames[i] - let pluginFileContent = await SA.projects.foundations.utilities.plugins.getPluginFileContent( + let pluginFileContent = await SA.projects.communityPlugins.utilities.plugins.getPluginFileContent( 'Governance', 'User-Profiles', pluginFileName diff --git a/Projects/TensorFlow/Schemas/App-Schema/tensorflow-project.json b/Projects/TensorFlow/Schemas/App-Schema/tensorflow-project.json index 839b6e422..43de86680 100644 --- a/Projects/TensorFlow/Schemas/App-Schema/tensorflow-project.json +++ b/Projects/TensorFlow/Schemas/App-Schema/tensorflow-project.json @@ -1,6 +1,13 @@ { "type": "TensorFlow Project", "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Foundations Project", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, { "action": "Add UI Object", "actionProject": "Foundations", diff --git a/TaskServer/ProcessInstance.js b/TaskServer/ProcessInstance.js index baed01931..769906ab5 100644 --- a/TaskServer/ProcessInstance.js +++ b/TaskServer/ProcessInstance.js @@ -53,14 +53,14 @@ defined with the same type at the property botType. */ for (let i = 0; i < PROJECTS_SCHEMA.length; i++) { - let project = PROJECTS_SCHEMA[i] - if (project.name !== TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName) { continue } - for (let j = 0; j < project.TS.botModules.length; j++) { - botModuleDefinition = project.TS.botModules[j] + let projectDefinition = PROJECTS_SCHEMA[i] + if (projectDefinition.name !== TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName) { continue } + for (let j = 0; j < projectDefinition.TS.botModules.length; j++) { + botModuleDefinition = projectDefinition.TS.botModules[j] if (botModuleDefinition.botType === TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.type) { try { TS.projects.foundations.globals.processVariables.TOTAL_PROCESS_INSTANCES_CREATED++ - let project = TS.projects[TS.projects.foundations.globals.taskConstants.PROJECT_DEFINITION_NODE.config.codeName.toLowerCase()] + let project = TS.projects[projectDefinition.propertyName] let botModule = project.botModules[botModuleDefinition.propertyName] let moduleFunction = botModule[botModuleDefinition.functionName] botModuleObject = moduleFunction(processIndex) diff --git a/TaskServerRoot.js b/TaskServerRoot.js index f20f38061..3b6df6ae8 100644 --- a/TaskServerRoot.js +++ b/TaskServerRoot.js @@ -23,6 +23,12 @@ global.env = ENVIRONMENT_MODULE First thing is to load the project schema file. */ global.PROJECTS_SCHEMA = require(global.env.PATH_TO_PROJECT_SCHEMA) +global.PROJECTS_SCHEMA_MAP = new Map() + +for (let i = 0; i < PROJECTS_SCHEMA.length; i++) { + let projectDefinition = PROJECTS_SCHEMA[i] + PROJECTS_SCHEMA_MAP.set(projectDefinition.name, projectDefinition) +} /* Setting up the modules that will be available, defined at the Project Schema file. */