From 7df98bde28c738bcbc15b9bca5932122ea8618f8 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 11:55:40 +0200 Subject: [PATCH 01/42] Mine Functions moved to Data Mining Project --- .../UI/Function-Libraries/MineFunctions.js | 2 +- .../UI/Function-Libraries/ActionSwitch.js | 6 +++--- Projects/ProjectsSchema.json | 19 ++++++++++++++----- 3 files changed, 18 insertions(+), 9 deletions(-) rename Projects/{Foundations => Data-Mining}/UI/Function-Libraries/MineFunctions.js (98%) 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/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 2f8e41550..657d4fe19 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -425,7 +425,7 @@ function newFoundationsActionSwitch() { break case 'Add All Output Datasets': { - UI.projects.foundations.functionLibraries.mineFunctions.addAllOutputDatasets(action.node) + UI.projects.dataMining.functionLibraries.mineFunctions.addAllOutputDatasets(action.node) } break case 'Add All Data Products': @@ -505,12 +505,12 @@ function newFoundationsActionSwitch() { break case 'Add All Data Dependencies': { - UI.projects.foundations.functionLibraries.mineFunctions.addAllDataDependencies(action.node) + UI.projects.dataMining.functionLibraries.mineFunctions.addAllDataDependencies(action.node) } break case 'Add All Data Mine Dependencies': { - UI.projects.foundations.functionLibraries.mineFunctions.addAllDataMineDataDependencies(action.node, action.rootNodes) + UI.projects.dataMining.functionLibraries.mineFunctions.addAllDataMineDataDependencies(action.node, action.rootNodes) } break case 'Add All Layer Panels': diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 4b7784507..f641ff6b2 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -86,11 +86,6 @@ "propertyName": "cryptoEcosystemFunctions", "functionName": "newFoundationsFunctionLibraryCryptoEcosystemFunctions" }, - { - "name": "Mine Functions", - "propertyName": "mineFunctions", - "functionName": "newFoundationsFunctionLibraryMineFunctions" - }, { "name": "Data Storage Functions", "propertyName": "dataStorageFunctions", @@ -930,6 +925,20 @@ "API Maps" ] }, + { + "name": "Data-Mining", + "propertyName": "dataMining", + "UI": { + "functionLibraries": [ + { + "name": "Mine Functions", + "propertyName": "mineFunctions", + "functionName": "newDataMiningFunctionLibraryMineFunctions" + } + ] + }, + "TS": {} + }, { "name": "Ethereum", "propertyName": "ethereum", From cb010fb5c65391c11ba0956ba2d433e5b7a57a4b Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 14:23:30 +0200 Subject: [PATCH 02/42] Data Mines related modules moved to Data-Mining Project --- Environment.js | 4 +- EnvironmentForDebug.js | 4 +- Projects/Data-Mining/Icons/data-mining.png | Bin 0 -> 9241 bytes .../App-Schema/data-mining-project.json | 42 ++++ .../API-Data-Fetcher-Bot/FetchingProcess.js | 2 +- .../SingleMarketAPIDataFetcherBot.js | 5 +- .../BollingerBandsMultiTimeFrameDaily.js | 2 +- .../BollingerBandsMultiTimeFrameMarket.js | 2 +- .../CandlesVolumesMultiTimeFrameDaily.js | 2 +- .../CandlesVolumesMultiTimeFrameMarket.js | 2 +- .../FromOneMinToMultiTimeFrameDaily.js | 2 +- .../FromOneMinToMultiTimeFrameMarket.js | 2 +- .../Indicator-Bot/IndicatorOutput.js | 2 +- .../Indicator-Bot/MultiTimeFrameDaily.js | 4 +- .../Indicator-Bot/MultiTimeFrameMarket.js | 4 +- .../Indicator-Bot/SingleMarketIndicatorBot.js | 13 +- .../Exchange-Raw-Data/HistoricOHLCVs.js | 2 +- .../Sensor-Bot/SingleMarketSensorBot.js | 5 +- .../Sensor-Bot/Webhooks/CheckWebhook.js | 2 +- ...-005-data-mining-indicator-frameworks.json | 2 +- Projects/ProjectsSchema.json | 221 +++++++++--------- TaskServer/ProcessInstance.js | 10 +- TaskServerRoot.js | 6 + 23 files changed, 197 insertions(+), 143 deletions(-) create mode 100644 Projects/Data-Mining/Icons/data-mining.png create mode 100644 Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/API-Data-Fetcher-Bot/SingleMarketAPIDataFetcherBot.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameDaily.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/Bollinger-Bands/BollingerBandsMultiTimeFrameMarket.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameDaily.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/FromOneMinToMultiTimeFrameMarket.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js (98%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Sensor-Bot/Exchange-Raw-Data/HistoricOHLCVs.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Sensor-Bot/SingleMarketSensorBot.js (99%) rename Projects/{Foundations => Data-Mining}/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js (99%) diff --git a/Environment.js b/Environment.js index 38ae6186b..62c9cb43b 100644 --- a/Environment.js +++ b/Environment.js @@ -4,9 +4,9 @@ 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/Data-Storage', + PATH_TO_LOG_FILES: './Platform/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', diff --git a/EnvironmentForDebug.js b/EnvironmentForDebug.js index efb5fec7b..621af7b3c 100644 --- a/EnvironmentForDebug.js +++ b/EnvironmentForDebug.js @@ -8,9 +8,9 @@ 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/Data-Storage', + PATH_TO_LOG_FILES: './Platform/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', diff --git a/Projects/Data-Mining/Icons/data-mining.png b/Projects/Data-Mining/Icons/data-mining.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b8fa7917eae2a6cb866efea415202f98afaed2 GIT binary patch literal 9241 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 bVnCPM^=!+bP54_X02lO3&KI3^y!YP#zGV61 literal 0 HcmV?d00001 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..d31a511cb --- /dev/null +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json @@ -0,0 +1,42 @@ +{ + "type": "Data-Mining Project", + "menuItems": [ + { + "action": "Add Missing Children", + "label": "Add Missing Children", + "relatedUiObject": "Foundations Project", + "actionFunction": "payload.executeAction" + }, + { + "action": "Delete UI Object", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "actionFunction": "payload.executeAction", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity" + } + ], + "isProjectHead": true, + "isTitleAllwaysVisible": false, + "addLeftIcons": true, + "isPinned": true, + "positionLocked": true, + "icon": "data-mining", + "childrenNodesProperties": [ + { + "name": "projectDefinition", + "type": "node", + "childType": "Project Definition", + "project": "Foundations", + "autoAdd": true + }, + { + "name": "mines", + "type": "node", + "childType": "Mines", + "project": "Foundations", + "autoAdd": true + } + ] +} \ No newline at end of file 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..588914903 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.foundations.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..bc01d3b6a 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.foundations.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 99% 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..d517c3c4e 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.foundations.botModules.multiTimeFrameMarket.newDataMiningBotModulesMultiTimeFrameMarket(processIndex) intitializeProcessFramework() break; } case 'Multi-Time-Frame-Daily': { - processFramework = TS.projects.foundations.botModules.multiTimeFrameDaily.newFoundationsBotModulesMultiTimeFrameDaily(processIndex) + processFramework = TS.projects.foundations.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.foundations.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.foundations.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/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/ProjectsSchema.json b/Projects/ProjectsSchema.json index f641ff6b2..9982a1af8 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -519,114 +519,6 @@ } ], "botModules": [ - { - "name": "Single Market Sensor Bot", - "propertyName": "singleMarketSensorBot", - "functionName": "newFoundationsBotModulesSingleMarketSensorBot", - "fileName": "SingleMarketSensorBot.js", - "folderName": "Sensor-Bot", - "botType": "Sensor Bot" - }, - { - "name": "Exchange Raw Data Historic OHLCVs", - "propertyName": "historicOHLCVs", - "functionName": "newFoundationsBotModulesHistoricOHLCVs", - "fileName": "HistoricOHLCVs.js", - "folderName": "Sensor-Bot/Exchange-Raw-Data" - }, - { - "name": "Webhooks Check Webhook", - "propertyName": "checkWebhook", - "functionName": "newFoundationsBotModulesCheckWebhook", - "fileName": "CheckWebhook.js", - "folderName": "Sensor-Bot/Webhooks" - }, - { - "name": "Single Market API Data Fetcher Bot", - "propertyName": "singleMarketAPIDataFetcherBot", - "functionName": "newFoundationsBotModulesSingleMarketAPIDataFetcherBot", - "fileName": "SingleMarketAPIDataFetcherBot.js", - "folderName": "API-Data-Fetcher-Bot", - "botType": "API Data Fetcher Bot" - }, - { - "name": "API Data Fetcher Fetching Process", - "propertyName": "fetchingProcess", - "functionName": "newFoundationsBotModulesFetchingProcess", - "fileName": "FetchingProcess.js", - "folderName": "API-Data-Fetcher-Bot" - }, - { - "name": "Single Market Indicator Bot", - "propertyName": "singleMarketIndicatorBot", - "functionName": "newFoundationsBotModulesSingleMarketIndicatorBot", - "fileName": "SingleMarketIndicatorBot.js", - "folderName": "Indicator-Bot", - "botType": "Indicator Bot" - }, - { - "name": "Candles Volumes Multi Time Frame Daily", - "propertyName": "candlesVolumesMultiTimeFrameDaily", - "functionName": "newFoundationsBotModulesCandlesVolumesMultiTimeFrameDaily", - "fileName": "CandlesVolumesMultiTimeFrameDaily.js", - "folderName": "Indicator-Bot/Candles-Volumes" - }, - { - "name": "Candles Volumes Multi Time Frame Market", - "propertyName": "candlesVolumesMultiTimeFrameMarket", - "functionName": "newFoundationsBotModulesCandlesVolumesMultiTimeFrameMarket", - "fileName": "CandlesVolumesMultiTimeFrameMarket.js", - "folderName": "Indicator-Bot/Candles-Volumes" - }, - { - "name": "Bollinger Bands Multi Time Frame Daily", - "propertyName": "bollingerBandsMultiTimeFrameDaily", - "functionName": "newFoundationsBotModulesBollingerBandsMultiTimeFrameDaily", - "fileName": "BollingerBandsMultiTimeFrameDaily.js", - "folderName": "Indicator-Bot/Bollinger-Bands" - }, - { - "name": "Bollinger Bands Multi Time Frame Market", - "propertyName": "bollingerBandsMultiTimeFrameMarket", - "functionName": "newFoundationsBotModulesBollingerBandsMultiTimeFrameMarket", - "fileName": "BollingerBandsMultiTimeFrameMarket.js", - "folderName": "Indicator-Bot/Bollinger-Bands" - }, - { - "name": "Multi Time Frame Market", - "propertyName": "multiTimeFrameMarket", - "functionName": "newFoundationsBotModulesMultiTimeFrameMarket", - "fileName": "MultiTimeFrameMarket.js", - "folderName": "Indicator-Bot" - }, - { - "name": "Multi Time Frame Daily", - "propertyName": "multiTimeFrameDaily", - "functionName": "newFoundationsBotModulesMultiTimeFrameDaily", - "fileName": "MultiTimeFrameDaily.js", - "folderName": "Indicator-Bot" - }, - { - "name": "From One Min To Multi Time Frame Market", - "propertyName": "fromOneMinToMultiTimeFrameMarket", - "functionName": "newFoundationsBotModulesFromOneMinToMultiTimeFrameMarket", - "fileName": "FromOneMinToMultiTimeFrameMarket.js", - "folderName": "Indicator-Bot" - }, - { - "name": "From One Min To Multi Time Frame Daily", - "propertyName": "fromOneMinToMultiTimeFrameDaily", - "functionName": "newFoundationsBotModulesFromOneMinToMultiTimeFrameDaily", - "fileName": "FromOneMinToMultiTimeFrameDaily.js", - "folderName": "Indicator-Bot" - }, - { - "name": "Indicator Output", - "propertyName": "indicatorOutput", - "functionName": "newFoundationsBotModulesIndicatorOutput", - "fileName": "IndicatorOutput.js", - "folderName": "Indicator-Bot" - }, { "name": "Single Market Trading Bot", "propertyName": "singleMarketTradingBot", @@ -937,7 +829,118 @@ } ] }, - "TS": {} + "TS": { + "botModules":[ + { + "name": "Single Market Sensor Bot", + "propertyName": "singleMarketSensorBot", + "functionName": "newDataMiningBotModulesSingleMarketSensorBot", + "fileName": "SingleMarketSensorBot.js", + "folderName": "Sensor-Bot", + "botType": "Sensor Bot" + }, + { + "name": "Exchange Raw Data Historic OHLCVs", + "propertyName": "historicOHLCVs", + "functionName": "newDataMiningBotModulesHistoricOHLCVs", + "fileName": "HistoricOHLCVs.js", + "folderName": "Sensor-Bot/Exchange-Raw-Data" + }, + { + "name": "Single Market API Data Fetcher Bot", + "propertyName": "singleMarketAPIDataFetcherBot", + "functionName": "newDataMiningBotModulesSingleMarketAPIDataFetcherBot", + "fileName": "SingleMarketAPIDataFetcherBot.js", + "folderName": "API-Data-Fetcher-Bot", + "botType": "API Data Fetcher Bot" + }, + { + "name": "API Data Fetcher Fetching Process", + "propertyName": "fetchingProcess", + "functionName": "newDataMiningBotModulesFetchingProcess", + "fileName": "FetchingProcess.js", + "folderName": "API-Data-Fetcher-Bot" + }, + { + "name": "Single Market Indicator Bot", + "propertyName": "singleMarketIndicatorBot", + "functionName": "newDataMiningBotModulesSingleMarketIndicatorBot", + "fileName": "SingleMarketIndicatorBot.js", + "folderName": "Indicator-Bot", + "botType": "Indicator Bot" + }, + { + "name": "Candles Volumes Multi Time Frame Daily", + "propertyName": "candlesVolumesMultiTimeFrameDaily", + "functionName": "newDataMiningBotModulesCandlesVolumesMultiTimeFrameDaily", + "fileName": "CandlesVolumesMultiTimeFrameDaily.js", + "folderName": "Indicator-Bot/Candles-Volumes" + }, + { + "name": "Candles Volumes Multi Time Frame Market", + "propertyName": "candlesVolumesMultiTimeFrameMarket", + "functionName": "newDataMiningBotModulesCandlesVolumesMultiTimeFrameMarket", + "fileName": "CandlesVolumesMultiTimeFrameMarket.js", + "folderName": "Indicator-Bot/Candles-Volumes" + }, + { + "name": "Bollinger Bands Multi Time Frame Daily", + "propertyName": "bollingerBandsMultiTimeFrameDaily", + "functionName": "newDataMiningBotModulesBollingerBandsMultiTimeFrameDaily", + "fileName": "BollingerBandsMultiTimeFrameDaily.js", + "folderName": "Indicator-Bot/Bollinger-Bands" + }, + { + "name": "Bollinger Bands Multi Time Frame Market", + "propertyName": "bollingerBandsMultiTimeFrameMarket", + "functionName": "newDataMiningBotModulesBollingerBandsMultiTimeFrameMarket", + "fileName": "BollingerBandsMultiTimeFrameMarket.js", + "folderName": "Indicator-Bot/Bollinger-Bands" + }, + { + "name": "Multi Time Frame Market", + "propertyName": "multiTimeFrameMarket", + "functionName": "newDataMiningBotModulesMultiTimeFrameMarket", + "fileName": "MultiTimeFrameMarket.js", + "folderName": "Indicator-Bot" + }, + { + "name": "Multi Time Frame Daily", + "propertyName": "multiTimeFrameDaily", + "functionName": "newDataMiningBotModulesMultiTimeFrameDaily", + "fileName": "MultiTimeFrameDaily.js", + "folderName": "Indicator-Bot" + }, + { + "name": "From One Min To Multi Time Frame Market", + "propertyName": "fromOneMinToMultiTimeFrameMarket", + "functionName": "newDataMiningBotModulesFromOneMinToMultiTimeFrameMarket", + "fileName": "FromOneMinToMultiTimeFrameMarket.js", + "folderName": "Indicator-Bot" + }, + { + "name": "From One Min To Multi Time Frame Daily", + "propertyName": "fromOneMinToMultiTimeFrameDaily", + "functionName": "newDataMiningBotModulesFromOneMinToMultiTimeFrameDaily", + "fileName": "FromOneMinToMultiTimeFrameDaily.js", + "folderName": "Indicator-Bot" + }, + { + "name": "Indicator Output", + "propertyName": "indicatorOutput", + "functionName": "newDataMiningBotModulesIndicatorOutput", + "fileName": "IndicatorOutput.js", + "folderName": "Indicator-Bot" + }, + { + "name": "Webhooks Check Webhook", + "propertyName": "checkWebhook", + "functionName": "newDataMiningBotModulesCheckWebhook", + "fileName": "CheckWebhook.js", + "folderName": "Sensor-Bot/Webhooks" + } + ] + } }, { "name": "Ethereum", 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 65f5a7d23..39811c671 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. */ From d5add5486ccd15ae88e43c70dfb2b08d905deae9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 16:27:24 +0200 Subject: [PATCH 03/42] Indicators From Getting Started Tutorials Workspace Running --- .gitignore | 2 ++ Environment.js | 4 ++-- EnvironmentForDebug.js | 4 ++-- .../Icons/Api/api-data-fetcher-bot.png | Bin .../Icons/Data/data-mine.png | Bin .../Icons/{ => Data}/data-mining.png | Bin .../Icons/indicator-bot.png | Bin .../Icons/sensor-bot.png | Bin .../App-Schema/Api/api-data-fetcher-bot.json | 18 ++++++++++----- .../Schemas/App-Schema/data-mine.json | 21 ++++++++++++------ .../App-Schema/data-mining-project.json | 20 +++++++++-------- .../Schemas/App-Schema/indicator-bot.json | 18 ++++++++++----- .../Schemas/App-Schema/sensor-bot.json | 18 ++++++++++----- .../Indicator-Bot/MultiTimeFrameDaily.js | 2 +- .../Indicator-Bot/MultiTimeFrameMarket.js | 2 +- .../Indicator-Bot/SingleMarketIndicatorBot.js | 8 +++---- .../TS/Process-Modules/StatusReport.js | 2 +- .../Function-Libraries/UiObjectsFromNodes.js | 10 +++++++++ .../App-Schema/tensorflow-project.json | 7 ++++++ 19 files changed, 91 insertions(+), 45 deletions(-) rename Projects/{Foundations => Data-Mining}/Icons/Api/api-data-fetcher-bot.png (100%) rename Projects/{Foundations => Data-Mining}/Icons/Data/data-mine.png (100%) rename Projects/Data-Mining/Icons/{ => Data}/data-mining.png (100%) rename Projects/{Foundations => Data-Mining}/Icons/indicator-bot.png (100%) rename Projects/{Foundations => Data-Mining}/Icons/sensor-bot.png (100%) rename Projects/{Foundations => Data-Mining}/Schemas/App-Schema/Api/api-data-fetcher-bot.json (74%) rename Projects/{Foundations => Data-Mining}/Schemas/App-Schema/data-mine.json (74%) rename Projects/{Foundations => Data-Mining}/Schemas/App-Schema/indicator-bot.json (73%) rename Projects/{Foundations => Data-Mining}/Schemas/App-Schema/sensor-bot.json (73%) diff --git a/.gitignore b/.gitignore index 9705d9e62..20c5ba571 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 62c9cb43b..46b8073f9 100644 --- a/Environment.js +++ b/Environment.js @@ -4,8 +4,8 @@ exports.newEnvironment = function () { WEB_SERVER_URL: 'localhost', CLIENT_WEB_SOCKETS_INTERFACE_PORT: 18041, CLIENT_HTTP_INTERFACE_PORT: 34248, - PATH_TO_DATA_STORAGE: './Platform/Data-Storage', - PATH_TO_LOG_FILES: './Platform/Log-Files', + PATH_TO_DATA_STORAGE: './Platform/My-Data-Storage', + PATH_TO_LOG_FILES: './Platform/My-Log-Files', PATH_TO_PROJECTS: './Projects', PATH_TO_PROJECTS_REQUIRED: './Projects', PATH_TO_PROJECT_SCHEMA: './Projects/ProjectsSchema.json', diff --git a/EnvironmentForDebug.js b/EnvironmentForDebug.js index 621af7b3c..4bc261afd 100644 --- a/EnvironmentForDebug.js +++ b/EnvironmentForDebug.js @@ -8,8 +8,8 @@ exports.newEnvironment = function () { DESKTOP_WEB_SOCKETS_INTERFACE_HOST: 'localhost', CLIENT_HTTP_INTERFACE_PORT: 34248, DESKTOP_HTTP_INTERFACE_PORT: 34249, - PATH_TO_DATA_STORAGE: './Platform/Data-Storage', - PATH_TO_LOG_FILES: './Platform/Log-Files', + PATH_TO_DATA_STORAGE: './Platform/My-Data-Storage', + PATH_TO_LOG_FILES: './Platform/My-Log-Files', PATH_TO_PROJECTS: './Projects', PATH_TO_PROJECTS_REQUIRED: './Projects', PATH_TO_PROJECT_SCHEMA: './Projects/ProjectsSchema.json', 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-mining.png b/Projects/Data-Mining/Icons/Data/data-mining.png similarity index 100% rename from Projects/Data-Mining/Icons/data-mining.png rename to Projects/Data-Mining/Icons/Data/data-mining.png 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/Schemas/App-Schema/Api/api-data-fetcher-bot.json b/Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json similarity index 74% 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..9eeb5da39 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,22 @@ "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": "Delete UI Object", @@ -28,7 +31,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -48,13 +52,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 74% rename from Projects/Foundations/Schemas/App-Schema/data-mine.json rename to Projects/Data-Mining/Schemas/App-Schema/data-mine.json index bd5e6de93..839b92d93 100644 --- a/Projects/Foundations/Schemas/App-Schema/data-mine.json +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mine.json @@ -7,31 +7,36 @@ "iconPathOn": "configuration", "iconPathOff": "configuration", "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" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -40,7 +45,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -72,7 +78,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 index d31a511cb..103dbf7a2 100644 --- a/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json @@ -5,7 +5,15 @@ "action": "Add Missing Children", "label": "Add Missing Children", "relatedUiObject": "Foundations Project", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" + }, + { + "action": "Add UI Object", + "label": "Add Data Mien", + "relatedUiObject": "Data Mien", + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -14,7 +22,8 @@ "actionFunction": "payload.executeAction", "label": "Delete", "iconPathOn": "delete-entity", - "iconPathOff": "delete-entity" + "iconPathOff": "delete-entity", + "actionProject": "Foundations" } ], "isProjectHead": true, @@ -30,13 +39,6 @@ "childType": "Project Definition", "project": "Foundations", "autoAdd": true - }, - { - "name": "mines", - "type": "node", - "childType": "Mines", - "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 73% rename from Projects/Foundations/Schemas/App-Schema/indicator-bot.json rename to Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json index 98b8b9534..7d0d586b4 100644 --- a/Projects/Foundations/Schemas/App-Schema/indicator-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json @@ -7,19 +7,22 @@ "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": "Delete UI Object", @@ -28,7 +31,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -48,13 +52,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 73% rename from Projects/Foundations/Schemas/App-Schema/sensor-bot.json rename to Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json index 2fe664109..105d23826 100644 --- a/Projects/Foundations/Schemas/App-Schema/sensor-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json @@ -7,19 +7,22 @@ "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": "Delete UI Object", @@ -28,7 +31,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -48,13 +52,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/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js index 588914903..db2b8c77b 100644 --- a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameDaily.js @@ -25,7 +25,7 @@ statusDependenciesModule = pStatusDependencies; dataDependenciesModule = pStatusDependenciesModule; - indicatorOutputModule = TS.projects.foundations.botModules.indicatorOutput.newDataMiningBotModulesIndicatorOutput(processIndex) + indicatorOutputModule = TS.projects.dataMining.botModules.indicatorOutput.newDataMiningBotModulesIndicatorOutput(processIndex) indicatorOutputModule.initialize(callBackFunction) } diff --git a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js index bc01d3b6a..764653a54 100644 --- a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/MultiTimeFrameMarket.js @@ -24,7 +24,7 @@ statusDependenciesModule = pStatusDependencies dataDependenciesModule = pStatusDependenciesModule - indicatorOutputModule = TS.projects.foundations.botModules.indicatorOutput.newDataMiningBotModulesIndicatorOutput(processIndex) + indicatorOutputModule = TS.projects.dataMining.botModules.indicatorOutput.newDataMiningBotModulesIndicatorOutput(processIndex) indicatorOutputModule.initialize(callBackFunction) } diff --git a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js index d517c3c4e..47de8ea6e 100644 --- a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/SingleMarketIndicatorBot.js @@ -277,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.newDataMiningBotModulesMultiTimeFrameMarket(processIndex) + processFramework = TS.projects.dataMining.botModules.multiTimeFrameMarket.newDataMiningBotModulesMultiTimeFrameMarket(processIndex) intitializeProcessFramework() break; } case 'Multi-Time-Frame-Daily': { - processFramework = TS.projects.foundations.botModules.multiTimeFrameDaily.newDataMiningBotModulesMultiTimeFrameDaily(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.newDataMiningBotModulesFromOneMinToMultiTimeFrameMarket(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.newDataMiningBotModulesFromOneMinToMultiTimeFrameDaily(processIndex) + processFramework = TS.projects.dataMining.botModules.fromOneMinToMultiTimeFrameDaily.newDataMiningBotModulesFromOneMinToMultiTimeFrameDaily(processIndex) intitializeProcessFramework() break; } 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/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index ccac9e95c..b02a724fc 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -441,6 +441,16 @@ 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" + } + /* This function can be called with a positionOffset to change the node saved position and all of its descendants positions as well with an 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", From bf931fedf678deaa6213c55e0d8eb662aa6a61ec Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 17:44:04 +0200 Subject: [PATCH 04/42] Docs nodes moved --- .../A/API/API-Data-Fetcher-Bot/api-data-fetcher-bot.json | 0 .../Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json | 0 .../Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json | 0 .../Schemas/Docs-Nodes/S/Sensor/Sensor-Bot/sensor-bot.json | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename Projects/{Foundations => Data-Mining}/Schemas/Docs-Nodes/A/API/API-Data-Fetcher-Bot/api-data-fetcher-bot.json (100%) rename Projects/{Foundations => Data-Mining}/Schemas/Docs-Nodes/D/Data/Data-Mine/data-mine.json (100%) rename Projects/{Foundations => Data-Mining}/Schemas/Docs-Nodes/I/Indicator/Indicator-Bot/indicator-bot.json (100%) rename Projects/{Foundations => Data-Mining}/Schemas/Docs-Nodes/S/Sensor/Sensor-Bot/sensor-bot.json (100%) 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 From ee90ba2b45520e41d85d5197bf2daa47f57b282f Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 18:24:37 +0200 Subject: [PATCH 05/42] Docs Bug Fixed handling Menu Items of other Projects --- .../App-Schema/Api/api-data-fetcher-bot.json | 2 ++ .../Schemas/App-Schema/data-mine.json | 1 + .../App-Schema/data-mining-project.json | 4 ++-- .../Schemas/App-Schema/indicator-bot.json | 2 ++ .../Schemas/App-Schema/sensor-bot.json | 2 ++ .../UI/Spaces/Docs-Space/DocumentPage.js | 19 +++++++++++++++---- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json b/Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json index 9eeb5da39..6265ca234 100644 --- a/Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/Api/api-data-fetcher-bot.json @@ -14,6 +14,7 @@ "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, @@ -21,6 +22,7 @@ "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, diff --git a/Projects/Data-Mining/Schemas/App-Schema/data-mine.json b/Projects/Data-Mining/Schemas/App-Schema/data-mine.json index 839b92d93..30943c8bb 100644 --- a/Projects/Data-Mining/Schemas/App-Schema/data-mine.json +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mine.json @@ -35,6 +35,7 @@ "action": "Add UI Object", "label": "Add Plotter", "relatedUiObject": "Plotter", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, diff --git a/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json index 103dbf7a2..de9583907 100644 --- a/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json @@ -10,8 +10,8 @@ }, { "action": "Add UI Object", - "label": "Add Data Mien", - "relatedUiObject": "Data Mien", + "label": "Add Data Mine", + "relatedUiObject": "Data Mine", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, diff --git a/Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json b/Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json index 7d0d586b4..6846ae63a 100644 --- a/Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/indicator-bot.json @@ -14,6 +14,7 @@ "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, @@ -21,6 +22,7 @@ "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, diff --git a/Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json b/Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json index 105d23826..779e4b644 100644 --- a/Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json +++ b/Projects/Data-Mining/Schemas/App-Schema/sensor-bot.json @@ -14,6 +14,7 @@ "action": "Add UI Object", "label": "Add Process Definition", "relatedUiObject": "Process Definition", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, @@ -21,6 +22,7 @@ "action": "Add UI Object", "label": "Add Product Definition", "relatedUiObject": "Product Definition", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, 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') } From 3d0682b004fbfaa58ae3b3f9b866f41d7c29c536 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 18:43:37 +0200 Subject: [PATCH 06/42] Bug fixes with attaching rules --- .../Foundations/Schemas/App-Schema/process-definition.json | 2 +- .../Foundations/Schemas/App-Schema/product-definition.json | 2 +- .../data-mining-006-data-mining-data-mine-hierarchy.json | 4 ++-- .../data-mining-016-data-mining-indicator-bots.json | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) 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/product-definition.json b/Projects/Foundations/Schemas/App-Schema/product-definition.json index a10f42c92..555f2adf0 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-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 } ] From 86fcfb4c67e3b5f21c10bd408c7b418fb752305f Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 21:16:41 +0200 Subject: [PATCH 07/42] Bug Fixed at Menu Items not handling relatedUiObjectProject --- .../UI/Spaces/Floating-Space/CircularMenu.js | 1 + .../Spaces/Floating-Space/CircularMenuItem.js | 59 +++++++++++-------- .../UI/Spaces/Floating-Space/UiObject.js | 3 - 3 files changed, 34 insertions(+), 29 deletions(-) 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/CircularMenuItem.js b/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js index 67fe1cd7c..ca1b8496e 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js @@ -39,6 +39,7 @@ function newCircularMenuItem() { container: undefined, payload: undefined, relatedUiObject: undefined, + relatedUiObjectProject: undefined, dontShowAtFullscreen: undefined, isEnabled: true, shorcutNumber: undefined, @@ -263,13 +264,18 @@ function newCircularMenuItem() { thisObject.iconOn = UI.projects.foundations.spaces.designSpace.getIconByProjectAndName('Foundations', thisObject.secondaryIcon) thisObject.iconOff = UI.projects.foundations.spaces.designSpace.getIconByProjectAndName('Foundations', thisObject.secondaryIcon) } else { - if (thisObject.label === "Add Dependency Product Folder") { console.log ("Test") } + if (thisObject.relatedUiObject !== undefined && thisObject.iconProject !== undefined) { thisObject.iconOn = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.iconProject, thisObject.relatedUiObject) thisObject.iconOff = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.iconProject, thisObject.relatedUiObject) } else if (thisObject.relatedUiObject !== undefined && thisObject.iconProject === undefined) { - thisObject.iconOn = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.payload.node.project, thisObject.relatedUiObject) - thisObject.iconOff = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.payload.node.project, thisObject.relatedUiObject) + if (thisObject.relatedUiObjectProject !== undefined) { + thisObject.iconOn = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.relatedUiObjectProject, thisObject.relatedUiObject) + thisObject.iconOff = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.relatedUiObjectProject, thisObject.relatedUiObject) + } else { + thisObject.iconOn = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.payload.node.project, thisObject.relatedUiObject) + thisObject.iconOff = UI.projects.foundations.spaces.designSpace.getIconByProjectAndType(thisObject.payload.node.project, thisObject.relatedUiObject) + } } else { if (thisObject.iconPathOn !== undefined && thisObject.iconPathOff !== undefined && thisObject.iconProject !== undefined) { thisObject.iconOn = UI.projects.foundations.spaces.designSpace.getIconByProjectAndName(thisObject.iconProject, thisObject.iconPathOn) @@ -303,7 +309,7 @@ function newCircularMenuItem() { if (thisObject.container.frame.isThisPointHere(point, true, false) === true) { let text = thisObject.action - if(thisObject.payload.uiObject.payload.referenceParent !== undefined && thisObject.action === 'Reference Detach'){ + if (thisObject.payload.uiObject.payload.referenceParent !== undefined && thisObject.action === 'Reference Detach') { text = text + ' -> [Existing Reference] Type : [' + thisObject.payload.uiObject.payload.referenceParent.type + '] , Name : [' + thisObject.payload.uiObject.payload.referenceParent.name + ']' } @@ -485,32 +491,33 @@ function newCircularMenuItem() { iconSize = UI.projects.foundations.spaces.floatingSpace.style.node.menuItem.imageSize } - if (thisObject.icon === undefined) { return } - if (thisObject.icon.canDrawIcon === true && thisObject.currentRadius > 1 && thisObject.isDeployed === true) { - browserCanvasContext.drawImage(thisObject.icon, menuPosition.x - iconSize, menuPosition.y - iconSize, iconSize * 2, iconSize * 2) + if (thisObject.icon !== undefined) { + if (thisObject.icon.canDrawIcon === true && thisObject.currentRadius > 1 && thisObject.isDeployed === true) { + browserCanvasContext.drawImage(thisObject.icon, menuPosition.x - iconSize, menuPosition.y - iconSize, iconSize * 2, iconSize * 2) + } + } - /* Menu Label */ - if (thisObject.type === 'Icon & Text') { - label = labelToPrint - if (thisObject.shorcutNumber !== undefined) { - label = '' + thisObject.shorcutNumber + '- ' + labelToPrint + /* Menu Label */ + if (thisObject.type === 'Icon & Text') { + label = labelToPrint + if (thisObject.shorcutNumber !== undefined) { + label = '' + thisObject.shorcutNumber + '- ' + labelToPrint + } + + let labelPoint + let fontSize = UI.projects.foundations.spaces.floatingSpace.style.node.menuItem.fontSize + + browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY + + if (thisObject.currentRadius >= thisObject.targetRadius) { + labelPoint = { + x: menuPosition.x + thisObject.currentRadius + 25, + y: menuPosition.y + fontSize * FONT_ASPECT_RATIO } - let labelPoint - let fontSize = UI.projects.foundations.spaces.floatingSpace.style.node.menuItem.fontSize - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - - if (thisObject.currentRadius >= thisObject.targetRadius) { - labelPoint = { - x: menuPosition.x + thisObject.currentRadius + 25, - y: menuPosition.y + fontSize * FONT_ASPECT_RATIO - } - - browserCanvasContext.font = fontSize + 'px ' + UI_FONT.PRIMARY - browserCanvasContext.fillStyle = 'rgba(' + UI.projects.foundations.spaces.floatingSpace.style.node.menuItem.fontColor + ', 1)' - browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) - } + browserCanvasContext.fillStyle = 'rgba(' + UI.projects.foundations.spaces.floatingSpace.style.node.menuItem.fontColor + ', 1)' + browserCanvasContext.fillText(label, labelPoint.x, labelPoint.y) } } } diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js b/Projects/Foundations/UI/Spaces/Floating-Space/UiObject.js index 3de121654..69802b1ed 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) { From 47e3961b3e66e40f5f6aff5df3f9206947c33c73 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sat, 25 Sep 2021 21:22:45 +0200 Subject: [PATCH 08/42] Bug Fixed Attaching Rules --- Projects/Foundations/Schemas/App-Schema/product-definition.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Foundations/Schemas/App-Schema/product-definition.json b/Projects/Foundations/Schemas/App-Schema/product-definition.json index 555f2adf0..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": "->Data Mining|Sensor Bot->Data Mining|API Data Fetcher Bot->Data Mining|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": [ { From 742722be718413947131a533f5d18952108b9dc5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 26 Sep 2021 14:58:22 +0200 Subject: [PATCH 09/42] Plugins Project implemented --- Platform/Client/githubServer.js | 8 +- Platform/Client/httpInterface.js | 28 +++-- ...ata-mining.png => data-mining-project.png} | Bin .../Plugins/Data-Mines/Alpha.json | 0 .../Plugins/Data-Mines/Barcelona.json | 0 .../Plugins/Data-Mines/Bollinger.json | 0 .../Plugins/Data-Mines/Buddha.json | 0 .../Plugins/Data-Mines/Candles.json | 0 .../Plugins/Data-Mines/CoinGecko.json | 0 .../Plugins/Data-Mines/Delta.json | 0 .../Plugins/Data-Mines/Heikin.json | 0 .../Plugins/Data-Mines/Indicator-Add-ons.json | 0 .../Plugins/Data-Mines/Masters.json | 0 .../Plugins/Data-Mines/Messari.json | 0 .../Plugins/Data-Mines/Omega-One.json | 0 .../Plugins/Data-Mines/Pluvtech.json | 0 .../Plugins/Data-Mines/Polus.json | 0 .../Plugins/Data-Mines/Quasar.json | 0 .../Plugins/Data-Mines/Samurai.json | 0 .../Plugins/Data-Mines/Sparta.json | 0 .../Plugins/Data-Mines/Turtles.json | 0 .../Plugins/Data-Mines/Webhooks.json | 0 .../Plugins/Data-Mines/Zeus.json | 0 .../Plugins/Data-Mines/quantum.json | 0 .../App-Schema/data-mining-project.json | 3 +- ...-actions-adding-an-action-switch-case.json | 4 +- .../UI/Function-Libraries/ActionSwitch.js | 75 -------------- .../Function-Libraries/UiObjectsFromNodes.js | 18 ++++ .../UI/Spaces/Design-Space/Workspace.js | 2 +- .../UI/Function-Libraries/PluginsFunctions.js | 30 +++--- .../Icons}/plugin-api-maps.png | Bin .../Icons}/plugin-data-mines.png | Bin .../Icons}/plugin-file-position.png | Bin .../Plugins => Plugins/Icons}/plugin-file.png | Bin .../Icons}/plugin-learning-engines.png | Bin .../Icons}/plugin-learning-mines.png | Bin .../Icons}/plugin-learning-systems.png | Bin .../Icons}/plugin-project.png | Bin .../Icons}/plugin-super-scripts.png | Bin .../Icons}/plugin-trading-engines.png | Bin .../Icons}/plugin-trading-mines.png | Bin .../Icons}/plugin-trading-systems.png | Bin .../Icons}/plugin-tutorials.png | Bin .../Icons/plugins-project.png} | Bin Projects/Plugins/Icons/plugins.png | Bin 0 -> 9720 bytes .../SA/Utilities/Plugins.js | 4 +- .../Schemas/App-Schema/plugin-api-maps.json | 3 +- .../Schemas/App-Schema/plugin-data-mines.json | 10 +- .../App-Schema/plugin-file-position.json | 3 +- .../Schemas/App-Schema/plugin-file.json | 6 +- .../App-Schema/plugin-learning-engines.json | 3 +- .../App-Schema/plugin-learning-mines.json | 3 +- .../App-Schema/plugin-learning-systems.json | 3 +- .../Schemas/App-Schema/plugin-project.json | 6 +- .../App-Schema/plugin-trading-engines.json | 3 +- .../App-Schema/plugin-trading-mines.json | 3 +- .../App-Schema/plugin-trading-systems.json | 3 +- .../Schemas/App-Schema/plugin-tutorials.json | 3 +- .../Schemas/App-Schema/plugins-project.json | 45 ++++++++ .../Schemas/App-Schema/plugins.json | 3 +- .../Plugin-API-Maps/plugin-api-maps.json | 0 .../Plugin-Data-Mines/plugin-data-mines.json | 0 .../plugin-file-position.json | 0 .../P/Plugin/Plugin-File/plugin-file.json | 0 .../Plugin/Plugin-Project/plugin-project.json | 0 .../plugin-super-scripts.json | 0 .../plugin-trading-engines.json | 0 .../plugin-trading-mines.json | 0 .../plugin-trading-systems.json | 0 .../Plugin-Tutorials/plugin-tutorials.json | 0 .../Docs-Nodes/P}/Plugins/plugins.json | 0 .../UI/Function-Libraries/ActionSwitch.js | 98 ++++++++++++++++++ .../UI/Function-Libraries/PluginsFunctions.js | 66 ++++++------ .../UI/Utilities/Plugins.js | 12 +-- Projects/ProjectsSchema.json | 63 +++++++---- .../Social-Trading/NT/Modules/Bootstrap.js | 4 +- 76 files changed, 320 insertions(+), 192 deletions(-) rename Projects/Data-Mining/Icons/Data/{data-mining.png => data-mining-project.png} (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Alpha.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Barcelona.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Bollinger.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Buddha.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Candles.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/CoinGecko.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Delta.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Heikin.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Indicator-Add-ons.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Masters.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Messari.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Omega-One.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Pluvtech.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Polus.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Quasar.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Samurai.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Sparta.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Turtles.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Webhooks.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/Zeus.json (100%) rename Projects/{Foundations => Data-Mining}/Plugins/Data-Mines/quantum.json (100%) mode change 100755 => 100644 rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-api-maps.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-data-mines.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-file-position.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-file.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-learning-engines.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-learning-mines.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-learning-systems.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-project.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-super-scripts.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-trading-engines.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-trading-mines.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-trading-systems.png (100%) rename Projects/{Foundations/Icons/Plugins => Plugins/Icons}/plugin-tutorials.png (100%) rename Projects/{Foundations/Icons/Plugins/plugins.png => Plugins/Icons/plugins-project.png} (100%) create mode 100644 Projects/Plugins/Icons/plugins.png rename Projects/{Foundations => Plugins}/SA/Utilities/Plugins.js (94%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-api-maps.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-data-mines.json (77%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-file-position.json (83%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-file.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-learning-engines.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-learning-mines.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-learning-systems.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-project.json (95%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-trading-engines.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-trading-mines.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-trading-systems.json (91%) rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugin-tutorials.json (91%) create mode 100644 Projects/Plugins/Schemas/App-Schema/plugins-project.json rename Projects/{Foundations => Plugins}/Schemas/App-Schema/plugins.json (91%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-API-Maps/plugin-api-maps.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Data-Mines/plugin-data-mines.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-File-Position/plugin-file-position.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-File/plugin-file.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Project/plugin-project.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Super-Scripts/plugin-super-scripts.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Engines/plugin-trading-engines.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Mines/plugin-trading-mines.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Systems/plugin-trading-systems.json (100%) rename Projects/{Foundations => Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Tutorials/plugin-tutorials.json (100%) rename Projects/{Foundations/Schemas/Docs-Nodes/P/Plugins => Plugins/Schemas/Docs-Nodes/P}/Plugins/plugins.json (100%) create mode 100644 Projects/Plugins/UI/Function-Libraries/ActionSwitch.js rename Projects/{Foundations => Plugins}/UI/Function-Libraries/PluginsFunctions.js (68%) rename Projects/{Foundations => Plugins}/UI/Utilities/Plugins.js (97%) diff --git a/Platform/Client/githubServer.js b/Platform/Client/githubServer.js index 004811b2f..2a779b259 100644 --- a/Platform/Client/githubServer.js +++ b/Platform/Client/githubServer.js @@ -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.plugins.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.plugins.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.plugins.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.plugins.utilities.plugins.getPluginFileContent( 'Governance', 'User-Profiles', pluginFileName diff --git a/Platform/Client/httpInterface.js b/Platform/Client/httpInterface.js index cbe0d20aa..37e7234bd 100644 --- a/Platform/Client/httpInterface.js +++ b/Platform/Client/httpInterface.js @@ -1067,7 +1067,7 @@ exports.newHttpInterface = function newHttpInterface() { ) SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse) - + setInterval( PL.servers.GITHUB_SERVER.mergePullRequests, 60000, @@ -1075,7 +1075,7 @@ exports.newHttpInterface = function newHttpInterface() { params.username, params.token ) - + return } case 'payContributors': { @@ -1106,7 +1106,7 @@ exports.newHttpInterface = function newHttpInterface() { } try { SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(error), httpResponse) - } catch(err) { + } catch (err) { // we just try to reponnd to the web app, but maybe the response has already been sent. } } @@ -1382,11 +1382,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.plugins.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) @@ -1419,12 +1421,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.plugins.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 @@ -1433,8 +1441,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/Data-Mining/Icons/Data/data-mining.png b/Projects/Data-Mining/Icons/Data/data-mining-project.png similarity index 100% rename from Projects/Data-Mining/Icons/Data/data-mining.png rename to Projects/Data-Mining/Icons/Data/data-mining-project.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/Data-Mining/Schemas/App-Schema/data-mining-project.json b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json index de9583907..e6190d9e1 100644 --- a/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json +++ b/Projects/Data-Mining/Schemas/App-Schema/data-mining-project.json @@ -12,6 +12,7 @@ "action": "Add UI Object", "label": "Add Data Mine", "relatedUiObject": "Data Mine", + "relatedUiObjectProject": "Data-Mining", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, @@ -31,7 +32,7 @@ "addLeftIcons": true, "isPinned": true, "positionLocked": true, - "icon": "data-mining", + "icon": "data-mining-project", "childrenNodesProperties": [ { "name": "projectDefinition", 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/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 657d4fe19..480c3ade0 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -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 @@ -660,76 +655,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/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index b02a724fc..1ee871873 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -451,6 +451,24 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { node.project = "Data-Mining" } + 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 = "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 diff --git a/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js b/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js index 61a2b1335..da55b395d 100644 --- a/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js +++ b/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js @@ -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.plugins.utilities.plugins.savePluginFile(pluginFile) } } } diff --git a/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js b/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js index e8a4a29e5..c563f066f 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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'User-Profiles', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'User-Profiles', 'User Profile') + UI.projects.plugins.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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Pools', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Pools', 'Pools') + UI.projects.plugins.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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Assets', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Assets', 'Assets') + UI.projects.plugins.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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Features', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Features', 'Features') + UI.projects.plugins.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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Positions', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Positions', 'Positions') + UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Positions', 'Positions', 'Governance') } } } diff --git a/Projects/Foundations/Icons/Plugins/plugin-api-maps.png b/Projects/Plugins/Icons/plugin-api-maps.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-api-maps.png rename to Projects/Plugins/Icons/plugin-api-maps.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-data-mines.png b/Projects/Plugins/Icons/plugin-data-mines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-data-mines.png rename to Projects/Plugins/Icons/plugin-data-mines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-file-position.png b/Projects/Plugins/Icons/plugin-file-position.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-file-position.png rename to Projects/Plugins/Icons/plugin-file-position.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-file.png b/Projects/Plugins/Icons/plugin-file.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-file.png rename to Projects/Plugins/Icons/plugin-file.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-learning-engines.png b/Projects/Plugins/Icons/plugin-learning-engines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-learning-engines.png rename to Projects/Plugins/Icons/plugin-learning-engines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-learning-mines.png b/Projects/Plugins/Icons/plugin-learning-mines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-learning-mines.png rename to Projects/Plugins/Icons/plugin-learning-mines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-learning-systems.png b/Projects/Plugins/Icons/plugin-learning-systems.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-learning-systems.png rename to Projects/Plugins/Icons/plugin-learning-systems.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-project.png b/Projects/Plugins/Icons/plugin-project.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-project.png rename to Projects/Plugins/Icons/plugin-project.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-super-scripts.png b/Projects/Plugins/Icons/plugin-super-scripts.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-super-scripts.png rename to Projects/Plugins/Icons/plugin-super-scripts.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-trading-engines.png b/Projects/Plugins/Icons/plugin-trading-engines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-trading-engines.png rename to Projects/Plugins/Icons/plugin-trading-engines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-trading-mines.png b/Projects/Plugins/Icons/plugin-trading-mines.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-trading-mines.png rename to Projects/Plugins/Icons/plugin-trading-mines.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-trading-systems.png b/Projects/Plugins/Icons/plugin-trading-systems.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-trading-systems.png rename to Projects/Plugins/Icons/plugin-trading-systems.png diff --git a/Projects/Foundations/Icons/Plugins/plugin-tutorials.png b/Projects/Plugins/Icons/plugin-tutorials.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugin-tutorials.png rename to Projects/Plugins/Icons/plugin-tutorials.png diff --git a/Projects/Foundations/Icons/Plugins/plugins.png b/Projects/Plugins/Icons/plugins-project.png similarity index 100% rename from Projects/Foundations/Icons/Plugins/plugins.png rename to Projects/Plugins/Icons/plugins-project.png diff --git a/Projects/Plugins/Icons/plugins.png b/Projects/Plugins/Icons/plugins.png new file mode 100644 index 0000000000000000000000000000000000000000..09d71a2968da53a11a4f3ebddd1e549e9975de0a GIT binary patch literal 9720 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 U3k?{Ke_!m{6@$OaFWX1`H~7(pU;qFB literal 0 HcmV?d00001 diff --git a/Projects/Foundations/SA/Utilities/Plugins.js b/Projects/Plugins/SA/Utilities/Plugins.js similarity index 94% rename from Projects/Foundations/SA/Utilities/Plugins.js rename to Projects/Plugins/SA/Utilities/Plugins.js index 7998febf6..fb5f66c96 100644 --- a/Projects/Foundations/SA/Utilities/Plugins.js +++ b/Projects/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/Plugins/Schemas/App-Schema/plugin-api-maps.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-api-maps.json rename to Projects/Plugins/Schemas/App-Schema/plugin-api-maps.json index 9274fb772..207cde2d5 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-api-maps.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-api-maps.json @@ -17,7 +17,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/Plugins/Schemas/App-Schema/plugin-data-mines.json similarity index 77% rename from Projects/Foundations/Schemas/App-Schema/plugin-data-mines.json rename to Projects/Plugins/Schemas/App-Schema/plugin-data-mines.json index 8599d57c8..b84e59308 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-data-mines.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-data-mines.json @@ -7,7 +7,9 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Data Mine", + "iconPathOn": "data-mine", + "iconPathOff": "data-mine", + "iconProject": "Data-Mining", "actionFunction": "payload.executeAction" }, { @@ -17,7 +19,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "addLeftIcons": true, @@ -31,7 +34,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/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/Plugins/Schemas/App-Schema/plugin-file-position.json index 98fd30600..982ed5de5 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-file-position.json +++ b/Projects/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/Plugins/Schemas/App-Schema/plugin-file.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-file.json rename to Projects/Plugins/Schemas/App-Schema/plugin-file.json index 37dc941cf..aefb2ba77 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-file.json +++ b/Projects/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", @@ -41,7 +42,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/Plugins/Schemas/App-Schema/plugin-learning-engines.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-learning-engines.json rename to Projects/Plugins/Schemas/App-Schema/plugin-learning-engines.json index 989fdfef0..e436c13f6 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-learning-engines.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-learning-engines.json @@ -17,7 +17,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/Plugins/Schemas/App-Schema/plugin-learning-mines.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-learning-mines.json rename to Projects/Plugins/Schemas/App-Schema/plugin-learning-mines.json index 25c3a4891..1fbe71833 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-learning-mines.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-learning-mines.json @@ -17,7 +17,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/Plugins/Schemas/App-Schema/plugin-learning-systems.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-learning-systems.json rename to Projects/Plugins/Schemas/App-Schema/plugin-learning-systems.json index 362412ab8..e73b6cd87 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-learning-systems.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-learning-systems.json @@ -17,7 +17,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/Plugins/Schemas/App-Schema/plugin-project.json similarity index 95% rename from Projects/Foundations/Schemas/App-Schema/plugin-project.json rename to Projects/Plugins/Schemas/App-Schema/plugin-project.json index e4aa17c5b..b4f39f5c6 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-project.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-project.json @@ -6,7 +6,8 @@ "actionFunction": "uiObject.configEditor.activate", "label": "Configure", "iconPathOn": "configuration", - "iconPathOff": "configuration" + "iconPathOff": "configuration", + "actionProject": "Foundations" }, { "action": "Add Missing Plugin Types", @@ -21,7 +22,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/Plugins/Schemas/App-Schema/plugin-trading-engines.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-trading-engines.json rename to Projects/Plugins/Schemas/App-Schema/plugin-trading-engines.json index d8814713c..5fdfd8ba8 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-trading-engines.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-trading-engines.json @@ -17,7 +17,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/Plugins/Schemas/App-Schema/plugin-trading-mines.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-trading-mines.json rename to Projects/Plugins/Schemas/App-Schema/plugin-trading-mines.json index 882c3a935..1cc96e5bf 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-trading-mines.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-trading-mines.json @@ -17,7 +17,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/Plugins/Schemas/App-Schema/plugin-trading-systems.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-trading-systems.json rename to Projects/Plugins/Schemas/App-Schema/plugin-trading-systems.json index 45a3c1f9c..b7b7489cc 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-trading-systems.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-trading-systems.json @@ -17,7 +17,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/Plugins/Schemas/App-Schema/plugin-tutorials.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugin-tutorials.json rename to Projects/Plugins/Schemas/App-Schema/plugin-tutorials.json index ba844f57f..f2338a322 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugin-tutorials.json +++ b/Projects/Plugins/Schemas/App-Schema/plugin-tutorials.json @@ -18,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/Plugins/Schemas/App-Schema/plugins-project.json b/Projects/Plugins/Schemas/App-Schema/plugins-project.json new file mode 100644 index 000000000..45226535f --- /dev/null +++ b/Projects/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": "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/Plugins/Schemas/App-Schema/plugins.json similarity index 91% rename from Projects/Foundations/Schemas/App-Schema/plugins.json rename to Projects/Plugins/Schemas/App-Schema/plugins.json index 3858fa98d..8f68f4ba4 100644 --- a/Projects/Foundations/Schemas/App-Schema/plugins.json +++ b/Projects/Plugins/Schemas/App-Schema/plugins.json @@ -17,7 +17,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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/Plugins/Schemas/Docs-Nodes/P/Plugins/plugins.json diff --git a/Projects/Plugins/UI/Function-Libraries/ActionSwitch.js b/Projects/Plugins/UI/Function-Libraries/ActionSwitch.js new file mode 100644 index 000000000..9698faf65 --- /dev/null +++ b/Projects/Plugins/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,98 @@ +function newPluginsActionSwitch() { + + 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.plugins.functionLibraries.pluginsFunctions.installAsPlugin(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Projects': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginProjects(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Types': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTypes(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Data Mines': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginDataMines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Trading Mines': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTradingMines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Trading Systems': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTradingSystems(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Trading Engines': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTradingEngines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Learning Mines': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginLearningMines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Learning Systems': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginLearningSystems(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Learning Engines': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginLearningEngines(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin Tutorials': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTutorials(action.node, action.rootNodes) + } + break + case 'Add Missing Plugin API Maps': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginApiMaps(action.node, action.rootNodes) + } + break + case 'Enable Saving With Workspace': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.enableSavingWithWorkspace(action.node, action.rootNodes) + } + break + case 'Disable Saving With Workspace': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.disableSavingWithWorkspace(action.node, action.rootNodes) + } + break + case 'Save Plugin': + { + UI.projects.plugins.functionLibraries.pluginsFunctions.savePlugin(action.node, action.rootNodes) + } + break + } + } +} diff --git a/Projects/Foundations/UI/Function-Libraries/PluginsFunctions.js b/Projects/Plugins/UI/Function-Libraries/PluginsFunctions.js similarity index 68% rename from Projects/Foundations/UI/Function-Libraries/PluginsFunctions.js rename to Projects/Plugins/UI/Function-Libraries/PluginsFunctions.js index 7e4db38a0..fcd4f38ab 100644 --- a/Projects/Foundations/UI/Function-Libraries/PluginsFunctions.js +++ b/Projects/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, 'Plugins') } } } } function addMissingPluginDataMines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Data-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Data-Mines', 'Data Mine') + UI.projects.plugins.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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine') + UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine', 'Foundations') } } function addMissingPluginTradingSystems(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System') + UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System', 'Foundations') } } function addMissingPluginTradingEngines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine') + UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine', 'Foundations') } } function addMissingPluginLearningMines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine') + UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine', 'Foundations') } } function addMissingPluginLearningSystems(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System') + UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System', 'Foundations') } } function addMissingPluginLearningEngines(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine') + UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine', 'Foundations') } } function addMissingPluginTutorials(node, rootNodes) { - let projectName = UI.projects.foundations.utilities.plugins.getProjectName(node) + let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Tutorials', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Tutorials', 'Tutorial') + UI.projects.plugins.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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'API-Maps', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.foundations.utilities.plugins.addMissingPluginFiles(node, fileNames, 'API-Maps', 'API Map') + UI.projects.plugins.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.plugins.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.plugins.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.plugins.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.plugins.utilities.plugins.savePluginFile(pluginFile) } } diff --git a/Projects/Foundations/UI/Utilities/Plugins.js b/Projects/Plugins/UI/Utilities/Plugins.js similarity index 97% rename from Projects/Foundations/UI/Utilities/Plugins.js rename to Projects/Plugins/UI/Utilities/Plugins.js index 70fb48ac1..e4242dc68 100644 --- a/Projects/Foundations/UI/Utilities/Plugins.js +++ b/Projects/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, 'Plugins') child.name = fileName child.config = JSON.stringify({ - project: node.project, + project: project, fileName: fileName, folderName: pluginFolder, nodeType: nodeType, diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 9982a1af8..fe6d9310c 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -96,11 +96,6 @@ "propertyName": "chartingSpaceFunctions", "functionName": "newFoundationsFunctionLibraryChartingSpaceFunctions" }, - { - "name": "Plugins Functions", - "propertyName": "pluginsFunctions", - "functionName": "newFoundationsFunctionLibraryPluginsFunctions" - }, { "name": "Workspace Functions", "propertyName": "workspaceFunctions", @@ -202,11 +197,6 @@ "name": "Status Bar", "propertyName": "statusBar", "functionName": "newFoundationsUtilitiesStatusBar" - }, - { - "name": "Plugins", - "propertyName": "plugins", - "functionName": "newFoundationsUtilitiesPlugins" } ], "spaces": [ @@ -764,7 +754,7 @@ ] }, "SA": { - "globals":[ + "globals": [ { "name": "Time Constants", "propertyName": "timeConstants", @@ -773,12 +763,6 @@ } ], "utilities": [ - { - "name": "Plugins", - "propertyName": "plugins", - "functionName": "newFoundationsUtilitiesPlugins", - "fileName": "Plugins.js" - }, { "name": "Miscellaneous Functions", "propertyName": "miscellaneousFunctions", @@ -806,7 +790,6 @@ ] }, "plugins": [ - "Data Mines", "Trading Mines", "Learning Mines", "Trading Systems", @@ -830,7 +813,7 @@ ] }, "TS": { - "botModules":[ + "botModules": [ { "name": "Single Market Sensor Bot", "propertyName": "singleMarketSensorBot", @@ -940,7 +923,41 @@ "folderName": "Sensor-Bot/Webhooks" } ] - } + }, + "plugins": [ + "Data Mines" + ] + }, + { + "name": "Plugins", + "propertyName": "plugins", + "UI": { + "functionLibraries": [ + { + "name": "Plugins Functions", + "propertyName": "pluginsFunctions", + "functionName": "newPluginsFunctionLibraryPluginsFunctions" + } + ], + "utilities": [ + { + "name": "Plugins", + "propertyName": "plugins", + "functionName": "newPluginsUtilitiesPlugins" + } + ] + }, + "SA": { + "utilities": [ + { + "name": "Plugins", + "propertyName": "plugins", + "functionName": "newPluginsUtilitiesPlugins", + "fileName": "Plugins.js" + } + ] + }, + "plugins": [] }, { "name": "Ethereum", @@ -1358,7 +1375,7 @@ "propertyName": "queriesUnfollowedUserProfiles", "functionName": "newSocialTradingModulesQueriesUnfollowedUserProfiles", "fileName": "Queries/UnfollowedUserProfiles.js" - }, + }, { "name": "Bot Profile Stats", "propertyName": "queriesBotProfileStats", @@ -1523,8 +1540,8 @@ ], "utilities": [] }, - "UI":{ - "modules":[ + "UI": { + "modules": [ { "name": "Web Sockets Client", "propertyName": "webSocketsClient", diff --git a/Projects/Social-Trading/NT/Modules/Bootstrap.js b/Projects/Social-Trading/NT/Modules/Bootstrap.js index f46a016b7..2ff290e35 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.plugins.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.plugins.utilities.plugins.getPluginFileContent( 'Governance', 'User-Profiles', pluginFileName From 3b90597478b004552abf1c3212468829386a8de9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 26 Sep 2021 15:31:59 +0200 Subject: [PATCH 10/42] Community Plugins Refactoring --- Platform/Client/githubServer.js | 8 +- Platform/Client/httpInterface.js | 4 +- .../Icons/plugin-api-maps.png | Bin .../Icons/plugin-data-mines.png | Bin .../Icons/plugin-file-position.png | Bin .../Icons/plugin-file.png | Bin .../Icons/plugin-learning-engines.png | Bin .../Icons/plugin-learning-mines.png | Bin .../Icons/plugin-learning-systems.png | Bin .../Icons/plugin-project.png | Bin .../Icons/plugin-super-scripts.png | Bin .../Icons/plugin-trading-engines.png | Bin .../Icons/plugin-trading-mines.png | Bin .../Icons/plugin-trading-systems.png | Bin .../Icons/plugin-tutorials.png | Bin .../Icons/plugins-project.png | Bin .../Icons/plugins.png | Bin .../SA/Utilities/Plugins.js | 0 .../Schemas/App-Schema/plugin-api-maps.json | 0 .../Schemas/App-Schema/plugin-data-mines.json | 0 .../App-Schema/plugin-file-position.json | 0 .../Schemas/App-Schema/plugin-file.json | 0 .../App-Schema/plugin-learning-engines.json | 0 .../App-Schema/plugin-learning-mines.json | 0 .../App-Schema/plugin-learning-systems.json | 0 .../Schemas/App-Schema/plugin-project.json | 0 .../App-Schema/plugin-trading-engines.json | 0 .../App-Schema/plugin-trading-mines.json | 0 .../App-Schema/plugin-trading-systems.json | 0 .../Schemas/App-Schema/plugin-tutorials.json | 0 .../Schemas/App-Schema/plugins-project.json | 2 +- .../Schemas/App-Schema/plugins.json | 0 .../Plugin-API-Maps/plugin-api-maps.json | 0 .../Plugin-Data-Mines/plugin-data-mines.json | 0 .../plugin-file-position.json | 0 .../P/Plugin/Plugin-File/plugin-file.json | 0 .../Plugin/Plugin-Project/plugin-project.json | 0 .../plugin-super-scripts.json | 0 .../plugin-trading-engines.json | 0 .../plugin-trading-mines.json | 0 .../plugin-trading-systems.json | 0 .../Plugin-Tutorials/plugin-tutorials.json | 0 .../Schemas/Docs-Nodes/P/Plugins/plugins.json | 0 .../UI/Function-Libraries/ActionSwitch.js | 98 ++++++++++++++++++ .../UI/Function-Libraries/PluginsFunctions.js | 64 ++++++------ .../UI/Utilities/Plugins.js | 2 +- .../Function-Libraries/UiObjectsFromNodes.js | 2 +- .../UI/Spaces/Design-Space/Workspace.js | 10 +- .../UI/Function-Libraries/PluginsFunctions.js | 30 +++--- .../UI/Function-Libraries/ActionSwitch.js | 98 ------------------ Projects/ProjectsSchema.json | 4 +- .../Social-Trading/NT/Modules/Bootstrap.js | 4 +- 52 files changed, 165 insertions(+), 161 deletions(-) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-api-maps.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-data-mines.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-file-position.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-file.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-learning-engines.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-learning-mines.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-learning-systems.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-project.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-super-scripts.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-trading-engines.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-trading-mines.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-trading-systems.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugin-tutorials.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugins-project.png (100%) rename Projects/{Plugins => Community-Plugins}/Icons/plugins.png (100%) rename Projects/{Plugins => Community-Plugins}/SA/Utilities/Plugins.js (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-api-maps.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-data-mines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-file-position.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-file.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-learning-engines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-learning-mines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-learning-systems.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-project.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-trading-engines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-trading-mines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-trading-systems.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugin-tutorials.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugins-project.json (95%) rename Projects/{Plugins => Community-Plugins}/Schemas/App-Schema/plugins.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-API-Maps/plugin-api-maps.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Data-Mines/plugin-data-mines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-File-Position/plugin-file-position.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-File/plugin-file.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Project/plugin-project.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Super-Scripts/plugin-super-scripts.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Engines/plugin-trading-engines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Mines/plugin-trading-mines.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Trading-Systems/plugin-trading-systems.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugin/Plugin-Tutorials/plugin-tutorials.json (100%) rename Projects/{Plugins => Community-Plugins}/Schemas/Docs-Nodes/P/Plugins/plugins.json (100%) create mode 100644 Projects/Community-Plugins/UI/Function-Libraries/ActionSwitch.js rename Projects/{Plugins => Community-Plugins}/UI/Function-Libraries/PluginsFunctions.js (66%) rename Projects/{Plugins => Community-Plugins}/UI/Utilities/Plugins.js (99%) delete mode 100644 Projects/Plugins/UI/Function-Libraries/ActionSwitch.js diff --git a/Platform/Client/githubServer.js b/Platform/Client/githubServer.js index 2a779b259..a91e86dc6 100644 --- a/Platform/Client/githubServer.js +++ b/Platform/Client/githubServer.js @@ -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.plugins.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.plugins.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.plugins.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.plugins.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 37e7234bd..65ca9de37 100644 --- a/Platform/Client/httpInterface.js +++ b/Platform/Client/httpInterface.js @@ -1383,7 +1383,7 @@ exports.newHttpInterface = function newHttpInterface() { let project = unescape(requestPath[2]) let folder = unescape(requestPath[3]) - let response = await SA.projects.plugins.utilities.plugins.getPluginFileNames( + let response = await SA.projects.communityPlugins.utilities.plugins.getPluginFileNames( project, folder ).catch(err => { @@ -1422,7 +1422,7 @@ exports.newHttpInterface = function newHttpInterface() { fileName = 'Superalgos-PL.json' } - await SA.projects.plugins.utilities.plugins.getPluginFileContent( + await SA.projects.communityPlugins.utilities.plugins.getPluginFileContent( project, folder, fileName diff --git a/Projects/Plugins/Icons/plugin-api-maps.png b/Projects/Community-Plugins/Icons/plugin-api-maps.png similarity index 100% rename from Projects/Plugins/Icons/plugin-api-maps.png rename to Projects/Community-Plugins/Icons/plugin-api-maps.png diff --git a/Projects/Plugins/Icons/plugin-data-mines.png b/Projects/Community-Plugins/Icons/plugin-data-mines.png similarity index 100% rename from Projects/Plugins/Icons/plugin-data-mines.png rename to Projects/Community-Plugins/Icons/plugin-data-mines.png diff --git a/Projects/Plugins/Icons/plugin-file-position.png b/Projects/Community-Plugins/Icons/plugin-file-position.png similarity index 100% rename from Projects/Plugins/Icons/plugin-file-position.png rename to Projects/Community-Plugins/Icons/plugin-file-position.png diff --git a/Projects/Plugins/Icons/plugin-file.png b/Projects/Community-Plugins/Icons/plugin-file.png similarity index 100% rename from Projects/Plugins/Icons/plugin-file.png rename to Projects/Community-Plugins/Icons/plugin-file.png diff --git a/Projects/Plugins/Icons/plugin-learning-engines.png b/Projects/Community-Plugins/Icons/plugin-learning-engines.png similarity index 100% rename from Projects/Plugins/Icons/plugin-learning-engines.png rename to Projects/Community-Plugins/Icons/plugin-learning-engines.png diff --git a/Projects/Plugins/Icons/plugin-learning-mines.png b/Projects/Community-Plugins/Icons/plugin-learning-mines.png similarity index 100% rename from Projects/Plugins/Icons/plugin-learning-mines.png rename to Projects/Community-Plugins/Icons/plugin-learning-mines.png diff --git a/Projects/Plugins/Icons/plugin-learning-systems.png b/Projects/Community-Plugins/Icons/plugin-learning-systems.png similarity index 100% rename from Projects/Plugins/Icons/plugin-learning-systems.png rename to Projects/Community-Plugins/Icons/plugin-learning-systems.png diff --git a/Projects/Plugins/Icons/plugin-project.png b/Projects/Community-Plugins/Icons/plugin-project.png similarity index 100% rename from Projects/Plugins/Icons/plugin-project.png rename to Projects/Community-Plugins/Icons/plugin-project.png diff --git a/Projects/Plugins/Icons/plugin-super-scripts.png b/Projects/Community-Plugins/Icons/plugin-super-scripts.png similarity index 100% rename from Projects/Plugins/Icons/plugin-super-scripts.png rename to Projects/Community-Plugins/Icons/plugin-super-scripts.png diff --git a/Projects/Plugins/Icons/plugin-trading-engines.png b/Projects/Community-Plugins/Icons/plugin-trading-engines.png similarity index 100% rename from Projects/Plugins/Icons/plugin-trading-engines.png rename to Projects/Community-Plugins/Icons/plugin-trading-engines.png diff --git a/Projects/Plugins/Icons/plugin-trading-mines.png b/Projects/Community-Plugins/Icons/plugin-trading-mines.png similarity index 100% rename from Projects/Plugins/Icons/plugin-trading-mines.png rename to Projects/Community-Plugins/Icons/plugin-trading-mines.png diff --git a/Projects/Plugins/Icons/plugin-trading-systems.png b/Projects/Community-Plugins/Icons/plugin-trading-systems.png similarity index 100% rename from Projects/Plugins/Icons/plugin-trading-systems.png rename to Projects/Community-Plugins/Icons/plugin-trading-systems.png diff --git a/Projects/Plugins/Icons/plugin-tutorials.png b/Projects/Community-Plugins/Icons/plugin-tutorials.png similarity index 100% rename from Projects/Plugins/Icons/plugin-tutorials.png rename to Projects/Community-Plugins/Icons/plugin-tutorials.png diff --git a/Projects/Plugins/Icons/plugins-project.png b/Projects/Community-Plugins/Icons/plugins-project.png similarity index 100% rename from Projects/Plugins/Icons/plugins-project.png rename to Projects/Community-Plugins/Icons/plugins-project.png diff --git a/Projects/Plugins/Icons/plugins.png b/Projects/Community-Plugins/Icons/plugins.png similarity index 100% rename from Projects/Plugins/Icons/plugins.png rename to Projects/Community-Plugins/Icons/plugins.png diff --git a/Projects/Plugins/SA/Utilities/Plugins.js b/Projects/Community-Plugins/SA/Utilities/Plugins.js similarity index 100% rename from Projects/Plugins/SA/Utilities/Plugins.js rename to Projects/Community-Plugins/SA/Utilities/Plugins.js diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-api-maps.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-api-maps.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-api-maps.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-api-maps.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-data-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-data-mines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-file-position.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file-position.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-file-position.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-file-position.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-file.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-file.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-learning-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-learning-engines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-learning-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-learning-mines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-learning-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-learning-systems.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-project.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-project.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-trading-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-trading-engines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-trading-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-trading-mines.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-trading-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-trading-systems.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugin-tutorials.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-tutorials.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugin-tutorials.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugin-tutorials.json diff --git a/Projects/Plugins/Schemas/App-Schema/plugins-project.json b/Projects/Community-Plugins/Schemas/App-Schema/plugins-project.json similarity index 95% rename from Projects/Plugins/Schemas/App-Schema/plugins-project.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugins-project.json index 45226535f..f172a7eca 100644 --- a/Projects/Plugins/Schemas/App-Schema/plugins-project.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugins-project.json @@ -12,7 +12,7 @@ "action": "Add UI Object", "label": "Add Plugins", "relatedUiObject": "Plugins", - "relatedUiObjectProject": "Plugins", + "relatedUiObjectProject": "Community-Plugins", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, diff --git a/Projects/Plugins/Schemas/App-Schema/plugins.json b/Projects/Community-Plugins/Schemas/App-Schema/plugins.json similarity index 100% rename from Projects/Plugins/Schemas/App-Schema/plugins.json rename to Projects/Community-Plugins/Schemas/App-Schema/plugins.json diff --git a/Projects/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/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/Plugins/Schemas/Docs-Nodes/P/Plugins/plugins.json b/Projects/Community-Plugins/Schemas/Docs-Nodes/P/Plugins/plugins.json similarity index 100% rename from Projects/Plugins/Schemas/Docs-Nodes/P/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/Plugins/UI/Function-Libraries/PluginsFunctions.js b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js similarity index 66% rename from Projects/Plugins/UI/Function-Libraries/PluginsFunctions.js rename to Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js index fcd4f38ab..4fbc21ab0 100644 --- a/Projects/Plugins/UI/Function-Libraries/PluginsFunctions.js +++ b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js @@ -43,14 +43,14 @@ function newPluginsFunctionLibraryPluginsFunctions() { 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, 'Plugins') + UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, pluginType, undefined, 'Community-Plugins') } } } } function addMissingPluginDataMines(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Data-Mines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Data-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Data-Mines', 'Data Mine', 'Data-Mining') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Data-Mines', 'Data Mine', 'Data-Mining') } } function addMissingPluginTradingMines(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Mines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine', 'Foundations') } } function addMissingPluginTradingSystems(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Systems', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System', 'Foundations') } } function addMissingPluginTradingEngines(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Engines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine', 'Foundations') } } function addMissingPluginLearningMines(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Mines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine', 'Foundations') } } function addMissingPluginLearningSystems(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Systems', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System', 'Foundations') } } function addMissingPluginLearningEngines(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Engines', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine', 'Foundations') } } function addMissingPluginTutorials(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'Tutorials', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Tutorials', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Tutorials', 'Tutorial', 'Education') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Tutorials', 'Tutorial', 'Education') } } function addMissingPluginApiMaps(node, rootNodes) { - let projectName = UI.projects.plugins.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 newPluginsFunctionLibraryPluginsFunctions() { } } - UI.projects.plugins.utilities.plugins.getPluginFileNames(projectName, 'API-Maps', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'API-Maps', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'API-Maps', 'API Map', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'API-Maps', 'API Map', 'Foundations') } } @@ -204,16 +204,16 @@ function newPluginsFunctionLibraryPluginsFunctions() { } function savePlugin(node, rootNodes) { - UI.projects.plugins.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.plugins.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.plugins.utilities.plugins.addMissingPluginFile(pluginFolderNode, node.name, pluginFolderName, node.type, node.project, 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 newPluginsFunctionLibraryPluginsFunctions() { return } - UI.projects.plugins.utilities.plugins.savePluginFile(pluginFile) + UI.projects.communityPlugins.utilities.plugins.savePluginFile(pluginFile) } } diff --git a/Projects/Plugins/UI/Utilities/Plugins.js b/Projects/Community-Plugins/UI/Utilities/Plugins.js similarity index 99% rename from Projects/Plugins/UI/Utilities/Plugins.js rename to Projects/Community-Plugins/UI/Utilities/Plugins.js index e4242dc68..aeea2de25 100644 --- a/Projects/Plugins/UI/Utilities/Plugins.js +++ b/Projects/Community-Plugins/UI/Utilities/Plugins.js @@ -34,7 +34,7 @@ function newPluginsUtilitiesPlugins() { 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, 'Plugins') + let child = UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(node, 'Plugin File', undefined, 'Community-Plugins') child.name = fileName child.config = JSON.stringify({ project: project, diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index 1ee871873..aafff5ed8 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -466,7 +466,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { node.type === 'Plugin Data Mines' || node.type === 'Plugin API Maps' ) { - node.project = "Plugins" + node.project = "Community-Plugins" } /* diff --git a/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js b/Projects/Foundations/UI/Spaces/Design-Space/Workspace.js index da55b395d..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.plugins.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/Governance/UI/Function-Libraries/PluginsFunctions.js b/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js index c563f066f..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.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'User-Profiles', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'User-Profiles', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'User-Profiles', 'User Profile', 'Governance') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'User-Profiles', 'User Profile', 'Governance') } } function addMissingPluginPools(node, rootNodes) { - let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Pools', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Pools', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Pools', 'Pools', 'Governance') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Pools', 'Pools', 'Governance') } } function addMissingPluginAssets(node, rootNodes) { - let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Assets', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Assets', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Assets', 'Assets', 'Governance') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Assets', 'Assets', 'Governance') } } function addMissingPluginFeatures(node, rootNodes) { - let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Features', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Features', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Features', 'Features', 'Governance') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Features', 'Features', 'Governance') } } function addMissingPluginPositionss(node, rootNodes) { - let projectName = UI.projects.plugins.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.plugins.utilities.plugins.getPluginFileNames(projectName, 'Positions', onNamesArrived) + UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Positions', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.plugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Positions', 'Positions', 'Governance') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Positions', 'Positions', 'Governance') } } } diff --git a/Projects/Plugins/UI/Function-Libraries/ActionSwitch.js b/Projects/Plugins/UI/Function-Libraries/ActionSwitch.js deleted file mode 100644 index 9698faf65..000000000 --- a/Projects/Plugins/UI/Function-Libraries/ActionSwitch.js +++ /dev/null @@ -1,98 +0,0 @@ -function newPluginsActionSwitch() { - - 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.plugins.functionLibraries.pluginsFunctions.installAsPlugin(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Projects': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginProjects(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Types': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTypes(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Data Mines': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginDataMines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Trading Mines': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTradingMines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Trading Systems': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTradingSystems(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Trading Engines': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTradingEngines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Learning Mines': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginLearningMines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Learning Systems': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginLearningSystems(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Learning Engines': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginLearningEngines(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin Tutorials': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginTutorials(action.node, action.rootNodes) - } - break - case 'Add Missing Plugin API Maps': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.addMissingPluginApiMaps(action.node, action.rootNodes) - } - break - case 'Enable Saving With Workspace': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.enableSavingWithWorkspace(action.node, action.rootNodes) - } - break - case 'Disable Saving With Workspace': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.disableSavingWithWorkspace(action.node, action.rootNodes) - } - break - case 'Save Plugin': - { - UI.projects.plugins.functionLibraries.pluginsFunctions.savePlugin(action.node, action.rootNodes) - } - break - } - } -} diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index fe6d9310c..989ec21b4 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -929,8 +929,8 @@ ] }, { - "name": "Plugins", - "propertyName": "plugins", + "name": "Community-Plugins", + "propertyName": "communityPlugins", "UI": { "functionLibraries": [ { diff --git a/Projects/Social-Trading/NT/Modules/Bootstrap.js b/Projects/Social-Trading/NT/Modules/Bootstrap.js index 2ff290e35..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.plugins.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.plugins.utilities.plugins.getPluginFileContent( + let pluginFileContent = await SA.projects.communityPlugins.utilities.plugins.getPluginFileContent( 'Governance', 'User-Profiles', pluginFileName From af856335afb7eb33db97905b0f9f7b206e4ede9d Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 12:02:52 +0200 Subject: [PATCH 11/42] Fix to Install Market procedure, to allow tasks belonging to different projects --- .../UI/Function-Libraries/TaskFunctions.js | 13 ++++++++----- Projects/ProjectsSchema.json | 7 +++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js index 0b6e6b84a..178194514 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/ProjectsSchema.json b/Projects/ProjectsSchema.json index 989ec21b4..ad82ce894 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -798,6 +798,10 @@ "Learning Engines", "Tutorials", "API Maps" + ], + "tasks": [ + "Learning Tasks", + "Trading Tasks" ] }, { @@ -926,6 +930,9 @@ }, "plugins": [ "Data Mines" + ], + "tasks": [ + "Data Tasks" ] }, { From 1c5e2b68f41d0e104313ac1c4eea252602743530 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 13:37:24 +0200 Subject: [PATCH 12/42] Algorithmic-Trading project spinned out from Foundations --- .../Low-Frequency-Trading/APIs/ExchangeAPI.js | 2 +- .../Low-Frequency-Trading/Announcements.js | 2 +- .../OrdersCalculations.js | 2 +- .../OrdersSimulations.js | 2 +- .../Low-Frequency-Trading/Snapshots.js | 2 +- .../Low-Frequency-Trading/TradingEngine.js | 2 +- .../Low-Frequency-Trading/TradingEpisode.js | 2 +- .../Low-Frequency-Trading/TradingExecution.js | 4 +- .../Low-Frequency-Trading/TradingOrders.js | 10 +- .../Low-Frequency-Trading/TradingOutput.js | 4 +- .../Low-Frequency-Trading/TradingPosition.js | 2 +- .../Low-Frequency-Trading/TradingProcess.js | 6 +- .../Low-Frequency-Trading/TradingRecords.js | 2 +- .../TradingSimulation.js | 8 +- .../Low-Frequency-Trading/TradingStages.js | 14 +- .../Low-Frequency-Trading/TradingStrategy.js | 2 +- .../Low-Frequency-Trading/TradingSystem.js | 4 +- .../Trading-Bot/SingleMarketTradingBot.js | 6 +- .../Bot-Modules/Trading-Bot/TradingSession.js | 2 +- .../TradingSessionFunctions.js | 2 +- Projects/ProjectsSchema.json | 304 +++++++++--------- 21 files changed, 200 insertions(+), 184 deletions(-) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/APIs/ExchangeAPI.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js (98%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Snapshots.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js (97%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js (94%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingPosition.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js (98%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingRecords.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js (98%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/TS/Bot-Modules/Trading-Bot/TradingSession.js (99%) rename Projects/{Foundations => Algorithmic-Trading}/UI/Function-Libraries/TradingSessionFunctions.js (99%) 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/Announcements.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js similarity index 98% rename from Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js rename to Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js index d0e5821a3..e04ef5d50 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js @@ -1,4 +1,4 @@ -exports.newFoundationsBotModulesAnnouncements = function (processIndex) { +exports.newAlgorithmicTradingBotModulesAnnouncements = function (processIndex) { const MODULE_NAME = 'Announcements' 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 97% 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..2080c3a90 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.foundations.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..c540e6cf7 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,8 +16,8 @@ exports.newFoundationsBotModulesTradingOrders = function (processIndex) { let tradingSystem let sessionParameters - let exchangeAPIModuleObject = TS.projects.foundations.botModules.exchangeAPI.newFoundationsBotModulesExchangeAPI(processIndex) - let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newFoundationsBotModulesAnnouncements(processIndex) + let exchangeAPIModuleObject = TS.projects.foundations.botModules.exchangeAPI.newAlgorithmicTradingBotModulesExchangeAPI(processIndex) + let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newAlgorithmicTradingBotModulesAnnouncements(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.foundations.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.foundations.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 94% 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..4ccc44b48 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.foundations.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..f70639b34 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.foundations.botModules.tradingEngine.newAlgorithmicTradingBotModulesTradingEngine(processIndex) + let tradingOutputModuleObject = TS.projects.foundations.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 99% 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..5944e9683 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.foundations.botModules.tradingRecords.newAlgorithmicTradingBotModulesTradingRecords(processIndex) tradingRecordsModuleObject.initialize(outputDatasetsMap) - let tradingSystemModuleObject = TS.projects.foundations.botModules.tradingSystem.newFoundationsBotModulesTradingSystem(processIndex) + let tradingSystemModuleObject = TS.projects.foundations.botModules.tradingSystem.newAlgorithmicTradingBotModulesTradingSystem(processIndex) tradingSystemModuleObject.initialize() - let tradingEpisodeModuleObject = TS.projects.foundations.botModules.tradingEpisode.newFoundationsBotModulesTradingEpisode(processIndex) + let tradingEpisodeModuleObject = TS.projects.foundations.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 99% 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..9c3895ef0 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 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 tradingStrategyModuleObject = TS.projects.foundations.botModules.tradingStrategy.newAlgorithmicTradingBotModulesTradingStrategy(processIndex) + let tradingPositionModuleObject = TS.projects.foundations.botModules.tradingPosition.newAlgorithmicTradingBotModulesTradingPosition(processIndex) + let tradingExecutionModuleObject = TS.projects.foundations.botModules.tradingExecution.newAlgorithmicTradingBotModulesTradingExecution(processIndex) + let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newAlgorithmicTradingBotModulesAnnouncements(processIndex) + let snapshotsModuleObject = TS.projects.foundations.botModules.snapshots.newAlgorithmicTradingBotModulesSnapshots(processIndex) + let tradingEpisodeModuleObject = TS.projects.foundations.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 99% 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..3367d00b6 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.foundations.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..6b13be19a 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.foundations.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.foundations.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/Foundations/UI/Function-Libraries/TradingSessionFunctions.js b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js similarity index 99% rename from Projects/Foundations/UI/Function-Libraries/TradingSessionFunctions.js rename to Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js index 65ab97da8..078044e5d 100644 --- a/Projects/Foundations/UI/Function-Libraries/TradingSessionFunctions.js +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js @@ -1,4 +1,4 @@ -function newFoundationsFunctionLibraryTradingSessionFunctions() { +function newAlgorithmicTradingFunctionLibraryTradingSessionFunctions() { let thisObject = { syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd, runSession: runSession, diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index ad82ce894..64528cb9e 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -71,11 +71,6 @@ "propertyName": "taskFunctions", "functionName": "newFoundationsFunctionLibraryTaskFunctions" }, - { - "name": "Trading Session Functions", - "propertyName": "tradingSessionFunctions", - "functionName": "newFoundationsFunctionLibraryTradingSessionFunctions" - }, { "name": "Learning Session Functions", "propertyName": "learningSessionFunctions", @@ -509,21 +504,6 @@ } ], "botModules": [ - { - "name": "Single Market Trading Bot", - "propertyName": "singleMarketTradingBot", - "functionName": "newFoundationsBotModulesSingleMarketTradingBot", - "fileName": "SingleMarketTradingBot.js", - "folderName": "Trading-Bot", - "botType": "Trading Bot" - }, - { - "name": "Trading Session", - "propertyName": "tradingSession", - "functionName": "newFoundationsBotModulesTradingSession", - "fileName": "TradingSession.js", - "folderName": "Trading-Bot" - }, { "name": "Social Bots", "propertyName": "socialBots", @@ -552,125 +532,6 @@ "fileName": "SlackBot.js", "folderName": "Trading-Bot/Announcements" }, - { - "name": "Trading Process", - "propertyName": "tradingProcess", - "functionName": "newFoundationsBotModulesTradingProcess", - "fileName": "TradingProcess.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Engine", - "propertyName": "tradingEngine", - "functionName": "newFoundationsBotModulesTradingEngine", - "fileName": "TradingEngine.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Output", - "propertyName": "tradingOutput", - "functionName": "newFoundationsBotModulesTradingOutput", - "fileName": "TradingOutput.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Simulation", - "propertyName": "tradingSimulation", - "functionName": "newFoundationsBotModulesTradingSimulation", - "fileName": "TradingSimulation.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Episode", - "propertyName": "tradingEpisode", - "functionName": "newFoundationsBotModulesTradingEpisode", - "fileName": "TradingEpisode.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Records", - "propertyName": "tradingRecords", - "functionName": "newFoundationsBotModulesTradingRecords", - "fileName": "TradingRecords.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading System", - "propertyName": "tradingSystem", - "functionName": "newFoundationsBotModulesTradingSystem", - "fileName": "TradingSystem.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Stages", - "propertyName": "tradingStages", - "functionName": "newFoundationsBotModulesTradingStages", - "fileName": "TradingStages.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Strategy", - "propertyName": "tradingStrategy", - "functionName": "newFoundationsBotModulesTradingStrategy", - "fileName": "TradingStrategy.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Execution", - "propertyName": "tradingExecution", - "functionName": "newFoundationsBotModulesTradingExecution", - "fileName": "TradingExecution.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Position", - "propertyName": "tradingPosition", - "functionName": "newFoundationsBotModulesTradingPosition", - "fileName": "TradingPosition.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Announcements", - "propertyName": "announcements", - "functionName": "newFoundationsBotModulesAnnouncements", - "fileName": "Announcements.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Snapshots", - "propertyName": "snapshots", - "functionName": "newFoundationsBotModulesSnapshots", - "fileName": "Snapshots.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Orders", - "propertyName": "tradingOrders", - "functionName": "newFoundationsBotModulesTradingOrders", - "fileName": "TradingOrders.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Orders Simulations", - "propertyName": "ordersSimulations", - "functionName": "newFoundationsBotModulesOrdersSimulations", - "fileName": "OrdersSimulations.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Orders Calculations", - "propertyName": "ordersCalculations", - "functionName": "newFoundationsBotModulesOrdersCalculations", - "fileName": "OrdersCalculations.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Exchange API", - "propertyName": "exchangeAPI", - "functionName": "newFoundationsBotModulesExchangeAPI", - "fileName": "ExchangeAPI.js", - "folderName": "Trading-Bot/Low-Frequency-Trading/APIs" - }, { "name": "Single Market Learning Bot", "propertyName": "singleMarketLearningBot", @@ -790,18 +651,14 @@ ] }, "plugins": [ - "Trading Mines", "Learning Mines", - "Trading Systems", "Learning Systems", - "Trading Engines", "Learning Engines", "Tutorials", "API Maps" ], "tasks": [ - "Learning Tasks", - "Trading Tasks" + "Learning Tasks" ] }, { @@ -935,6 +792,165 @@ "Data Tasks" ] }, + { + "name": "Algorithmic-Trading", + "propertyName": "algorithmicTrading", + "UI": { + "functionLibraries": [ + { + "name": "Trading Session Functions", + "propertyName": "tradingSessionFunctions", + "functionName": "newAlgorithmicTradingFunctionLibraryTradingSessionFunctions" + } + ] + }, + "TS": { + "botModules": [ + { + "name": "Single Market Trading Bot", + "propertyName": "singleMarketTradingBot", + "functionName": "newAlgorithmicTradingBotModulesSingleMarketTradingBot", + "fileName": "SingleMarketTradingBot.js", + "folderName": "Trading-Bot", + "botType": "Trading Bot" + }, + { + "name": "Trading Session", + "propertyName": "tradingSession", + "functionName": "newAlgorithmicTradingBotModulesTradingSession", + "fileName": "TradingSession.js", + "folderName": "Trading-Bot" + }, + { + "name": "Trading Process", + "propertyName": "tradingProcess", + "functionName": "newAlgorithmicTradingBotModulesTradingProcess", + "fileName": "TradingProcess.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Engine", + "propertyName": "tradingEngine", + "functionName": "newAlgorithmicTradingBotModulesTradingEngine", + "fileName": "TradingEngine.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Output", + "propertyName": "tradingOutput", + "functionName": "newAlgorithmicTradingBotModulesTradingOutput", + "fileName": "TradingOutput.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Simulation", + "propertyName": "tradingSimulation", + "functionName": "newAlgorithmicTradingBotModulesTradingSimulation", + "fileName": "TradingSimulation.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Episode", + "propertyName": "tradingEpisode", + "functionName": "newAlgorithmicTradingBotModulesTradingEpisode", + "fileName": "TradingEpisode.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Records", + "propertyName": "tradingRecords", + "functionName": "newAlgorithmicTradingBotModulesTradingRecords", + "fileName": "TradingRecords.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading System", + "propertyName": "tradingSystem", + "functionName": "newAlgorithmicTradingBotModulesTradingSystem", + "fileName": "TradingSystem.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Stages", + "propertyName": "tradingStages", + "functionName": "newAlgorithmicTradingBotModulesTradingStages", + "fileName": "TradingStages.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Strategy", + "propertyName": "tradingStrategy", + "functionName": "newAlgorithmicTradingBotModulesTradingStrategy", + "fileName": "TradingStrategy.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Execution", + "propertyName": "tradingExecution", + "functionName": "newAlgorithmicTradingBotModulesTradingExecution", + "fileName": "TradingExecution.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Position", + "propertyName": "tradingPosition", + "functionName": "newAlgorithmicTradingBotModulesTradingPosition", + "fileName": "TradingPosition.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Announcements", + "propertyName": "announcements", + "functionName": "newAlgorithmicTradingBotModulesAnnouncements", + "fileName": "Announcements.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Snapshots", + "propertyName": "snapshots", + "functionName": "newAlgorithmicTradingBotModulesSnapshots", + "fileName": "Snapshots.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Orders", + "propertyName": "tradingOrders", + "functionName": "newAlgorithmicTradingBotModulesTradingOrders", + "fileName": "TradingOrders.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Orders Simulations", + "propertyName": "ordersSimulations", + "functionName": "newAlgorithmicTradingBotModulesOrdersSimulations", + "fileName": "OrdersSimulations.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Orders Calculations", + "propertyName": "ordersCalculations", + "functionName": "newAlgorithmicTradingBotModulesOrdersCalculations", + "fileName": "OrdersCalculations.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Exchange API", + "propertyName": "exchangeAPI", + "functionName": "newAlgorithmicTradingBotModulesExchangeAPI", + "fileName": "ExchangeAPI.js", + "folderName": "Trading-Bot/Low-Frequency-Trading/APIs" + } + ] + }, + "plugins": [ + "Trading Mines", + "Trading Systems", + "Trading Engines" + ], + "tasks": [ + "Trading Tasks" + ] + }, { "name": "Community-Plugins", "propertyName": "communityPlugins", From 704f1d69fa23ff4767b7d7c88cd220124425423d Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 13:55:42 +0200 Subject: [PATCH 13/42] TradingSessionFunctions refactored --- .../Trading-Bot/Low-Frequency-Trading/TradingProcess.js | 2 +- .../Trading-Bot/Low-Frequency-Trading/TradingSimulation.js | 6 +++--- .../TS/Bot-Modules/Trading-Bot/TradingSession.js | 4 ++-- .../TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js | 2 +- Projects/Foundations/UI/Function-Libraries/ActionSwitch.js | 4 ++-- .../Foundations/UI/Function-Libraries/UiObjectsFromNodes.js | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js index f70639b34..2d9155863 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js @@ -285,7 +285,7 @@ */ TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] checkIfSessionMustStop -> Backtesting Session Finished. Stopping the Session now. ') - TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Backtesting Session Finished.') + TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Backtesting Session Finished.') } } } diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js index 5944e9683..891254fb7 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js @@ -89,7 +89,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde meaning that the dataSet needs to be updated with more up-to-date data. */ console.log('DEBUGGING ..................', initialCandle, candles.length) - TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Data is not up-to-date enough. Please start the Data Mining Operation.') + TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Data is not up-to-date enough. Please start the Data Mining Operation.') TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Data is not up-to-date enough. Stopping the Session now. ') return @@ -253,7 +253,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde if (checkFinalDatetime() === false) { closeEpisode('Final Datetime Reached') breakLoop = true - TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Final Datetime Reached') + TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Final Datetime Reached') TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Final Datetime Reached. Stopping the Session now. ') return @@ -262,7 +262,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde if (checkMinimunAndMaximunBalance() === false) { closeEpisode('Min or Max Balance Reached') breakLoop = true - TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Min or Max Balance Reached') + TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Min or Max Balance Reached') TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Min or Max Balance Reached. Stopping the Session now. ') return diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js index d9d3586ee..0bdf53185 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js @@ -162,12 +162,12 @@ } function onSessionStop() { - TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Session Stopped From the User Interface.') + TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Session Stopped From the User Interface.') } function onSessionResume(message) { try { - if (TS.projects.foundations.functionLibraries.sessionFunctions.stopSession === undefined) { + if (TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession === undefined) { TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_INSTANCE_LOGGER_MODULE_OBJECT.write(MODULE_NAME, "[WARN] onSessionResume -> Event received to resume the Session that have never be ran before. ") return diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js index 5fe10448c..66a820998 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js +++ b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js @@ -30,7 +30,7 @@ exports.newFoundationsBotModulesTelegramBot = function (processIndex) { '• Use /stop to stop the session.\n' + '• Use /help to receive this help message.\n\n' + 'Additional commands can be configured using the Social Bot Command node.')) - thisObject.telegramBot.command('stop', (ctx) => TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'by command from Telegram.')) + thisObject.telegramBot.command('stop', (ctx) => TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'by command from Telegram.')) /* Set up additional commands for each Social Bot Command node */ if(commands !== undefined) { diff --git a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 480c3ade0..e91360bf2 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -580,12 +580,12 @@ function newFoundationsActionSwitch() { break case 'Run Trading Session': { - UI.projects.foundations.functionLibraries.tradingSessionFunctions.runSession(action.node, false, action.callBackFunction) + UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.runSession(action.node, false, action.callBackFunction) } break case 'Resume Trading Session': { - UI.projects.foundations.functionLibraries.tradingSessionFunctions.runSession(action.node, true, action.callBackFunction) + UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.runSession(action.node, true, action.callBackFunction) } break case 'Stop Trading Session': diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index aafff5ed8..0eafc7a19 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -267,7 +267,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 } @@ -275,7 +275,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.algorithmicTrading.functionLibraries.tradingSessionFunctions.syncronizeSessionWithBackEnd(node) } learningSessionsFoundAtWorkspace = undefined } From 8c2d2d762f28693fbe2b66d952d0b8bf65d85d41 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 14:25:28 +0200 Subject: [PATCH 14/42] All TS refactorings done --- .../Low-Frequency-Trading/TradingExecution.js | 2 +- .../Low-Frequency-Trading/TradingOrders.js | 8 ++++---- .../Low-Frequency-Trading/TradingOutput.js | 2 +- .../Low-Frequency-Trading/TradingProcess.js | 4 ++-- .../Low-Frequency-Trading/TradingSimulation.js | 6 +++--- .../Low-Frequency-Trading/TradingStages.js | 12 ++++++------ .../Low-Frequency-Trading/TradingSystem.js | 2 +- .../Trading-Bot/SingleMarketTradingBot.js | 4 ++-- .../Trading-Bot/Announcements}/Announcements.js | 2 +- Projects/ProjectsSchema.json | 14 +++++++------- 10 files changed, 28 insertions(+), 28 deletions(-) rename Projects/{Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading => Foundations/TS/Bot-Modules/Trading-Bot/Announcements}/Announcements.js (98%) diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js index 2080c3a90..11cba8cd6 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingExecution.js @@ -16,7 +16,7 @@ exports.newAlgorithmicTradingBotModulesTradingExecution = function (processIndex let tradingSystem let sessionParameters - let tradingOrdersModuleObject = TS.projects.foundations.botModules.tradingOrders.newAlgorithmicTradingBotModulesTradingOrders(processIndex) + let tradingOrdersModuleObject = TS.projects.algorithmicTrading.botModules.tradingOrders.newAlgorithmicTradingBotModulesTradingOrders(processIndex) return thisObject diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js index c540e6cf7..a821d7440 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOrders.js @@ -16,8 +16,8 @@ exports.newAlgorithmicTradingBotModulesTradingOrders = function (processIndex) { let tradingSystem let sessionParameters - let exchangeAPIModuleObject = TS.projects.foundations.botModules.exchangeAPI.newAlgorithmicTradingBotModulesExchangeAPI(processIndex) - let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newAlgorithmicTradingBotModulesAnnouncements(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.newAlgorithmicTradingBotModulesTradingOrders = function (processIndex) { let previousBaseAssetFeesPaid = tradingEngineOrder.orderBaseAsset.feesPaid.value let previousQuotedAssetFeesPaid = tradingEngineOrder.orderQuotedAsset.feesPaid.value - let ordersSimulationsModuleObject = TS.projects.foundations.botModules.ordersSimulations.newAlgorithmicTradingBotModulesOrdersSimulations(processIndex) + let ordersSimulationsModuleObject = TS.projects.algorithmicTrading.botModules.ordersSimulations.newAlgorithmicTradingBotModulesOrdersSimulations(processIndex) ordersSimulationsModuleObject.initialize() ordersSimulationsModuleObject.actualSizeSimulation(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, applyFeePercentage) @@ -874,7 +874,7 @@ exports.newAlgorithmicTradingBotModulesTradingOrders = function (processIndex) { let previousBaseAssetFeesPaid = tradingEngineOrder.orderBaseAsset.feesPaid.value let previousQuotedAssetFeesPaid = tradingEngineOrder.orderQuotedAsset.feesPaid.value - let ordersCalculationsModuleObject = TS.projects.foundations.botModules.ordersCalculations.newAlgorithmicTradingBotModulesOrdersCalculations(processIndex) + let ordersCalculationsModuleObject = TS.projects.algorithmicTrading.botModules.ordersCalculations.newAlgorithmicTradingBotModulesOrdersCalculations(processIndex) ordersCalculationsModuleObject.initialize() await ordersCalculationsModuleObject.actualSizeCalculation(tradingEngineStage, tradingSystemOrder, tradingEngineOrder, order, applyFeePercentage) diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js index 4ccc44b48..c54869742 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingOutput.js @@ -29,7 +29,7 @@ exports.newAlgorithmicTradingBotModulesTradingOutput = function (processIndex) { } /* Preparing everything for the Simulation */ - let tradingSimulationModuleObject = TS.projects.foundations.botModules.tradingSimulation.newAlgorithmicTradingBotModulesTradingSimulation(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/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js index 2d9155863..ec5a2c681 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js @@ -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.newAlgorithmicTradingBotModulesTradingEngine(processIndex) - let tradingOutputModuleObject = TS.projects.foundations.botModules.tradingOutput.newAlgorithmicTradingBotModulesTradingOutput(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/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js index 891254fb7..84a4b1635 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js @@ -34,13 +34,13 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde '[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.newAlgorithmicTradingBotModulesTradingRecords(processIndex) + let tradingRecordsModuleObject = TS.projects.algorithmicTrading.botModules.tradingRecords.newAlgorithmicTradingBotModulesTradingRecords(processIndex) tradingRecordsModuleObject.initialize(outputDatasetsMap) - let tradingSystemModuleObject = TS.projects.foundations.botModules.tradingSystem.newAlgorithmicTradingBotModulesTradingSystem(processIndex) + let tradingSystemModuleObject = TS.projects.algorithmicTrading.botModules.tradingSystem.newAlgorithmicTradingBotModulesTradingSystem(processIndex) tradingSystemModuleObject.initialize() - let tradingEpisodeModuleObject = TS.projects.foundations.botModules.tradingEpisode.newAlgorithmicTradingBotModulesTradingEpisode(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/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js index 9c3895ef0..1a3e794f2 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js @@ -21,12 +21,12 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) { finalize: finalize } - let tradingStrategyModuleObject = TS.projects.foundations.botModules.tradingStrategy.newAlgorithmicTradingBotModulesTradingStrategy(processIndex) - let tradingPositionModuleObject = TS.projects.foundations.botModules.tradingPosition.newAlgorithmicTradingBotModulesTradingPosition(processIndex) - let tradingExecutionModuleObject = TS.projects.foundations.botModules.tradingExecution.newAlgorithmicTradingBotModulesTradingExecution(processIndex) - let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newAlgorithmicTradingBotModulesAnnouncements(processIndex) - let snapshotsModuleObject = TS.projects.foundations.botModules.snapshots.newAlgorithmicTradingBotModulesSnapshots(processIndex) - let tradingEpisodeModuleObject = TS.projects.foundations.botModules.tradingEpisode.newAlgorithmicTradingBotModulesTradingEpisode(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.algorithmicTrading.botModules.announcements.newFoundationsBotModulesAnnouncements(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/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js index 3367d00b6..4f3d5691a 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSystem.js @@ -26,7 +26,7 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) { let sessionParameters let dynamicIndicators - let tradingStagesModuleObject = TS.projects.foundations.botModules.tradingStages.newAlgorithmicTradingBotModulesTradingStages(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/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js index 6b13be19a..23aa53e3c 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/SingleMarketTradingBot.js @@ -2,7 +2,7 @@ const MODULE_NAME = "Single Market Trading Bot"; - let session = TS.projects.foundations.botModules.tradingSession.newAlgorithmicTradingBotModulesTradingSession(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.newAlgorithmicTradingBotModulesTradingProcess(processIndex); + processFramework = TS.projects.algorithmicTrading.botModules.tradingProcess.newAlgorithmicTradingBotModulesTradingProcess(processIndex); startProcessFramework(); break; } diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/Announcements.js similarity index 98% rename from Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js rename to Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/Announcements.js index e04ef5d50..d0e5821a3 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/Announcements.js +++ b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/Announcements.js @@ -1,4 +1,4 @@ -exports.newAlgorithmicTradingBotModulesAnnouncements = function (processIndex) { +exports.newFoundationsBotModulesAnnouncements = function (processIndex) { const MODULE_NAME = 'Announcements' diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 64528cb9e..c15a8f1dd 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -504,6 +504,13 @@ } ], "botModules": [ + { + "name": "Announcements", + "propertyName": "announcements", + "functionName": "newFoundationsBotModulesAnnouncements", + "fileName": "Announcements.js", + "folderName": "Trading-Bot/Announcements" + }, { "name": "Social Bots", "propertyName": "socialBots", @@ -898,13 +905,6 @@ "fileName": "TradingPosition.js", "folderName": "Trading-Bot/Low-Frequency-Trading" }, - { - "name": "Announcements", - "propertyName": "announcements", - "functionName": "newAlgorithmicTradingBotModulesAnnouncements", - "fileName": "Announcements.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, { "name": "Snapshots", "propertyName": "snapshots", From d9e2b26e983319ae97bad12cf32a310fe0b51967 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 17:08:18 +0200 Subject: [PATCH 15/42] App Schemas and Icons Moved to new Project Algorithmic-Trading --- .../Icons/Trading/trading-bot.png | Bin .../Icons/Trading/trading-mine.png | Bin .../Icons/algorithmic-trading-project.png | Bin 0 -> 11409 bytes .../algorithmic-trading-project.json | 47 ++++++++++++++++++ .../Schemas/App-Schema/trading-bot.json | 24 ++++++--- .../Schemas/App-Schema/trading-mine.json | 21 +++++--- .../Schemas/App-Schema/data-mine.json | 1 + .../App-Schema/data-mining-project.json | 4 +- .../Spaces/Floating-Space/CircularMenuItem.js | 4 ++ 9 files changed, 86 insertions(+), 15 deletions(-) rename Projects/{Foundations => Algorithmic-Trading}/Icons/Trading/trading-bot.png (100%) rename Projects/{Foundations => Algorithmic-Trading}/Icons/Trading/trading-mine.png (100%) create mode 100644 Projects/Algorithmic-Trading/Icons/algorithmic-trading-project.png create mode 100644 Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json rename Projects/{Foundations => Algorithmic-Trading}/Schemas/App-Schema/trading-bot.json (72%) rename Projects/{Foundations => Algorithmic-Trading}/Schemas/App-Schema/trading-mine.json (64%) 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-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/Algorithmic-Trading/Icons/algorithmic-trading-project.png b/Projects/Algorithmic-Trading/Icons/algorithmic-trading-project.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5299e7fba0a7b7c0a6cd9818e49a30f729ca2d GIT binary patch literal 11409 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 a81yTDTjx}p`y;?8bn}}2)uJobPyY{u@C Date: Mon, 27 Sep 2021 17:37:28 +0200 Subject: [PATCH 16/42] Plugins Moved from Foundations to Algorithmic-Trading --- .../Icons/Trading/trading-engine.png | Bin .../Icons/Trading/trading-system.png | Bin .../Plugins/Trading-Engines/Low-Frequency.json | 0 .../Plugins/Trading-Mines/Masters.json | 0 .../Trading-Systems/BB-Top-Bounce-BTC-USDT.json | 0 .../LiveTester-Chart-Scanner.json | 0 .../Masters-Lightning-Strike.json | 0 .../Trading-Systems/Sparta-WHB-BTC-USDT.json | 0 .../Schemas/App-Schema/trading-engine.json | 15 ++++++++++----- .../Schemas/App-Schema/trading-system.json | 15 ++++++++++----- .../App-Schema/plugin-trading-engines.json | 4 +++- .../Schemas/App-Schema/plugin-trading-mines.json | 4 +++- .../App-Schema/plugin-trading-systems.json | 4 +++- .../UI/Function-Libraries/PluginsFunctions.js | 6 +++--- 14 files changed, 32 insertions(+), 16 deletions(-) rename Projects/{Foundations => Algorithmic-Trading}/Icons/Trading/trading-engine.png (100%) rename Projects/{Foundations => Algorithmic-Trading}/Icons/Trading/trading-system.png (100%) rename Projects/{Foundations => Algorithmic-Trading}/Plugins/Trading-Engines/Low-Frequency.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Plugins/Trading-Mines/Masters.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Plugins/Trading-Systems/BB-Top-Bounce-BTC-USDT.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Plugins/Trading-Systems/LiveTester-Chart-Scanner.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Plugins/Trading-Systems/Masters-Lightning-Strike.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Plugins/Trading-Systems/Sparta-WHB-BTC-USDT.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Schemas/App-Schema/trading-engine.json (71%) rename Projects/{Foundations => Algorithmic-Trading}/Schemas/App-Schema/trading-system.json (72%) 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-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/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/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..528279a1a 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": true, + "project": "Foundations" }, { "name": "tradingLast", "type": "node", "childType": "Trading Last", - "autoAdd": true + "autoAdd": true, + "project": "Foundations" }, { "name": "exchangeOrders", "type": "node", "childType": "Exchange Orders", - "autoAdd": true + "autoAdd": true, + "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/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json index 5fdfd8ba8..695977ab2 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json @@ -7,7 +7,9 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Trading Engine", + "iconPathOn": "trading-engine", + "iconPathOff": "trading-engine", + "iconProject": "Algorithmic-Trading", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json index 1cc96e5bf..a1c864624 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json @@ -7,7 +7,9 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Trading Mine", + "iconPathOn": "trading-mine", + "iconPathOff": "trading-mine", + "iconProject": "Algorithmic-Trading", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json index b7b7489cc..c79a28a2e 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json @@ -7,7 +7,9 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Trading System", + "iconPathOn": "trading-system", + "iconPathOff": "trading-system", + "iconProject": "Algorithmic-Trading", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js index 4fbc21ab0..d2c010698 100644 --- a/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js +++ b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js @@ -77,7 +77,7 @@ function newPluginsFunctionLibraryPluginsFunctions() { UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Mines', 'Trading Mine', 'Algorithmic-Trading') } } @@ -93,7 +93,7 @@ function newPluginsFunctionLibraryPluginsFunctions() { UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Systems', 'Trading System', 'Algorithmic-Trading') } } @@ -109,7 +109,7 @@ function newPluginsFunctionLibraryPluginsFunctions() { UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Trading-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Trading-Engines', 'Trading Engine', 'Algorithmic-Trading') } } From 7bada617b7aca07b374aecb64c095a8600f701f9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 18:29:29 +0200 Subject: [PATCH 17/42] Trading Task Running --- .../Low-Frequency-Trading/TradingProcess.js | 2 +- .../Low-Frequency-Trading/TradingSimulation.js | 6 +++--- .../Low-Frequency-Trading/TradingStages.js | 2 +- .../TS/Bot-Modules/Trading-Bot/TradingSession.js | 4 ++-- .../Trading-Bot/Announcements/TelegramBot.js | 2 +- .../UI/Function-Libraries/UiObjectsFromNodes.js | 14 +++++++++++++- 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js index ec5a2c681..eb92775d4 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingProcess.js @@ -285,7 +285,7 @@ */ TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] checkIfSessionMustStop -> Backtesting Session Finished. Stopping the Session now. ') - TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Backtesting Session Finished.') + TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Backtesting Session Finished.') } } } diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js index 84a4b1635..ce9e39ba4 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingSimulation.js @@ -89,7 +89,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde meaning that the dataSet needs to be updated with more up-to-date data. */ console.log('DEBUGGING ..................', initialCandle, candles.length) - TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Data is not up-to-date enough. Please start the Data Mining Operation.') + TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Data is not up-to-date enough. Please start the Data Mining Operation.') TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Data is not up-to-date enough. Stopping the Session now. ') return @@ -253,7 +253,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde if (checkFinalDatetime() === false) { closeEpisode('Final Datetime Reached') breakLoop = true - TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Final Datetime Reached') + TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Final Datetime Reached') TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Final Datetime Reached. Stopping the Session now. ') return @@ -262,7 +262,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde if (checkMinimunAndMaximunBalance() === false) { closeEpisode('Min or Max Balance Reached') breakLoop = true - TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Min or Max Balance Reached') + TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Min or Max Balance Reached') TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[IMPORTANT] runSimulation -> Min or Max Balance Reached. Stopping the Session now. ') return diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js index 1a3e794f2..a1e1a0de1 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js @@ -24,7 +24,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (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.algorithmicTrading.botModules.announcements.newFoundationsBotModulesAnnouncements(processIndex) + let announcementsModuleObject = TS.projects.foundations.botModules.announcements.newFoundationsBotModulesAnnouncements(processIndex) let snapshotsModuleObject = TS.projects.algorithmicTrading.botModules.snapshots.newAlgorithmicTradingBotModulesSnapshots(processIndex) let tradingEpisodeModuleObject = TS.projects.algorithmicTrading.botModules.tradingEpisode.newAlgorithmicTradingBotModulesTradingEpisode(processIndex) diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js index 0bdf53185..d9d3586ee 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/TradingSession.js @@ -162,12 +162,12 @@ } function onSessionStop() { - TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'Session Stopped From the User Interface.') + TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'Session Stopped From the User Interface.') } function onSessionResume(message) { try { - if (TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession === undefined) { + if (TS.projects.foundations.functionLibraries.sessionFunctions.stopSession === undefined) { TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_INSTANCE_LOGGER_MODULE_OBJECT.write(MODULE_NAME, "[WARN] onSessionResume -> Event received to resume the Session that have never be ran before. ") return diff --git a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js index 66a820998..5fe10448c 100644 --- a/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js +++ b/Projects/Foundations/TS/Bot-Modules/Trading-Bot/Announcements/TelegramBot.js @@ -30,7 +30,7 @@ exports.newFoundationsBotModulesTelegramBot = function (processIndex) { '• Use /stop to stop the session.\n' + '• Use /help to receive this help message.\n\n' + 'Additional commands can be configured using the Social Bot Command node.')) - thisObject.telegramBot.command('stop', (ctx) => TS.projects.algorithmicTrading.functionLibraries.sessionFunctions.stopSession(processIndex, 'by command from Telegram.')) + thisObject.telegramBot.command('stop', (ctx) => TS.projects.foundations.functionLibraries.sessionFunctions.stopSession(processIndex, 'by command from Telegram.')) /* Set up additional commands for each Social Bot Command node */ if(commands !== undefined) { diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index 0eafc7a19..fdc974f86 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 @@ -84,6 +84,9 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { totalPlugin = totalPlugin + project.pluginTradingEngines.pluginFiles.length pluginAllTheseFiles(project.pluginTradingEngines.pluginFiles, 'Trading-Engines') } + /* + Foundations Plugin Types + */ if (project.pluginLearningMines !== undefined) { totalPlugin = totalPlugin + project.pluginLearningMines.pluginFiles.length pluginAllTheseFiles(project.pluginLearningMines.pluginFiles, 'Learning-Mines') @@ -451,6 +454,15 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { 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 === 'Plugins' || node.type === 'Plugin Tutorials' || From 82450bf9c7700ed9705e443bb20b0d3f85bf3313 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 19:02:48 +0200 Subject: [PATCH 18/42] Bug Fixed --- .../ReferenceAttachDetach.js | 15 +- Projects/ProjectsSchema.json | 304 +++++++++--------- 2 files changed, 160 insertions(+), 159 deletions(-) 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/ProjectsSchema.json b/Projects/ProjectsSchema.json index c15a8f1dd..82866429e 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1,4 +1,156 @@ [ + { + "name": "Algorithmic-Trading", + "propertyName": "algorithmicTrading", + "UI": { + "functionLibraries": [ + { + "name": "Trading Session Functions", + "propertyName": "tradingSessionFunctions", + "functionName": "newAlgorithmicTradingFunctionLibraryTradingSessionFunctions" + } + ] + }, + "TS": { + "botModules": [ + { + "name": "Single Market Trading Bot", + "propertyName": "singleMarketTradingBot", + "functionName": "newAlgorithmicTradingBotModulesSingleMarketTradingBot", + "fileName": "SingleMarketTradingBot.js", + "folderName": "Trading-Bot", + "botType": "Trading Bot" + }, + { + "name": "Trading Session", + "propertyName": "tradingSession", + "functionName": "newAlgorithmicTradingBotModulesTradingSession", + "fileName": "TradingSession.js", + "folderName": "Trading-Bot" + }, + { + "name": "Trading Process", + "propertyName": "tradingProcess", + "functionName": "newAlgorithmicTradingBotModulesTradingProcess", + "fileName": "TradingProcess.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Engine", + "propertyName": "tradingEngine", + "functionName": "newAlgorithmicTradingBotModulesTradingEngine", + "fileName": "TradingEngine.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Output", + "propertyName": "tradingOutput", + "functionName": "newAlgorithmicTradingBotModulesTradingOutput", + "fileName": "TradingOutput.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Simulation", + "propertyName": "tradingSimulation", + "functionName": "newAlgorithmicTradingBotModulesTradingSimulation", + "fileName": "TradingSimulation.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Episode", + "propertyName": "tradingEpisode", + "functionName": "newAlgorithmicTradingBotModulesTradingEpisode", + "fileName": "TradingEpisode.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Records", + "propertyName": "tradingRecords", + "functionName": "newAlgorithmicTradingBotModulesTradingRecords", + "fileName": "TradingRecords.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading System", + "propertyName": "tradingSystem", + "functionName": "newAlgorithmicTradingBotModulesTradingSystem", + "fileName": "TradingSystem.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Stages", + "propertyName": "tradingStages", + "functionName": "newAlgorithmicTradingBotModulesTradingStages", + "fileName": "TradingStages.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Strategy", + "propertyName": "tradingStrategy", + "functionName": "newAlgorithmicTradingBotModulesTradingStrategy", + "fileName": "TradingStrategy.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Execution", + "propertyName": "tradingExecution", + "functionName": "newAlgorithmicTradingBotModulesTradingExecution", + "fileName": "TradingExecution.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Position", + "propertyName": "tradingPosition", + "functionName": "newAlgorithmicTradingBotModulesTradingPosition", + "fileName": "TradingPosition.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Snapshots", + "propertyName": "snapshots", + "functionName": "newAlgorithmicTradingBotModulesSnapshots", + "fileName": "Snapshots.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Trading Orders", + "propertyName": "tradingOrders", + "functionName": "newAlgorithmicTradingBotModulesTradingOrders", + "fileName": "TradingOrders.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Orders Simulations", + "propertyName": "ordersSimulations", + "functionName": "newAlgorithmicTradingBotModulesOrdersSimulations", + "fileName": "OrdersSimulations.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Orders Calculations", + "propertyName": "ordersCalculations", + "functionName": "newAlgorithmicTradingBotModulesOrdersCalculations", + "fileName": "OrdersCalculations.js", + "folderName": "Trading-Bot/Low-Frequency-Trading" + }, + { + "name": "Exchange API", + "propertyName": "exchangeAPI", + "functionName": "newAlgorithmicTradingBotModulesExchangeAPI", + "fileName": "ExchangeAPI.js", + "folderName": "Trading-Bot/Low-Frequency-Trading/APIs" + } + ] + }, + "plugins": [ + "Trading Mines", + "Trading Systems", + "Trading Engines" + ], + "tasks": [ + "Trading Tasks" + ] + }, { "name": "Foundations", "propertyName": "foundations", @@ -799,158 +951,6 @@ "Data Tasks" ] }, - { - "name": "Algorithmic-Trading", - "propertyName": "algorithmicTrading", - "UI": { - "functionLibraries": [ - { - "name": "Trading Session Functions", - "propertyName": "tradingSessionFunctions", - "functionName": "newAlgorithmicTradingFunctionLibraryTradingSessionFunctions" - } - ] - }, - "TS": { - "botModules": [ - { - "name": "Single Market Trading Bot", - "propertyName": "singleMarketTradingBot", - "functionName": "newAlgorithmicTradingBotModulesSingleMarketTradingBot", - "fileName": "SingleMarketTradingBot.js", - "folderName": "Trading-Bot", - "botType": "Trading Bot" - }, - { - "name": "Trading Session", - "propertyName": "tradingSession", - "functionName": "newAlgorithmicTradingBotModulesTradingSession", - "fileName": "TradingSession.js", - "folderName": "Trading-Bot" - }, - { - "name": "Trading Process", - "propertyName": "tradingProcess", - "functionName": "newAlgorithmicTradingBotModulesTradingProcess", - "fileName": "TradingProcess.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Engine", - "propertyName": "tradingEngine", - "functionName": "newAlgorithmicTradingBotModulesTradingEngine", - "fileName": "TradingEngine.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Output", - "propertyName": "tradingOutput", - "functionName": "newAlgorithmicTradingBotModulesTradingOutput", - "fileName": "TradingOutput.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Simulation", - "propertyName": "tradingSimulation", - "functionName": "newAlgorithmicTradingBotModulesTradingSimulation", - "fileName": "TradingSimulation.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Episode", - "propertyName": "tradingEpisode", - "functionName": "newAlgorithmicTradingBotModulesTradingEpisode", - "fileName": "TradingEpisode.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Records", - "propertyName": "tradingRecords", - "functionName": "newAlgorithmicTradingBotModulesTradingRecords", - "fileName": "TradingRecords.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading System", - "propertyName": "tradingSystem", - "functionName": "newAlgorithmicTradingBotModulesTradingSystem", - "fileName": "TradingSystem.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Stages", - "propertyName": "tradingStages", - "functionName": "newAlgorithmicTradingBotModulesTradingStages", - "fileName": "TradingStages.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Strategy", - "propertyName": "tradingStrategy", - "functionName": "newAlgorithmicTradingBotModulesTradingStrategy", - "fileName": "TradingStrategy.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Execution", - "propertyName": "tradingExecution", - "functionName": "newAlgorithmicTradingBotModulesTradingExecution", - "fileName": "TradingExecution.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Position", - "propertyName": "tradingPosition", - "functionName": "newAlgorithmicTradingBotModulesTradingPosition", - "fileName": "TradingPosition.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Snapshots", - "propertyName": "snapshots", - "functionName": "newAlgorithmicTradingBotModulesSnapshots", - "fileName": "Snapshots.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Trading Orders", - "propertyName": "tradingOrders", - "functionName": "newAlgorithmicTradingBotModulesTradingOrders", - "fileName": "TradingOrders.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Orders Simulations", - "propertyName": "ordersSimulations", - "functionName": "newAlgorithmicTradingBotModulesOrdersSimulations", - "fileName": "OrdersSimulations.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Orders Calculations", - "propertyName": "ordersCalculations", - "functionName": "newAlgorithmicTradingBotModulesOrdersCalculations", - "fileName": "OrdersCalculations.js", - "folderName": "Trading-Bot/Low-Frequency-Trading" - }, - { - "name": "Exchange API", - "propertyName": "exchangeAPI", - "functionName": "newAlgorithmicTradingBotModulesExchangeAPI", - "fileName": "ExchangeAPI.js", - "folderName": "Trading-Bot/Low-Frequency-Trading/APIs" - } - ] - }, - "plugins": [ - "Trading Mines", - "Trading Systems", - "Trading Engines" - ], - "tasks": [ - "Trading Tasks" - ] - }, { "name": "Community-Plugins", "propertyName": "communityPlugins", From 16d5e00fc3791efd4fb0165da164d504d447f9e4 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 27 Sep 2021 22:08:21 +0200 Subject: [PATCH 19/42] Bug Fixed --- .../UI/Function-Libraries/UiObjectsFromNodes.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index fdc974f86..ed280a4e0 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -202,7 +202,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 @@ -449,7 +449,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { node.type === 'Data Mine' || node.type === 'API Data Fetcher Bot' || node.type === 'Indicator Bot' || - node.type === 'Sensor Bot' + node.type === 'Sensor Bot' ) { node.project = "Data-Mining" } @@ -458,7 +458,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { node.type === 'Trading Engine' || node.type === 'Trading Mine' || node.type === 'Trading System' || - node.type === 'Trading Bot' + node.type === 'Trading Bot' ) { node.project = "Algorithmic-Trading" } @@ -476,7 +476,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { node.type === 'Plugin File' || node.type === 'Plugin File Position' || node.type === 'Plugin Data Mines' || - node.type === 'Plugin API Maps' + node.type === 'Plugin API Maps' ) { node.project = "Community-Plugins" } From b20559057dc79077a5d91e229019f09d0a584bc4 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 28 Sep 2021 12:39:32 +0200 Subject: [PATCH 20/42] Update Getting-Started-Tutorials.json --- .../Workspaces/Getting-Started-Tutorials.json | 1967 +++++++++-------- 1 file changed, 988 insertions(+), 979 deletions(-) diff --git a/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json b/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json index 2d0c7b7e4..a6eb574dc 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" + "Getting Started Tutorials", + "Workspace" ], [ - "Foundations", - "Project Definition", - "Foundations", - "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "New Data-Mining Project", + "Data-Mining Project" + ], + [ + "Data-Mining", + "Project Definition" ] ] } @@ -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" + "Getting Started Tutorials", + "Workspace" ], [ - "Foundations", - "Project Definition", - "Foundations", - "a2a04e12-604e-43f8-a986-1b8ca3b043cb" + "New Algorithmic-Trading Project", + "Algorithmic-Trading Project" + ], + [ + "Algorithmic-Trading", + "Project Definition" ] ] } @@ -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" ] ] @@ -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,39 +57962,11 @@ } } ], - "id": "87a28762-63d0-45f7-bd39-9dea436d8244", + "id": "34cd7afd-774b-4340-ab6b-ebcaa61c2d05", "savedPayload": { "position": { - "x": 37827.08337956752, - "y": 10935.137951582688 - }, - "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "pluginLearningEngines": { - "type": "Plugin Learning Engines", - "name": "New Plugin Learning Engines", - "project": "Foundations", - "pluginFiles": [], - "id": "6e8d19f0-51a5-4d7c-857e-3549c553f008", - "savedPayload": { - "position": { - "x": 37677.08337956752, - "y": 11044.119330783491 + "x": 37796.510315611, + "y": 10970.93441025091 }, "targetPosition": { "x": 37584.378281255034, @@ -58280,7 +57976,7 @@ "isPinned": false, "isFrozen": false, "isCollapsed": false, - "angleToParent": 1, + "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, @@ -58289,63 +57985,7 @@ } } }, - "pluginTutorials": { - "type": "Plugin Tutorials", - "name": "New Plugin Tutorials", - "project": "Foundations", - "pluginFiles": [], - "id": "dc01958c-5bd4-4941-b790-aec7da3c1638", - "savedPayload": { - "position": { - "x": 37491.67318294255, - "y": 11044.119330783491 - }, - "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "pluginApiMaps": { - "type": "Plugin API Maps", - "name": "New Plugin API Maps", - "project": "Foundations", - "pluginFiles": [], - "id": "b75d5c18-f8d1-47de-aa4b-95040435d094", - "savedPayload": { - "position": { - "x": 37341.67318294255, - "y": 10935.137951582688 - }, - "targetPosition": { - "x": 37584.378281255034, - "y": 10758.802375894946 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "c4e402d7-5228-408c-9d67-379d6ef40bae", + "id": "252daf71-559e-4a54-a534-42ec1e7f1a31", "savedPayload": { "position": { "x": 37584.378281255034, @@ -58367,6 +58007,315 @@ "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": 37744.00494712642, + "y": 11144.47494170687 + }, + "targetPosition": { + "x": 37514.19161419073, + "y": 10951.638658800908 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "9e34391d-8a7f-465d-aaae-d1aab31d27af", + "savedPayload": { + "position": { + "x": 37514.19161419073, + "y": 10951.638658800908 + }, + "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": 37336.472734555115, + "y": 11054.244701798609 + }, + "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": 37134.378281255034, + "y": 11018.609997030277 + }, + "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": 37002.47049501926, + "y": 10861.408418892646 + }, + "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": 37002.47049501926, + "y": 10656.196332897245 + }, + "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": 37134.378281255034, + "y": 10498.994754759615 + }, + "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": 37336.472734555115, + "y": 10463.360049991283 + }, + "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": 37514.19161419073, + "y": 10565.966092988983 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } } ], "id": "bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6", @@ -58651,12 +58600,12 @@ "id": "cf9f8b3b-77c6-43c6-b01f-95cf366a91f6", "savedPayload": { "position": { - "x": 18903, - "y": 10733.5 + "x": 4320.75, + "y": 30833.453560371516 }, "targetPosition": { - "x": 18903, - "y": 10733.5 + "x": 4320.75, + "y": 30833.453560371516 }, "floatingObject": { "isPinned": true, @@ -60251,7 +60200,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -60438,7 +60387,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -60675,7 +60624,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61052,7 +61001,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ] ] @@ -61112,7 +61061,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61321,7 +61270,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61502,7 +61451,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61643,7 +61592,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -61821,7 +61770,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -62002,7 +61951,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -62078,7 +62027,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ] ] @@ -62122,7 +62071,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -62420,8 +62369,8 @@ }, "referenceParent": { "type": "Workspace", - "name": "Getting Started Tutorials", - "id": "a3333ada-a69c-4086-bba6-3c950bd1f6fd" + "name": "Getting-Started-Tutorials", + "id": "ba8d157b-86e8-43e6-900d-97909ca0048b" }, "referenceParentCombinedNodePath": [ [ @@ -62503,7 +62452,7 @@ [ "New Plugins", "Plugins", - "Foundations", + "Community-Plugins", "bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6" ] ] @@ -62574,38 +62523,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 +62560,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 +63976,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64175,7 +64074,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64795,7 +64694,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64875,7 +64774,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -64967,7 +64866,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -65071,7 +64970,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -66286,13 +66185,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 +66241,7 @@ [ "Masters", "Data Mine", - "Foundations", + "Data-Mining", "66c79ece-5a7e-4a2b-be0d-0374f61086ba" ], [ @@ -66681,7 +66580,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -66791,7 +66690,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -66907,7 +66806,7 @@ "8117db0a-e418-4f56-8fe4-fda2ddac1cbb" ], [ - "Foundations", + "Algorithmic-Trading", "Project Trading Tasks", "Foundations", "f68e0eb3-7b49-4455-8d54-cf57d25bc5a4" @@ -67553,7 +67452,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67621,7 +67520,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67701,7 +67600,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67769,7 +67668,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67819,7 +67718,7 @@ [ "Lightning Strike", "Trading System", - "Foundations", + "Algorithmic-Trading", "628b758d-ffff-445f-9d4f-8aa480a13db3" ], [ @@ -67927,7 +67826,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ] ] @@ -67971,7 +67870,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ], [ @@ -68095,7 +67994,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ], [ @@ -68157,7 +68056,7 @@ [ "Low-Frequency", "Trading Engine", - "Foundations", + "Algorithmic-Trading", "eb20f622-71bf-4479-a574-d2320e1d4bd1" ], [ @@ -68760,7 +68659,7 @@ "40af91d9-431c-4b7d-addc-aed37bc2f3fe" ], [ - "Foundations", + "Data-Mining", "Project Data Tasks", "Foundations", "cb4eb67d-ceba-448e-83e7-0dced47e3c66" @@ -69964,6 +69863,116 @@ "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 + } + } } ] } \ No newline at end of file From 14e7655df922fe5aab43fa919cec7178110a445e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 28 Sep 2021 13:40:35 +0200 Subject: [PATCH 21/42] Fixing some bugs --- .../App-Schema/algorithmic-trading-project.json | 16 ++++++++++++++++ .../Schemas/App-Schema/trading-engine.json | 6 +++--- .../UI/Function-Libraries/UiObjectsFromNodes.js | 6 +++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json b/Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json index 9a8e89cd4..53e974e6d 100644 --- a/Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json +++ b/Projects/Algorithmic-Trading/Schemas/App-Schema/algorithmic-trading-project.json @@ -18,6 +18,22 @@ "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, diff --git a/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-engine.json b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-engine.json index 528279a1a..517079e17 100644 --- a/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-engine.json +++ b/Projects/Algorithmic-Trading/Schemas/App-Schema/trading-engine.json @@ -27,21 +27,21 @@ "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" } ] diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index ed280a4e0..802ac1ab0 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -756,7 +756,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 } } From 2837f0ab32cb49944eb9c253c1135dd71b5617bd Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 10:48:28 +0200 Subject: [PATCH 22/42] Update githubServer.js --- Platform/Client/githubServer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Platform/Client/githubServer.js b/Platform/Client/githubServer.js index a91e86dc6..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) From 9e5c5504746f298b3bb40e0b5000d4855fb8f251 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 11:46:20 +0200 Subject: [PATCH 23/42] Machine Learning Project extracted from Foundations --- .../UI/Function-Libraries/ActionSwitch.js | 8 +- .../Function-Libraries/UiObjectsFromNodes.js | 2 +- .../Learning-Bot/LearningSession.js | 2 +- .../Low-Frequency-Learning/LearningEngine.js | 2 +- .../Low-Frequency-Learning/LearningEpisode.js | 2 +- .../Low-Frequency-Learning/LearningOutput.js | 4 +- .../Low-Frequency-Learning/LearningProcess.js | 6 +- .../Low-Frequency-Learning/LearningRecords.js | 2 +- .../LearningSimulation.js | 8 +- .../Low-Frequency-Learning/LearningSystem.js | 2 +- .../Learning-Bot/SingleMarketLearningBot.js | 6 +- .../LearningSessionFunctions.js | 2 +- Projects/ProjectsSchema.json | 164 ++++++++++-------- 13 files changed, 112 insertions(+), 98 deletions(-) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/LearningSession.js (99%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js (99%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js (98%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js (94%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js (98%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningRecords.js (99%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js (99%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSystem.js (99%) rename Projects/{Foundations => Machine-Learning}/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js (99%) rename Projects/{Foundations => Machine-Learning}/UI/Function-Libraries/LearningSessionFunctions.js (99%) diff --git a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index e91360bf2..e66088a46 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -590,22 +590,22 @@ function newFoundationsActionSwitch() { break case 'Stop Trading Session': { - UI.projects.foundations.functionLibraries.tradingSessionFunctions.stopSession(action.node, action.callBackFunction) + UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.stopSession(action.node, action.callBackFunction) } break case 'Run Learning Session': { - UI.projects.foundations.functionLibraries.learningSessionFunctions.runSession(action.node, false, action.callBackFunction) + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.runSession(action.node, false, action.callBackFunction) } break case 'Resume Learning Session': { - UI.projects.foundations.functionLibraries.learningSessionFunctions.runSession(action.node, true, action.callBackFunction) + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.runSession(action.node, true, action.callBackFunction) } break case 'Stop Learning Session': { - UI.projects.foundations.functionLibraries.learningSessionFunctions.stopSession(action.node, action.callBackFunction) + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.stopSession(action.node, action.callBackFunction) } break case 'Run Super Action': diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index 802ac1ab0..7043b518a 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -278,7 +278,7 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { function syncronizeLearningSessionsFoundAtWorkspaceWithBackEnd() { for (let i = 0; i < learningSessionsFoundAtWorkspace.length; i++) { let node = learningSessionsFoundAtWorkspace[i] - UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.syncronizeSessionWithBackEnd(node) + UI.projects.machineLearning.functionLibraries.learningSessionFunctions.syncronizeSessionWithBackEnd(node) } learningSessionsFoundAtWorkspace = undefined } 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 94% 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..38e50393b 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.foundations.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..f7d76eb52 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,8 @@ 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.foundations.botModules.learningEngine.newMachineLearningBotModulesLearningEngine(processIndex) + let learningOutputModuleObject = TS.projects.foundations.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 99% 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..a6385b44c 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.foundations.botModules.learningRecords.newMachineLearningBotModulesLearningRecords(processIndex) learningRecordsModuleObject.initialize(outputDatasetsMap) - let learningSystemModuleObject = TS.projects.foundations.botModules.learningSystem.newFoundationsBotModulesLearningSystem(processIndex) + let learningSystemModuleObject = TS.projects.foundations.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.foundations.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..9d23b0e8a 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.foundations.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.foundations.botModules.learningProcess.newMachineLearningBotModulesLearningProcess(processIndex); startProcessFramework(); break; } diff --git a/Projects/Foundations/UI/Function-Libraries/LearningSessionFunctions.js b/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js similarity index 99% rename from Projects/Foundations/UI/Function-Libraries/LearningSessionFunctions.js rename to Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js index e542b9ae2..b8440de23 100644 --- a/Projects/Foundations/UI/Function-Libraries/LearningSessionFunctions.js +++ b/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js @@ -1,4 +1,4 @@ -function newFoundationsFunctionLibraryLearningSessionFunctions() { +function newMachineLearningFunctionLibraryLearningSessionFunctions() { let thisObject = { syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd, runSession: runSession, diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 82866429e..3c6cb5d05 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -151,6 +151,95 @@ "Trading Tasks" ] }, + { + "name": "Machine-Learning", + "propertyName": "machineLearning", + "UI": { + "functionLibraries": [ + { + "name": "Learning Session Functions", + "propertyName": "learningSessionFunctions", + "functionName": "newMachineLearningFunctionLibraryLearningSessionFunctions" + } + ] + }, + "TS": { + "botModules": [ + { + "name": "Single Market Learning Bot", + "propertyName": "singleMarketLearningBot", + "functionName": "newMachineLearningBotModulesSingleMarketLearningBot", + "fileName": "SingleMarketLearningBot.js", + "folderName": "Learning-Bot", + "botType": "Learning Bot" + }, + { + "name": "Learning Session", + "propertyName": "learningSession", + "functionName": "newMachineLearningBotModulesLearningSession", + "fileName": "LearningSession.js", + "folderName": "Learning-Bot" + }, + { + "name": "Learning Process", + "propertyName": "learningProcess", + "functionName": "newMachineLearningBotModulesLearningProcess", + "fileName": "LearningProcess.js", + "folderName": "Learning-Bot/Low-Frequency-Learning" + }, + { + "name": "Learning Engine", + "propertyName": "learningEngine", + "functionName": "newMachineLearningBotModulesLearningEngine", + "fileName": "LearningEngine.js", + "folderName": "Learning-Bot/Low-Frequency-Learning" + }, + { + "name": "Learning Output", + "propertyName": "learningOutput", + "functionName": "newMachineLearningBotModulesLearningOutput", + "fileName": "LearningOutput.js", + "folderName": "Learning-Bot/Low-Frequency-Learning" + }, + { + "name": "Learning Simulation", + "propertyName": "learningSimulation", + "functionName": "newMachineLearningBotModulesLearningSimulation", + "fileName": "LearningSimulation.js", + "folderName": "Learning-Bot/Low-Frequency-Learning" + }, + { + "name": "Learning Episode", + "propertyName": "learningEpisode", + "functionName": "newMachineLearningBotModulesLearningEpisode", + "fileName": "LearningEpisode.js", + "folderName": "Learning-Bot/Low-Frequency-Learning" + }, + { + "name": "Learning Records", + "propertyName": "learningRecords", + "functionName": "newMachineLearningBotModulesLearningRecords", + "fileName": "LearningRecords.js", + "folderName": "Learning-Bot/Low-Frequency-Learning" + }, + { + "name": "Learning System", + "propertyName": "learningSystem", + "functionName": "newMachineLearningBotModulesLearningSystem", + "fileName": "LearningSystem.js", + "folderName": "Learning-Bot/Low-Frequency-Learning" + } + ] + }, + "plugins": [ + "Learning Mines", + "Learning Systems", + "Learning Engines" + ], + "tasks": [ + "Learning Tasks" + ] + }, { "name": "Foundations", "propertyName": "foundations", @@ -223,11 +312,6 @@ "propertyName": "taskFunctions", "functionName": "newFoundationsFunctionLibraryTaskFunctions" }, - { - "name": "Learning Session Functions", - "propertyName": "learningSessionFunctions", - "functionName": "newFoundationsFunctionLibraryLearningSessionFunctions" - }, { "name": "Crypto Ecosystem Functions", "propertyName": "cryptoEcosystemFunctions", @@ -690,70 +774,6 @@ "functionName": "newFoundationsBotModulesSlackBot", "fileName": "SlackBot.js", "folderName": "Trading-Bot/Announcements" - }, - { - "name": "Single Market Learning Bot", - "propertyName": "singleMarketLearningBot", - "functionName": "newFoundationsBotModulesSingleMarketLearningBot", - "fileName": "SingleMarketLearningBot.js", - "folderName": "Learning-Bot", - "botType": "Learning Bot" - }, - { - "name": "Learning Session", - "propertyName": "learningSession", - "functionName": "newFoundationsBotModulesLearningSession", - "fileName": "LearningSession.js", - "folderName": "Learning-Bot" - }, - { - "name": "Learning Process", - "propertyName": "learningProcess", - "functionName": "newFoundationsBotModulesLearningProcess", - "fileName": "LearningProcess.js", - "folderName": "Learning-Bot/Low-Frequency-Learning" - }, - { - "name": "Learning Engine", - "propertyName": "learningEngine", - "functionName": "newFoundationsBotModulesLearningEngine", - "fileName": "LearningEngine.js", - "folderName": "Learning-Bot/Low-Frequency-Learning" - }, - { - "name": "Learning Output", - "propertyName": "learningOutput", - "functionName": "newFoundationsBotModulesLearningOutput", - "fileName": "LearningOutput.js", - "folderName": "Learning-Bot/Low-Frequency-Learning" - }, - { - "name": "Learning Simulation", - "propertyName": "learningSimulation", - "functionName": "newFoundationsBotModulesLearningSimulation", - "fileName": "LearningSimulation.js", - "folderName": "Learning-Bot/Low-Frequency-Learning" - }, - { - "name": "Learning Episode", - "propertyName": "learningEpisode", - "functionName": "newFoundationsBotModulesLearningEpisode", - "fileName": "LearningEpisode.js", - "folderName": "Learning-Bot/Low-Frequency-Learning" - }, - { - "name": "Learning Records", - "propertyName": "learningRecords", - "functionName": "newFoundationsBotModulesLearningRecords", - "fileName": "LearningRecords.js", - "folderName": "Learning-Bot/Low-Frequency-Learning" - }, - { - "name": "Learning System", - "propertyName": "learningSystem", - "functionName": "newFoundationsBotModulesLearningSystem", - "fileName": "LearningSystem.js", - "folderName": "Learning-Bot/Low-Frequency-Learning" } ] }, @@ -810,14 +830,8 @@ ] }, "plugins": [ - "Learning Mines", - "Learning Systems", - "Learning Engines", "Tutorials", "API Maps" - ], - "tasks": [ - "Learning Tasks" ] }, { From 2a49b303cc77c3a3bdae0b436a73a62738ee7815 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 13:14:15 +0200 Subject: [PATCH 24/42] Machine Learning Refactoring --- .../Learning-Bot/Low-Frequency-Learning/LearningOutput.js | 2 +- .../Learning-Bot/Low-Frequency-Learning/LearningProcess.js | 5 +++-- .../Low-Frequency-Learning/LearningSimulation.js | 6 +++--- .../TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js index 38e50393b..b2c6539fe 100644 --- a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js @@ -29,7 +29,7 @@ exports.newMachineLearningBotModulesLearningOutput = function (processIndex) { } /* Preparing everything for the Simulation */ - let learningSimulationModuleObject = TS.projects.foundations.botModules.learningSimulation.newMachineLearningBotModulesLearningSimulation(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/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js index f7d76eb52..1bbdcd3c4 100644 --- a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningProcess.js @@ -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.newMachineLearningBotModulesLearningEngine(processIndex) - let learningOutputModuleObject = TS.projects.foundations.botModules.learningOutput.newMachineLearningBotModulesLearningOutput(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/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js index a6385b44c..b1127e248 100644 --- a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningSimulation.js @@ -33,10 +33,10 @@ exports.newMachineLearningBotModulesLearningSimulation = 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.newMachineLearningBotModulesLearningRecords(processIndex) + let learningRecordsModuleObject = TS.projects.machineLearning.botModules.learningRecords.newMachineLearningBotModulesLearningRecords(processIndex) learningRecordsModuleObject.initialize(outputDatasetsMap) - let learningSystemModuleObject = TS.projects.foundations.botModules.learningSystem.newMachineLearningBotModulesLearningSystem(processIndex) + let learningSystemModuleObject = TS.projects.machineLearning.botModules.learningSystem.newMachineLearningBotModulesLearningSystem(processIndex) learningSystemModuleObject.initialize() /* @@ -77,7 +77,7 @@ exports.newMachineLearningBotModulesLearningSimulation = function (processIndex) } } - let learningEpisodeModuleObject = TS.projects.foundations.botModules.learningEpisode.newMachineLearningBotModulesLearningEpisode(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/Machine-Learning/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js index 9d23b0e8a..7eae12d5b 100644 --- a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/SingleMarketLearningBot.js @@ -2,7 +2,7 @@ const MODULE_NAME = "Single Market Learning Bot"; - let session = TS.projects.foundations.botModules.learningSession.newMachineLearningBotModulesLearningSession(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.newMachineLearningBotModulesLearningProcess(processIndex); + processFramework = TS.projects.machineLearning.botModules.learningProcess.newMachineLearningBotModulesLearningProcess(processIndex); startProcessFramework(); break; } From c4944335769592e50963d855f3b40cae94bfe109 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 14:09:00 +0200 Subject: [PATCH 25/42] ML Schemas migrated out of Foundations --- .../Schemas/App-Schema/learning-bot.json | 24 ++++--- .../Schemas/App-Schema/learning-engine.json | 18 ++++-- .../Schemas/App-Schema/learning-mine.json | 18 ++++-- .../Schemas/App-Schema/learning-system.json | 6 +- .../App-Schema/machine-learning-project.json | 63 +++++++++++++++++++ 5 files changed, 107 insertions(+), 22 deletions(-) rename Projects/{Foundations => Machine-Learning}/Schemas/App-Schema/learning-bot.json (72%) rename Projects/{Foundations => Machine-Learning}/Schemas/App-Schema/learning-engine.json (70%) rename Projects/{Foundations => Machine-Learning}/Schemas/App-Schema/learning-mine.json (69%) rename Projects/{Foundations => Machine-Learning}/Schemas/App-Schema/learning-system.json (74%) create mode 100644 Projects/Machine-Learning/Schemas/App-Schema/machine-learning-project.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 69% rename from Projects/Foundations/Schemas/App-Schema/learning-mine.json rename to Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json index cefbe2b42..24b9b91bb 100644 --- a/Projects/Foundations/Schemas/App-Schema/learning-mine.json +++ b/Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json @@ -7,19 +7,22 @@ "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" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" }, { "action": "Delete UI Object", @@ -28,7 +31,8 @@ "label": "Delete", "iconPathOn": "delete-entity", "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Foundations" } ], "isTitleAllwaysVisible": true, @@ -45,12 +49,14 @@ { "name": "learningBots", "type": "array", - "childType": "Learning Bot" + "childType": "Learning Bot", + "project": "Algorithmic-Trading" }, { "name": "plotters", "type": "array", - "childType": "Plotter" + "childType": "Plotter", + "project": "Algorithmic-Trading" } ] } \ 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 From 6d41d04cbd02b772e4408b6c17c63068e90c80d7 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 15:15:49 +0200 Subject: [PATCH 26/42] ML Icons --- .../Icons/Learning/learning-bot.png | Bin .../Icons/Learning/learning-engine.png | Bin .../Icons/Learning/learning-mine.png | Bin .../Icons/Learning/learning-system.png | Bin .../Icons/machine-learning-project.png | Bin 0 -> 12925 bytes 5 files changed, 0 insertions(+), 0 deletions(-) rename Projects/{Foundations => Machine-Learning}/Icons/Learning/learning-bot.png (100%) rename Projects/{Foundations => Machine-Learning}/Icons/Learning/learning-engine.png (100%) rename Projects/{Foundations => Machine-Learning}/Icons/Learning/learning-mine.png (100%) rename Projects/{Foundations => Machine-Learning}/Icons/Learning/learning-system.png (100%) create mode 100644 Projects/Machine-Learning/Icons/machine-learning-project.png 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 0000000000000000000000000000000000000000..688bcacdb3fcc902c889de14da2c601ca96b8922 GIT binary patch literal 12925 zcmch-c{tQx_&0uL48~4m4I@f+k!)e?w2&>zUP`2teK#Z|MH@<%>^mid7?KdOuVt%b z-}jkeo-=)}@ALfr_+8Imzw76^Tyx&-^;=6PJsO#lZ^;~&4Nn@^{j>P} zerps@M+vS%xf>8Uo)TZsHa_!t8y1Gh7}PF%ij2+2$olv^Gr3j9M|=NX|M{!8{;XxY zwY)D*w)TxVIudx$=~_MF_RMz7TiIf3AH4L@c{mnKSSP2POEIM^=>PvelYXDwkGc|| z?L`J1Zr5+VcA|ZruU(n2`PAph`8qt=cq9}*Tq-`BIeUbiP&S=3RxV*IL4^WfiZf7b z(R7uV@+0=g#5)~e6%#>4hs^zRDJuMEDGe5YN%x+_qZ)Z}Gq1&V1*mZWVUrQ+U%k0c ztcoLG_hPP~_PH^QnV&gzqb%Ya=yriGSMp#K@T zm@3`v=ZfIRP=QR;s(q?@i@Q!FwDRtXV^90n{%r;9HOch65^Szre? zjx`i1zv^n3G!am^1X)|kGN!`QW*vi(xLgs&e=i(vHYPff=I!cr3t2&sL*ZU6`+JL% zXn;lQ;%lP1%G41U#+P&9>?(|ZT$ot_2&E6XZiRpE$ASWV<}$~fD08H@h5u{#%?;`S zc5TwNr&puQsdV*Ub-|=Ol+i$(A|W<|UL95eNhgVakBpD%IRYZL=)lb*ebg9$c}6`^ zFgKm+au^9-Un=6^FLOD>3LMTh8bisJFMps%fckd>q%pcz(onx)ocnGTJ7rwOP3Yr_BOo$svqBN4?3Zjf3t!{miq5<9$gv-rvS>WDRim(n=f+$?XH7F+z zb(r+6Eadu-+M`Pd1Yo8E1GVgOwov3Rk3w>C5?NS5cl3M@qEh@gz#yq7OgFezP8P8s z!4->F(s@OKP*NoLEVIkFa3A2(4S_=q4&Yd0;A%0TL4*PkC_6{cxqp2!!sd{$=ZXJX ze~bqWlGHky-_z2h*IxUwwlI`yFl^-7zdl-GpK%27gtgTw#E z0$YU%h$$=a4Pw%s(V+hZ48!iwoGvX|J$>FZj8*vzcswlXHJwfKtgS)oa4%!AytxAGir1vEGec z{hR9uux6radr?g#ezr6E5Epn;>{H0KaydvHU{2CVq^R+u-4w`I^&XBED6t`Mj==!S z--|fn@kH1#Svq>!1;@A`Y;?z`)KZ>5#g|O3*o^eoNSnV>e8;yqpXfdlQW?-Qv0v=I zDMcu^uFCzUKbCgkTi0?2vAo@~bchrb!^QG+dyC1(ad8dr{lle0W8$=f+;8rtCN;mfFm8 z0{NyLFXtltSYbZEJ*aOUu-tns@oGr9>e9~=V{=t6uMdT(-ec3`lAnW2I)|8V+*po8 z@tB;TeZW`cCyy{>2H%zUUfMyG$rgy(^SG8CxPL77=`461zuFwFbzSAx`b$0wa%U@o zwH-_{E?DlYOW8?B7}D2n{>rA6X_4BW;2=1d=Loy%vx=ZwqZygukN|e!^`+~ z@4~%vl}oE@JCr^4_)Kj>-oG&@C`Mnn-f9=Ql0AH`OMOw#w_>IUSWh5_d(mNajIWu@Bpo6}y|xQ{sp`vbvB*Xn?vEz**Ixicp_|@^ zu8{&OE$sCbgz7)DCG|HYYT5rRs}5?v81ku&fK(P3{qz)zE3^21<@s;yzzv-+W3F8R zsIw@sEKArhJE*%!l(nBGyi3~NVn)V(s)!18LFKcyc*GpCiwZymwb?XI6sZqYbxd8W z#;(rZ-x*VDn*79!N}Iz1lw{dlcmkza`mC^#(|!Y0a=^E!MQw}_P8Juxt76-24(?Wt z@|(jAoe{_V{6eg2Q$q`v`b-BhLRV#2+jYvT(NEs;wA%@w)I=DdY*IFr%hjQ42T}dU zg3F>=G$RqOj_>Z0W(XfU6j)eu0{W<5_8@BKK>DMQt&%{_CC29g#I)eK9%`;;MEKD@ z)O$ND^JS$IjyN%7L{UIZx<~%+d%*T`H5K zx2Q!>R>_L2D2JnT$ond2##VGgAxCJER={5GkK7iPa4@+L-B5T4NRA?p$7jgYh0tsK z;zfNQp84j?3~0(k00$2Oo8%-DLVPD`^)qUiHmpT3c=ZmegA5{~XgG)LoaBS$&dMeC zWRlOObdvaDG!AK39tm-65iamu;H=P!LSjUkZj*PP3%2JYRJTmh)mWWM$;F~+(kw(O zLlLf{1igvV1LgI}U$OC7gDWrU5Z`hU^Q;#S?&sDM>x6=9tvi>tX?L~$?oESdMn?QE zdT_q#g!6)Fy_i)qJ3)Q#sV<8HhjBfu3c8iW!@_bi@QExaZH*_Z+V88V?jjVNo=(;% z*v?n21bumhT&azI7thwQpY}^#CtbtZ?HCQB!oG2ad&J&##GEoCb=^3K?jz!^w;~(ew{M$~ zcmLMT&p)<4g--ZQKw?Xf4M#JnlxOnlPu;~sm&y^Ee$1mLy@&yWa$xh%jhg5`hO?#z z-pH^sxNvqF==GWfF{lRB-nlz|RvO*lBIO%fy3jfUa8r9fqU!rXL+GQfwFe;w|wiWuQ3tU&izRiL@YBuxgSQ)U=s*Vt} z|JY%U^*VejV6T#nrJ(7>VE%Yu108ClfGwPHCGF;%XrTVO>I#|mRhr?xk|Bt` zgDD&MJQx0Ny#jA{SWubHwpBGj(<)3;DdA?D#*$XW z7llup;zqB>%prknN-_7KDA?tu7#(=ZLe_(pVui#GG&(|7LK#jvk*P3)WEdZ?Yel}S$Lc(~J1MQm2P{0LA55VM$HxY8Z8U=He(ZCRm zs(?ZrhMe|SX@He|z~1Q#TEM`AJDvq=1W6SpHR~T!1WYI-B+EKH6oTi+frc_U$Wgc# z8pGI1E0GJIS*7QuDBKJi9p>~)jWqmuONp(Jd+CY+neU^ zauVJ9L{LCS6b^7Y_pg0zdVr=7Fn=CyKjIw+c`QX}ad@s4$CN{TVA`^tU##aKpdj;!#mr+F)7BHS znQR%(ixnw9^j#tyNTlN2b9cy{^7ebWBCfaiWMlxKTm0AqgAquh0VJmXpA;~Zu_yuS z|9gQ|D*NHJOJ?Ldp{0i(%nUW2V+0Lj8EHL=wOc3iSPHeh3tSWiR`K?MTTgy|D%Hkn zPW;`vccNk^_5zfSX78wY4N1`@*y*NP~UzP28 z9kJmJCj2N5xU_aLl?S!!6YLfmdR?VwpjlkGxRN=tiBN!Rh^7jcB&~<2PIAoXj+u=X38V&V)eUWbeUJD2@v5+3 zVX(tARCjzsG=(i}sw|fVvfI!)-@Ut`>Gj;%;tjv zt+d^v6IZeEm4y)zYr3B`k8wMpY3^R$?K7GZ^dPz`cHJ@KbC%jN{BhY^%G>Y)XJ~HC z9izfPY2%j+_y~~r=iQMWp>+EwoFfuAguK(Ru$aC5`q+!R@uhS$mn>vwEsK;Jel?S` zTpbGxzoX+75ZCeF0=K#&z0mP3$IXyoJ_0cE3f`L!H-4w6!rgl7nq?ff`GfEfJ^D%A zwVlg*FSPklG~tXeR-SwmF4L?o`0|0@U4HuaMy#`Zzgta0L1B(XSV{ z64J$4&*Umm34MQ}GrPqvxwN8osQ)#@+Ov$=O&Vh*-LwY*sPMBGZf{O*W|d4Tk9OX0 zzs&>vlp*=EP8S;TG2fXn0Q21~cUEwK8jtmKcqoerlbt!zq{7_J$%N5Bl)5%Zo|XZKyAFcP|HLvnx$tDhgpSg=+`Ee%aEqSK zK0PiS?ch#MSFfD^tbtwAk9Nf5vhZY#&3_WTY~@Nb@>fwhQ~teT11ka;I;*P5h>?Wd zI;if4AHkA$@5LOeP{nwe50)-AT)xZ)xqJ@<^ zujfjWGEY%oJ%WrOaC?ViQ#sdc5@u$Y9|1O>Qu|0^iwnKT3G^`G#^gw!^K~mrpTKL{ zLhhR_q`j?^NSx9Zp~{r>bP{v%fKirrl1JiiSJ#Gub}Ya!dI*p;Un3%L>-qQPcrnRC zN78lC;M{6ZRx}$x8P+fQn3BS%HL>dKR58@y=({Kw8>e%;`PJ1NfFlTDRw979u=LC0 zPcDBzBEVlxGNN*YI)Mp6t%Ws1!wdtr4T)zI#mj)u)xzBh!m|SG8tv7?$lb+Ln1LOn z<3j+N4(-YQV?FGr5y0eRN4Q4%G%F_UE!&lhDI;10oG$)xc_Yi@WprzP_2crg4FJ(jJh(9mCE||Su z-vCTcNCb%?5D#v@b}+nll4!Se+fm^WfEkCZ{l&fv!sKWtb!h$V3yJd+WeHtZ*7XpJ zyMo?;>N9Nzt33wck-4!#i;ay4lwb$vlh;q5; zx7^0zZ!>)buV5C++MUDw1r_p;B0WYXpg$KGxxcv24#1aj(W;ehbQ>e0H}J{)Wp-Nc zwJu_?DD*2>n>KI5#b~v^;nD|THi&1?-woCW+rQQ`SU!Pce5+BKQGVC-^Ed28Up?r! z&i$yV?LXkRzm!~ishhiv89|+!_gVn?&9QmKpX~aE8s_fo+N@k%WBfxT`H^SYTSQQA z%x|RfV01$p;usEOp+9vHakwMWaC-4=+wW0cuQhlsf@hpaA92s`%&p355UPx*O2cBsil_nV(KlK3r7MCCzj2o&eOGCA|r1zUhaf~d{T zyDqgEnj#1?seG9R6gKwvpZ(`ZF!UY4s^2y}W+pph4+|I8l_UQZG=r=AM%MfxfU8_Qh9}EahTJR%d zhu=N|z;ANM@=hQHsOrL))J?3?THLo}j2vTrLyfzbq8b`v z-nmqJTX(czJp>rj;(;w1jZ>>$zy0rl}bLa5|$G*maDp#j{mZ zRR{ho{m?s;nmDm%UKjHA;K88Nl^YY=w6L*+HhUQjz&;m7m|&9SQ)>Jkb1~-3Lm1CJF(tl5Lm4dk`;=a4;>c zebS8t&Il0w!BQ^a_3IjK?R1miGXij!k3NB}XM;Vaw8qlBOYJfTOD25hziXXbHrqucuNqc#21G~7U4+P#JSay4Pb(?_1On=0-{vgK9@AXGJI-A(&9~mdFQmfg;MIWR8rgSZSA|Iv z+-;}-ZKTWqfXy&80HJT?fR^{@Rk+39(`cM2{D4HHZU0Pl>a+Is>M9Br}m-}^> zDafN^0Gb*`g8;KWE@@|JxpJOw&FWIIO@4j4B$(1MLa-D;#0$`Hl>lp#D0}a2;Mh{l>5BV{PcG?Cs5C+(Gwb17= z_=k5oItr)+LkbRNeB4zzCoWf=W%@9oP1WQFqXU=V=TBOjIu8LH4QZ+R(J3ve@!G>H zFL&JS)65g^7)kGLNZF>idJfT#gI1ln#)SU}3SAg zDO4Rfk4^;0LKiTqd(cB1$d+QrwLL+)*kcW>o(|}zLbIG39vsWgQTahti~nI}HvgP~ zYyQA(cv4V=iSH)z-nuM zit3|CDpcXAdy?!^QSMMQOt_H4J2B*!Qm!Ry+{grF%K?X*GAiE?k+3B2%o|A3oYD&Y zB8XpMK>P>lL|vSL9*fF+Tv|D0&cMC}E~)iRQs>3jN;l?`^U`7{$bDY4xR}*#cIG~v z95GNH9xOq%r(_`x0TPQ$qZNibp;k#PbMZ$X6M3JB|MvX24}lMTUa$+YkOo@(C*|xA zueH~Op&Ok8DXzN$+cU6B&KZ`Y$~Y`ZgP%7fWdAf1!X8qywqF_&$BjjyYhY!_70tbg z>L&WK-`w6IaNd9p0H@UUb#ZT(^QILQ?(ehTQ@;~7zPb@Q_xAh9SFWw)H#pSo^BN z6x)5sf>aC0W=3=ppDI0TJFB`g1Y#Tkwb$>%xAr)fSKsx*z)BT(x+oRI9dX2b6!0_%`q7&NaC!`6^e^g_9!&T3u>?fJ`T|!u4QM}1PTcHtiP3P7+;gihz2D%_%a;Ld%hyt7 zIXbb>UilSXX<3lsW|OJJ34yLu_e9frEK|IZhBulw{rBVwU;@IlIn7RkRZ8yIU6IBv zyi87)1XN|SV1ow?;rztjcB!%V%}k#w69Va#yDX3`x2mRVV~>Y*sq*#BTxSE5zH5p8 zUxYuPSQ#D?BomK6X;xl^Cw%?$z8I@j+Amo*&jb<{FNUX<9-a|}B0+dHbd8f)r4V1F z`$dnhu9DE;=66h8C?=%t7bO@!{-=5y(t7{;=936;xC`bb(ryQ|LMs0XLgts~wlIKa zgIvI?zuqFCVJUfXb&atYbbH3i=E%^2$tJ4w!SdX$uLSwj`M}1%7RMppo+;C_?i33B zh1K_|8kS~i<8d>u;`TN+ND3kV+qpb)%v~}$0bF&Vq)48#t{ZUtM5bFwu2?+aRx&e<390?|7iVe))2XT7xfXIh%;(;uZjH_7^T&0wt{uzWzn#tVSK`8v z_W9&70{8l2;=x#6BFnp3)XS5$yG!Y#+4rkxIC-cs0QAUfvG?;cwH8*VAfr-b;}vG7 z+Qi90Czd{2Q+exwKc9ut`VK+6nEv^IN4!Qbg%0(h@)T;FEw3xlgSt>w5HBl9gUZl0 zB1&{KLN5Qv1Z<-~hNgP%wNq4Ru=>FgF6yi5i~b9t-MrtC4bSW)_Z8KH9^QzKtGI1j zu(M%(O6UCf3g1!Zq1&nk=hAr~lR4H&N)#Pt#~2CjT9k`d_&B0 zRs8)N3mTxEIIw!a?Fv#>E1fGAUV1w40(9E>wtJ(3u(Dt1HIU8N>0(Yvsp!2Hu5&6<EiR#OMlVqasf)^E zL>Y=oFpK|G5-yy1$8C=R31S<+3Gxp|AQEgIKtYa9-$bUDoHQar5Zt5eLC(n!8qi4Y-%|ng6{J-+ z(K&z-1!U=gNObWdjeo#JE58OGZzUZE2=Gw0);W>U`@JYgH&3Og7uze#1iFc|2tap) zIv(B=s|mGvzyv)K93oO1uw&kekpAJxKr#mrZyu$z1iwfS;S5A#-okxi@*45qR1Df= zxW!_;fdQxTQkt&+g7w1iwJ)oEboQhOKuyVN(sE}atDhCce&|dqutVsbbwAPC@b54qG z!6_kqcFbqJf6GdzgF5uTf@CxQr&8RYEECRP`@hi#Td!gxP1uh4|5NI&JXvvZaY$Q#*4Td(G`903yCO}zb$%757|Tdrnur&LDj1c^al^EN+CiG=t3*|XE7 z9n|-;0<6YN?Tu|sthbh$@~x+T;jymEeUQ)C^~52G3S#}UfD-4qaJ*YgPuOH=&>K_zu4H+w|JlM50lQsU(uKKOCRLM)2FS*R z?5%knmut%0D7RP!L>L>ukW7HY>}UK+d-i%USJBI}b)>t7f(1vA2fymfC3ESshRM18 zxzoQ^9w@lxkZS+z7SCVO5FZoV&I7DnPdG1t`&3v=k#zP!PF2>y!M&B3(BiS=7XdqM z&jRk93$nwA^@nCKkXe3=uNUnO1=!eHY8cdI>X`~Atgt{`ulb5ctBwSxnYufjovseS zw|Rxfq7Ay^yVV2Hh1A$q*oK61M0=v#PQ?Swk&+N`lS z<;UY4-!jSm9SNmC_bsN{${{D)Lx3X}**|WYC4(I)-mLLGZW^+MM?nNE09TdhVO(Fz zjL0#jO)@7H3ihRCtDh$9Lj>af`qi*ryfm47i6rqy5@p6k^UVg|@?cQDD_i=7;*s^} zPJL#>&+0&SkIA_gU3RFHMIME(c5Ny7gTr(aD=!XK2>A{c1%wqMiGifSt2Y4R2tpHk&s`4Oi7U1fXOZtmxh90z`!y>4a zv(j%96HE(xOP1G(_R{&8Go8aH%icGo-RiaLy|WcSdh|3N6NQRgn(*LHcWT0n2&X^b zr+NfE$#))Lz%dBFH~L+CfD|hzN!gz`yKh#q_RGFBeSiMt*8seQlX%06F=Vp%!J&{p z{5wexaD?6zoEt;NdUnUKWxmY<))8`y(Jp*1_?2NyMh?mcQB$8)53 z3dEsmk1!|x65Jl4e_vCd|7+#gUW(kI-=F&m@^2j)rU(w{0lIvwJFv#IS3H$$4JJS>V`Ou z8Q+ZqwSc{S>6k23V%auzyaieA&A6<;ogE`l=I?D^{KWJrnDIX%C<84}u8*(@HrXll z?Rk`tnvCFa=zoU~5}J~6A)CblE!LNz@Qb|XV_;ZV;ueYNVeCH3Zg zd+H5Fo1#0uhaJxRnSWL*NYj5udUHGTDfq}{>)dL%ancPXjxBsr6YDv&TlqmRI$vAI+s*E{(5_J{_lOQ6fR<4}}521zu7q1W& z$05#68ivbOW`Id1qjuY+jAc>lx8t=}Cb&-4wz%G3Cn#$dUUtsDeqh_z=zE)MmT(STA{IB{?g?t{*ADy}&Px+DNfuoV2wfB_Z zbRSj6)D;jNz#1>J*#p1zq8<3DKt-7D3RF3pQ2#D=v8`q`MZjWrZh8{=omb)cB>|ft zF}KjXlE0xP0e?Jt{cSflf=qD_Oiv+x<(;~BKD@C$@?f2;HaoEDaZR92eCuvy4?ftq zVCBJ8+|qHDMJMgh%inLVdaguJOTFFr`CR+)!4lip9ojt+@aP&nm_17y7|Q>6WtH7& zO>vywQdRigbq&aSB3wU#B6=lIR5vlK*B6$#CLO%9|A7ypF1F9FYh=1&#(Hpf|JB$d zrW#CbV2YbM*ufx6L^w>Vkq%N&(hz6y;EId3r!>q=$t+)sMD|B9VF`ut6BLr4e!N|7OzbTJs4S0 z;5gL%lln3Hr!54$Ln~g>ID%Fxvny23`i_r1 zV3b~^f-ca>NT}TQ@J;;R4`bxzvPV|GcVseoLmr6k;A-Do*uW6+Y1O;)I+OKYooWzg|Dm&WdRoT8?V|PNj&|Yvkv9MhM>C{E^WGZPXlsx_-^{%Jx zYC5x&Fipi+A>r%3I3AwB>ZAdiS_O|3Y8QzSVNIl&r}N>~pJb!)C1{g8DJRn}cDD&! z2AZ{QUAD@rqq!TQ#{>J@Uo?JgxssyNjkj4kAQPif<&=G!Q)jri0daY(m&p(Q48HUh?N3|DnmJcajb!8b; zPU-DGxA4S_1Z`AiBlP_37J^C}`+f7)km|xAk4QC1fBqU|VvNn`oJw3}IFM+FVS8bknqFHMg*!BW@8dqDM;?utI zgc@2gu~~8{7WHY?tn_pxbq5dA@QfKweC3ZpsUQXbO;nhWDB91Y+bM~B^FVK`ul74x8&aRX{4=ZS$}R7>>`Nu(ocntn<|ejk z`i-=ogwt{*UNRfHuDtsE9)aZw-i!a%JrhqK;tjukSWQKRy?M5EDzIyq0g017$aK9U z!~!#;xhMINdMh-*mUIDc0KZya)ia91O>wA&!fOnrL+MlvGckK1kRE0Y>#flO%)MS4 z7@*)#Fs=9hWQFkQKYI9oFQkgwGs)_!!hG@xWjY{CIMK}slfU8pq<5A5eao zKA6q;GWxMUD1SeHUPEeWg}+x(W?opE57N<6JG?aM_e%|f0iv}E+5oi9XW9$8%-j^? z_$lsP@OhJJ-Xs4})b`uppyRihg@;>f-5h_pX+>f~?3JHiz?npJTTh0hTm;y$#?E;SKF4VTRNF7@h_s_-Adw>eAc z6Z?;ubqRkk{33xl`^L829{qJRLM!rW9);W1*Dxybemqk_tg~v6fx9{0K&!eAj zw?5Ky`(<|U{8{}E!B4)-?X!PT2ik~W<+1%|9(qSIj?Qkkb*sM%AT!d8secdFd$*HD zx7uF&t2z2XTlx=Y-!G%ivPLUu7$i0nU25@y^W=7qdiyrVO~LYUjY~R#^B+V+DN8aK~|9NBcb&$@c(}ou#|`Yi(wx!0^QgChCb+>wp*Wxv;fiIo2%t# z_nR$%>GRFBGt^IZjI~B{uLue47!r4PtnM$L*(2<8>3~*h($N_^9%6{oxH;inulkLO zE~O>*wC#KsiM@4o?n&Ek`;T>tg1_EOJN9Gd;+xT2sdPQQyWzMA=6NFDlSyAQ)+Mv7 z;Dk`}?EUSB_C)hg!N*GW1tB|s*4Jy4CPGbI(@aL4N49zB%7TOV5xZn0BQU!i6>n@7 ROSwt}hPp;NC0Y*Q{|hqGssjK3 literal 0 HcmV?d00001 From d597b0416dfcbc15f71b4a449aacfaed7df5e092 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 15:28:38 +0200 Subject: [PATCH 27/42] Docs moved from Foundations --- .../Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json | 0 .../T/Trading/Trading-Engine/trading-engine.json | 0 .../Docs-Nodes/T/Trading/Trading-Mine/trading-mine.json | 0 .../T/Trading/Trading-System/trading-system.json | 0 .../UI/Function-Libraries/UiObjectsFromNodes.js | 9 +++++++++ .../Docs-Nodes/L/Learning/Learning-Bot/learning-bot.json | 0 .../L/Learning/Learning-Mine/learning-mine.json | 0 .../L/Learning/Learning-System/learning-system.json | 0 8 files changed, 9 insertions(+) rename Projects/{Foundations => Algorithmic-Trading}/Schemas/Docs-Nodes/T/Trading/Trading-Bot/trading-bot.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Schemas/Docs-Nodes/T/Trading/Trading-Engine/trading-engine.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Schemas/Docs-Nodes/T/Trading/Trading-Mine/trading-mine.json (100%) rename Projects/{Foundations => Algorithmic-Trading}/Schemas/Docs-Nodes/T/Trading/Trading-System/trading-system.json (100%) rename Projects/{Foundations => Machine-Learning}/Schemas/Docs-Nodes/L/Learning/Learning-Bot/learning-bot.json (100%) rename Projects/{Foundations => Machine-Learning}/Schemas/Docs-Nodes/L/Learning/Learning-Mine/learning-mine.json (100%) rename Projects/{Foundations => Machine-Learning}/Schemas/Docs-Nodes/L/Learning/Learning-System/learning-system.json (100%) 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/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index 7043b518a..25d6fb185 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -463,6 +463,15 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { 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' || 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 From 215ec526a164f7c422359057c87b5c2ae19e386d Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 15:40:35 +0200 Subject: [PATCH 28/42] ML Plugins fixed --- .../Schemas/App-Schema/plugin-learning-engines.json | 4 +++- .../Schemas/App-Schema/plugin-learning-mines.json | 4 +++- .../Schemas/App-Schema/plugin-learning-systems.json | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json index e436c13f6..024892155 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json @@ -7,7 +7,9 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Learning Engine", + "iconPathOn": "learning-engine", + "iconPathOff": "learning-engine", + "iconProject": "Machine-Learning", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json index 1fbe71833..b807e879a 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json @@ -7,7 +7,9 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Learning Mine", + "iconPathOn": "learning-mine", + "iconPathOff": "learning-mine", + "iconProject": "Machine-Learning", "actionFunction": "payload.executeAction" }, { diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json index e73b6cd87..f1279f14d 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json @@ -7,7 +7,9 @@ "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", - "relatedUiObject": "Learning System", + "iconPathOn": "learning-system", + "iconPathOff": "learning-system", + "iconProject": "Machine-Learning", "actionFunction": "payload.executeAction" }, { From c7db94c63ab1a8b7e9e8d07bea9d18120d610fda Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 15:49:48 +0200 Subject: [PATCH 29/42] Plugins Moved --- .../Plugins/Learning-Engines/Low-Frequency.json | 0 .../Plugins/Learning-Mines/Masters.json | 0 .../Plugins/Learning-Systems/Sandbox.json | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename Projects/{Foundations => Machine-Learning}/Plugins/Learning-Engines/Low-Frequency.json (100%) rename Projects/{Foundations => Machine-Learning}/Plugins/Learning-Mines/Masters.json (100%) rename Projects/{Foundations => Machine-Learning}/Plugins/Learning-Systems/Sandbox.json (100%) 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 From 1218ff377da96e05de69ebc226bd186d5509dd19 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 17:03:13 +0200 Subject: [PATCH 30/42] Missing Action Project --- .../Schemas/App-Schema/plugin-api-maps.json | 3 ++- .../Schemas/App-Schema/plugin-data-mines.json | 3 ++- .../Schemas/App-Schema/plugin-file.json | 12 ++++++++---- .../Schemas/App-Schema/plugin-learning-engines.json | 3 ++- .../Schemas/App-Schema/plugin-learning-mines.json | 3 ++- .../Schemas/App-Schema/plugin-learning-systems.json | 3 ++- .../Schemas/App-Schema/plugin-project.json | 3 ++- .../Schemas/App-Schema/plugin-trading-engines.json | 3 ++- .../Schemas/App-Schema/plugin-trading-mines.json | 3 ++- .../Schemas/App-Schema/plugin-trading-systems.json | 3 ++- .../Schemas/App-Schema/plugin-tutorials.json | 3 ++- .../Schemas/App-Schema/plugins.json | 3 ++- .../UI/Function-Libraries/PluginsFunctions.js | 6 +++--- .../UI/Function-Libraries/UiObjectsFromNodes.js | 6 +++--- 14 files changed, 36 insertions(+), 21 deletions(-) diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-api-maps.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-api-maps.json index 207cde2d5..ebe81c9a8 100644 --- a/Projects/Community-Plugins/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", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json index b84e59308..841ace1bc 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-data-mines.json @@ -10,7 +10,8 @@ "iconPathOn": "data-mine", "iconPathOff": "data-mine", "iconProject": "Data-Mining", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json index aefb2ba77..96f6a4501 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-file.json @@ -15,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", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json index 024892155..810b34ef9 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-engines.json @@ -10,7 +10,8 @@ "iconPathOn": "learning-engine", "iconPathOff": "learning-engine", "iconProject": "Machine-Learning", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json index b807e879a..db072d708 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-mines.json @@ -10,7 +10,8 @@ "iconPathOn": "learning-mine", "iconPathOff": "learning-mine", "iconProject": "Machine-Learning", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json index f1279f14d..56f236216 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-learning-systems.json @@ -10,7 +10,8 @@ "iconPathOn": "learning-system", "iconPathOff": "learning-system", "iconProject": "Machine-Learning", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json index b4f39f5c6..2ba4668f7 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-project.json @@ -13,7 +13,8 @@ "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", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json index 695977ab2..0c19d38a4 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-engines.json @@ -10,7 +10,8 @@ "iconPathOn": "trading-engine", "iconPathOff": "trading-engine", "iconProject": "Algorithmic-Trading", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json index a1c864624..9ca446ab8 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-mines.json @@ -10,7 +10,8 @@ "iconPathOn": "trading-mine", "iconPathOff": "trading-mine", "iconProject": "Algorithmic-Trading", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json index c79a28a2e..0195fd6fe 100644 --- a/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json +++ b/Projects/Community-Plugins/Schemas/App-Schema/plugin-trading-systems.json @@ -10,7 +10,8 @@ "iconPathOn": "trading-system", "iconPathOff": "trading-system", "iconProject": "Algorithmic-Trading", - "actionFunction": "payload.executeAction" + "actionFunction": "payload.executeAction", + "actionProject": "Community-Plugins" }, { "action": "Delete UI Object", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugin-tutorials.json b/Projects/Community-Plugins/Schemas/App-Schema/plugin-tutorials.json index f2338a322..bd34dc710 100644 --- a/Projects/Community-Plugins/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", diff --git a/Projects/Community-Plugins/Schemas/App-Schema/plugins.json b/Projects/Community-Plugins/Schemas/App-Schema/plugins.json index 8f68f4ba4..7ec46df76 100644 --- a/Projects/Community-Plugins/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", diff --git a/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js index d2c010698..a13088a57 100644 --- a/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js +++ b/Projects/Community-Plugins/UI/Function-Libraries/PluginsFunctions.js @@ -125,7 +125,7 @@ function newPluginsFunctionLibraryPluginsFunctions() { UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Mines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Mines', 'Learning Mine', 'Machine-Learning') } } @@ -141,7 +141,7 @@ function newPluginsFunctionLibraryPluginsFunctions() { UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Systems', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Systems', 'Learning System', 'Machine-Learning') } } @@ -157,7 +157,7 @@ function newPluginsFunctionLibraryPluginsFunctions() { UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Learning-Engines', onNamesArrived) function onNamesArrived(fileNames) { - UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine', 'Foundations') + UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Learning-Engines', 'Learning Engine', 'Machine-Learning') } } diff --git a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js index 25d6fb185..3b4ad930c 100644 --- a/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js +++ b/Projects/Foundations/UI/Function-Libraries/UiObjectsFromNodes.js @@ -84,9 +84,6 @@ function newFoundationsFunctionLibraryUiObjectsFromNodes() { totalPlugin = totalPlugin + project.pluginTradingEngines.pluginFiles.length pluginAllTheseFiles(project.pluginTradingEngines.pluginFiles, 'Trading-Engines') } - /* - Foundations Plugin Types - */ if (project.pluginLearningMines !== undefined) { totalPlugin = totalPlugin + project.pluginLearningMines.pluginFiles.length pluginAllTheseFiles(project.pluginLearningMines.pluginFiles, 'Learning-Mines') @@ -99,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') From c2bd990c9d79a9673aca0c3c1558cb3ba423ef54 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 19:32:07 +0200 Subject: [PATCH 31/42] Bug Fixed with Action Project --- Projects/Foundations/UI/Function-Libraries/ActionSwitch.js | 2 +- .../Machine-Learning/Schemas/App-Schema/learning-mine.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index e66088a46..9ac877f93 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': diff --git a/Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json b/Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json index 24b9b91bb..989b24cdc 100644 --- a/Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json +++ b/Projects/Machine-Learning/Schemas/App-Schema/learning-mine.json @@ -21,6 +21,7 @@ "action": "Add UI Object", "label": "Add Plotter", "relatedUiObject": "Plotter", + "relatedUiObjectProject": "Foundations", "actionFunction": "payload.executeAction", "actionProject": "Foundations" }, @@ -56,7 +57,7 @@ "name": "plotters", "type": "array", "childType": "Plotter", - "project": "Algorithmic-Trading" + "project": "Foundations" } ] } \ No newline at end of file From 36c26570ac9a7369eb43b83c59426eb66ef85b34 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 29 Sep 2021 19:47:35 +0200 Subject: [PATCH 32/42] Update Getting-Started-Tutorials.json --- .../Workspaces/Getting-Started-Tutorials.json | 369 +++++++++++++++--- 1 file changed, 310 insertions(+), 59 deletions(-) diff --git a/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json b/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json index a6eb574dc..4640f55fb 100644 --- a/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json +++ b/Projects/Foundations/Plugins/Workspaces/Getting-Started-Tutorials.json @@ -744,17 +744,17 @@ "id": "588e6946-31d9-4389-8cf2-37715795ba4d" }, "referenceParentCombinedNodePath": [ - [ - "Getting Started Tutorials", - "Workspace" - ], [ "New Data-Mining Project", - "Data-Mining Project" + "Data-Mining Project", + "Data-Mining", + "c80ac0bd-1c21-4e7c-b4b8-020e212bd6f4" ], [ "Data-Mining", - "Project Definition" + "Project Definition", + "Foundations", + "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" ] ] } @@ -1703,17 +1703,17 @@ "id": "159d6c95-233b-4d79-8fe0-b1d75d40f90b" }, "referenceParentCombinedNodePath": [ - [ - "Getting Started Tutorials", - "Workspace" - ], [ "New Algorithmic-Trading Project", - "Algorithmic-Trading Project" + "Algorithmic-Trading Project", + "Algorithmic-Trading", + "96734230-bb91-4527-b2a9-e2f16eb0be96" ], [ "Algorithmic-Trading", - "Project Definition" + "Project Definition", + "Foundations", + "159d6c95-233b-4d79-8fe0-b1d75d40f90b" ] ] } @@ -10732,7 +10732,7 @@ "floatingObject": { "isPinned": true, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -57998,7 +57998,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -58101,8 +58101,8 @@ "id": "9e34391d-8a7f-465d-aaae-d1aab31d27af", "savedPayload": { "position": { - "x": 37514.19161419073, - "y": 10951.638658800908 + "x": 37536.75434110439, + "y": 10920.994621131626 }, "targetPosition": { "x": 37284.378281255034, @@ -58129,8 +58129,8 @@ "id": "005d0fc0-5d81-4607-856b-32bcb1665b64", "savedPayload": { "position": { - "x": 37336.472734555115, - "y": 11054.244701798609 + "x": 37409.0027851556, + "y": 11031.691974501302 }, "targetPosition": { "x": 37284.378281255034, @@ -58157,8 +58157,8 @@ "id": "bddb8fdb-f325-4615-a828-9935d37583ad", "savedPayload": { "position": { - "x": 37134.378281255034, - "y": 11018.609997030277 + "x": 37241.68382977305, + "y": 11055.748808459226 }, "targetPosition": { "x": 37284.378281255034, @@ -58185,8 +58185,8 @@ "id": "d6649bf0-8e12-456a-a2d0-a7d4617f6843", "savedPayload": { "position": { - "x": 37002.47049501926, - "y": 10861.408418892646 + "x": 37087.92006107145, + "y": 10985.527248201222 }, "targetPosition": { "x": 37284.378281255034, @@ -58213,8 +58213,8 @@ "id": "e72188be-7474-4a0d-85c1-413810bfa807", "savedPayload": { "position": { - "x": 37002.47049501926, - "y": 10656.196332897245 + "x": 36996.530389170686, + "y": 10843.322142947374 }, "targetPosition": { "x": 37284.378281255034, @@ -58241,8 +58241,8 @@ "id": "5614b71b-9e5f-42b0-a6fb-6322564623ea", "savedPayload": { "position": { - "x": 37134.378281255034, - "y": 10498.994754759615 + "x": 36996.530389170686, + "y": 10674.282608842517 }, "targetPosition": { "x": 37284.378281255034, @@ -58269,8 +58269,8 @@ "id": "624a4851-e3d8-411f-8ac3-b1418516f30d", "savedPayload": { "position": { - "x": 37336.472734555115, - "y": 10463.360049991283 + "x": 37087.92006107145, + "y": 10532.077503588669 }, "targetPosition": { "x": 37284.378281255034, @@ -58297,8 +58297,8 @@ "id": "b41eaa84-a3bc-44fc-8199-48cc117cbd27", "savedPayload": { "position": { - "x": 37514.19161419073, - "y": 10565.966092988983 + "x": 37241.68382977305, + "y": 10461.855943330665 }, "targetPosition": { "x": 37284.378281255034, @@ -58316,6 +58316,202 @@ "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": "Community-Plugins", + "pluginFiles": [], + "id": "cab27915-c4e9-44c7-94d6-e3d20ed0e382", + "savedPayload": { + "position": { + "x": 37522.47976635727, + "y": 10296.949928903363 + }, + "targetPosition": { + "x": 37536.75434110439, + "y": 10596.610130658266 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "pluginApiMaps": { + "type": "Plugin API Maps", + "name": "New Plugin API Maps", + "project": "Community-Plugins", + "pluginFiles": [], + "id": "7ad3f24a-38e4-4f33-a7e1-0d06121c09d0", + "savedPayload": { + "position": { + "x": 37803.40497570086, + "y": 10734.07808717649 + }, + "targetPosition": { + "x": 37536.75434110439, + "y": 10596.610130658266 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "b5c1cb14-d645-4ca5-b34b-553646f65cf4", + "savedPayload": { + "position": { + "x": 37536.75434110439, + "y": 10596.610130658266 + }, + "targetPosition": { + "x": 37284.378281255034, + "y": 10758.802375894946 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": true, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } } ], "id": "bfb0b514-3b9f-4e9a-85ca-d0ca714b09f6", @@ -58600,12 +58796,12 @@ "id": "cf9f8b3b-77c6-43c6-b01f-95cf366a91f6", "savedPayload": { "position": { - "x": 4320.75, - "y": 30833.453560371516 + "x": 4260.875, + "y": 40334.982972136226 }, "targetPosition": { - "x": 4320.75, - "y": 30833.453560371516 + "x": 4260.875, + "y": 40334.982972136226 }, "floatingObject": { "isPinned": true, @@ -62370,11 +62566,11 @@ "referenceParent": { "type": "Workspace", "name": "Getting-Started-Tutorials", - "id": "ba8d157b-86e8-43e6-900d-97909ca0048b" + "id": "c6f0d16a-c053-4794-9066-0fbed2ad370d" }, "referenceParentCombinedNodePath": [ [ - "Getting Started Tutorials", + "Getting-Started-Tutorials", "Workspace" ] ] @@ -69973,6 +70169,61 @@ "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 From 77624f63c710275f3e02047ba45f57042fe56a83 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 30 Sep 2021 10:30:09 +0200 Subject: [PATCH 33/42] My Workspaces folder moved --- Environment.js | 2 +- EnvironmentForDebug.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Environment.js b/Environment.js index 46b8073f9..a042eaf5b 100644 --- a/Environment.js +++ b/Environment.js @@ -11,7 +11,7 @@ exports.newEnvironment = function () { 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 4bc261afd..5d7671aa7 100644 --- a/EnvironmentForDebug.js +++ b/EnvironmentForDebug.js @@ -16,7 +16,7 @@ exports.newEnvironment = function () { 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' } From c82a2b96abd9501613cdb0398e0057107712fe8f Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 30 Sep 2021 10:44:44 +0200 Subject: [PATCH 34/42] Actions moved to Education Project --- .../UI/Function-Libraries/ActionSwitch.js | 26 +++++++++++++ .../UI/Function-Libraries/ActionSwitch.js | 26 +++++++++++++ .../Schemas/App-Schema/tutorial-step.json | 4 +- .../Schemas/App-Schema/tutorial-topic.json | 4 +- .../Schemas/App-Schema/tutorial.json | 6 +-- .../UI/Function-Libraries/ActionSwitch.js | 38 +++++++++++++++++-- .../UI/Function-Libraries/ActionSwitch.js | 36 +----------------- .../UI/Function-Libraries/ActionSwitch.js | 26 +++++++++++++ 8 files changed, 121 insertions(+), 45 deletions(-) create mode 100644 Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js create mode 100644 Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js create mode 100644 Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js 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..03bf636ca --- /dev/null +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,26 @@ +function newEducationActionSwitch() { + + 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 'Action Name': { + // Example: return UI.projects.foundations.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) + } + } + } +} 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..03bf636ca --- /dev/null +++ b/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,26 @@ +function newEducationActionSwitch() { + + 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 'Action Name': { + // Example: return UI.projects.foundations.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) + } + } + } +} 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/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 9ac877f93..6177ceb46 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -538,41 +538,7 @@ 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) 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..03bf636ca --- /dev/null +++ b/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,26 @@ +function newEducationActionSwitch() { + + 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 'Action Name': { + // Example: return UI.projects.foundations.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) + } + } + } +} From 68bb87936a06aeb20b8ff06e421e2f56284e80e8 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 30 Sep 2021 10:49:08 +0200 Subject: [PATCH 35/42] Actions Moved to Machine-Learning --- .../App-Schema/back-learning-session.json | 6 ++++-- .../App-Schema/live-learning-session.json | 6 ++++-- .../UI/Function-Libraries/ActionSwitch.js | 15 --------------- .../UI/Function-Libraries/ActionSwitch.js | 18 +++++++++++++++--- 4 files changed, 23 insertions(+), 22 deletions(-) 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/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/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 6177ceb46..174d4f483 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -559,21 +559,6 @@ function newFoundationsActionSwitch() { UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.stopSession(action.node, action.callBackFunction) } break - 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 case 'Run Super Action': { UI.projects.foundations.functionLibraries.superScriptsFunctions.runSuperScript(action.node, action.rootNodes) diff --git a/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js b/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js index 03bf636ca..e417e8bf5 100644 --- a/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js @@ -18,9 +18,21 @@ function newEducationActionSwitch() { async function executeAction(action) { switch (action.name) { - case 'Action Name': { - // Example: return UI.projects.foundations.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) - } + 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 } } } From 0eb238551c3fe209090ef141188cf59bcba35387 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 30 Sep 2021 11:00:56 +0200 Subject: [PATCH 36/42] More actions moved out from Foundations to their projects --- .../UI/Function-Libraries/ActionSwitch.js | 18 +++++++++-- .../UI/Function-Libraries/ActionSwitch.js | 18 +++++++++-- .../App-Schema/backtesting-session.json | 6 ++-- .../data-mine-data-dependencies.json | 3 +- .../App-Schema/forward-testing-session.json | 6 ++-- .../App-Schema/live-trading-session.json | 6 ++-- .../App-Schema/paper-trading-session.json | 6 ++-- .../App-Schema/process-dependencies.json | 3 +- .../Schemas/App-Schema/process-output.json | 3 +- .../UI/Function-Libraries/ActionSwitch.js | 30 ------------------- 10 files changed, 52 insertions(+), 47 deletions(-) diff --git a/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js b/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js index 03bf636ca..bbbfa98a0 100644 --- a/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js @@ -18,9 +18,21 @@ function newEducationActionSwitch() { async function executeAction(action) { switch (action.name) { - case 'Action Name': { - // Example: return UI.projects.foundations.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) - } + 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/Data-Mining/UI/Function-Libraries/ActionSwitch.js b/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js index 03bf636ca..b9e671c27 100644 --- a/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js @@ -18,9 +18,21 @@ function newEducationActionSwitch() { async function executeAction(action) { switch (action.name) { - case 'Action Name': { - // Example: return UI.projects.foundations.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) - } + 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/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-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-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/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 174d4f483..333c3ba5a 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -418,11 +418,6 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.cryptoEcosystemFunctions.uninstallMarket(action.node, action.rootNodes) } break - case 'Add All Output Datasets': - { - UI.projects.dataMining.functionLibraries.mineFunctions.addAllOutputDatasets(action.node) - } - break case 'Add All Data Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addAllDataProducts(action.node) @@ -498,16 +493,6 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingProjectDataProducts(action.node, action.rootNodes) } 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 case 'Add All Layer Panels': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addAllLayerPanels(action.node) @@ -544,21 +529,6 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.webhookFunctions.sendTestMessage(action.node, action.callBackFunction) } break - 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 case 'Run Super Action': { UI.projects.foundations.functionLibraries.superScriptsFunctions.runSuperScript(action.node, action.rootNodes) From b84ad7aae6a3178e840daf9c50ac202a03c603f9 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 30 Sep 2021 11:02:38 +0200 Subject: [PATCH 37/42] Update ActionSwitch.js --- Projects/Foundations/UI/Function-Libraries/ActionSwitch.js | 1 - 1 file changed, 1 deletion(-) diff --git a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js index 333c3ba5a..58f302e07 100644 --- a/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Foundations/UI/Function-Libraries/ActionSwitch.js @@ -523,7 +523,6 @@ function newFoundationsActionSwitch() { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addMissingProjectDashboards(action.node, action.rootNodes) } break - case 'Send Webhook Test Message': { UI.projects.foundations.functionLibraries.webhookFunctions.sendTestMessage(action.node, action.callBackFunction) From 22d4ad532d611acccaf96af76e845176efcf42f0 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 3 Oct 2021 11:29:00 +0200 Subject: [PATCH 38/42] Bug Fixed with Time Frame Filters --- Projects/Foundations/UI/Function-Libraries/TaskFunctions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js index 178194514..bed053755 100644 --- a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js +++ b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js @@ -110,10 +110,10 @@ function newFoundationsFunctionLibraryTaskFunctions() { let taskLightingPath = '->Task->' + 'Sensor Bot Instance->' + 'API Data Fetcher Bot Instance->' + - 'Indicator Bot Instance->Time Frames Filter->' + + 'Indicator Bot Instance->' + 'Trading Bot Instance->' + 'Learning Bot Instance->' + - 'Sensor Process Instance->API Data Fetcher Process Instance->Indicator Process Instance->Trading Process Instance->Learning Process Instance->' + + 'Sensor Process Instance->Time Frames Filter->API Data Fetcher Process Instance->Indicator Process Instance->Trading Process Instance->Learning Process Instance->' + 'Execution Started Event->' + 'Key Reference->Exchange Account Key->' + 'Task Manager->' + From 89fdec328f08a499e25bc28fcf1ad7b1c7932b67 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 11:17:07 +0200 Subject: [PATCH 39/42] Action Switches Fixed --- .../Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js | 2 +- Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js | 2 +- Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js b/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js index bbbfa98a0..c45e2c3fb 100644 --- a/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/ActionSwitch.js @@ -1,4 +1,4 @@ -function newEducationActionSwitch() { +function newAlgorithmicTradingActionSwitch() { let thisObject = { executeAction: executeAction, diff --git a/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js b/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js index b9e671c27..9a00f8ac1 100644 --- a/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Data-Mining/UI/Function-Libraries/ActionSwitch.js @@ -1,4 +1,4 @@ -function newEducationActionSwitch() { +function newDataMiningActionSwitch() { let thisObject = { executeAction: executeAction, diff --git a/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js b/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js index e417e8bf5..a03c5d97f 100644 --- a/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Machine-Learning/UI/Function-Libraries/ActionSwitch.js @@ -1,4 +1,4 @@ -function newEducationActionSwitch() { +function newMachineLearningActionSwitch() { let thisObject = { executeAction: executeAction, From 259396c20568ac1c4c86eeae0ab940b61fa5049e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 11:49:51 +0200 Subject: [PATCH 40/42] conflicts Project Schema Solved --- Projects/ProjectsSchema.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 3c6cb5d05..ae089280b 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -774,6 +774,13 @@ "functionName": "newFoundationsBotModulesSlackBot", "fileName": "SlackBot.js", "folderName": "Trading-Bot/Announcements" + }, + { + "name": "Twitter Bot", + "propertyName": "twitterBot", + "functionName": "newFoundationsBotModulesTwitterBot", + "fileName": "TwitterBot.js", + "folderName": "Trading-Bot/Announcements" } ] }, From b3d9a3cc80cf28162cd831ab657deb4dcae536ad Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:28:38 +0200 Subject: [PATCH 41/42] conflicts on file CircularMenuItem.js solved --- .../UI/Spaces/Floating-Space/CircularMenuItem.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js b/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js index 81cb8a5f3..9f4a3e5d8 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js @@ -111,6 +111,10 @@ function newCircularMenuItem() { iconPhysics() + if (thisObject.icon === undefined) { + console.log('[ERROR] newCircularMenuItem -> initialize -> err = Icon not found, Action: "' + thisObject.action + '", relatedUiObject: "' + thisObject.relatedUiObject +'", label: "' + thisObject.label + '"') + } + selfMouseOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) selfMouseClickEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseClick', onMouseClick) selfMouseNotOverEventSubscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseNotOver', onMouseNotOver) @@ -495,6 +499,10 @@ function newCircularMenuItem() { iconSize = UI.projects.foundations.spaces.floatingSpace.style.node.menuItem.imageSize } + if (thisObject.icon === undefined) { + thisObject.icon = UI.projects.foundations.spaces.designSpace.getIconByProjectAndName('Foundations', 'missing-image') + } + if (thisObject.icon !== undefined) { if (thisObject.icon.canDrawIcon === true && thisObject.currentRadius > 1 && thisObject.isDeployed === true) { browserCanvasContext.drawImage(thisObject.icon, menuPosition.x - iconSize, menuPosition.y - iconSize, iconSize * 2, iconSize * 2) From c6748a84665f6a307f087f0dd97728b02c2055a6 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:34:08 +0200 Subject: [PATCH 42/42] conflicts on file trading and learning session functions solved --- .../UI/Function-Libraries/TradingSessionFunctions.js | 2 +- .../UI/Function-Libraries/LearningSessionFunctions.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js index 078044e5d..657af61b0 100644 --- a/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js +++ b/Projects/Algorithmic-Trading/UI/Function-Libraries/TradingSessionFunctions.js @@ -155,7 +155,7 @@ function newAlgorithmicTradingFunctionLibraryTradingSessionFunctions() { '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->' + + 'Social Bots->Telegram Bot->Discord Bot->Slack Bot->Twitter Bot->' + 'Social Bot Command->Formula->' + 'Exchange Account Asset->Asset->' diff --git a/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js b/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js index b8440de23..878656d4d 100644 --- a/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js +++ b/Projects/Machine-Learning/UI/Function-Libraries/LearningSessionFunctions.js @@ -131,7 +131,7 @@ function newMachineLearningFunctionLibraryLearningSessionFunctions() { '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->' + '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)