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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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 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 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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/73] 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 e98fb2063a84cfde89bd826043d661c74b7ed558 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 11:41:58 +0200 Subject: [PATCH 40/73] This is my contribution to Superalgos --- .../Token-Power-Switch/token-power-switch.json | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Nodes/T/Token/Token-Power-Switch/token-power-switch.json b/Projects/Governance/Schemas/Docs-Nodes/T/Token/Token-Power-Switch/token-power-switch.json index 3070ba9fa..37702aafa 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/T/Token/Token-Power-Switch/token-power-switch.json +++ b/Projects/Governance/Schemas/Docs-Nodes/T/Token/Token-Power-Switch/token-power-switch.json @@ -2,7 +2,14 @@ "type": "Token Power Switch", "definition": { "text": "The concept of a switch may be used throughout the different programs in the User Profile hierarchy. A switch is a device used to distribute the flow of Token Power to offspring nodes. In the case of the Token Power Switch, it is the sole offspring node of the User Profile hierarchy used to distribute Token Power to the different programs.", - "updated": 1630094625909 + "updated": 1630094625909, + "translations": [ + { + "language": "ES", + "text": "El concepto de un interruptor puede usarse a través de diferentes programas en la jearquía en el User Profile. Un interruptor es un dispsitivo usado para contribuir en el flujo del Token Power a los nodos de la descendencia. En el caso del Token Power Switch, es el único nodo descendiente de la jerarquía del User Profile usada para distribuir Token Power a los diferentes programas.", + "updated": 1633513107006 + } + ] }, "paragraphs": [ { @@ -13,7 +20,14 @@ { "style": "Note", "text": "Most nodes in the hierarchy act as switches, even when their name does not include the word switch!", - "updated": 1630094810003 + "updated": 1630094810003, + "translations": [ + { + "language": "ES", + "text": "La mayoría de los nodos de la jerarquía actúan como interruptores, aún cuando su nombre no incluya la palabra interruptor!", + "updated": 1633513212883 + } + ] }, { "style": "Block", From 259396c20568ac1c4c86eeae0ab940b61fa5049e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 11:49:51 +0200 Subject: [PATCH 41/73] 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 0fd12e1f1abf90d077e03fe3cdbe15af721ae8a9 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 12:24:17 +0200 Subject: [PATCH 42/73] This is my contribution to Superalgos --- .../onboarding-programs.json | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Nodes/O/Onboarding/Onboarding-Programs/onboarding-programs.json b/Projects/Governance/Schemas/Docs-Nodes/O/Onboarding/Onboarding-Programs/onboarding-programs.json index e1b3a9d30..93ccbdca4 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/O/Onboarding/Onboarding-Programs/onboarding-programs.json +++ b/Projects/Governance/Schemas/Docs-Nodes/O/Onboarding/Onboarding-Programs/onboarding-programs.json @@ -2,7 +2,14 @@ "type": "Onboarding Programs", "definition": { "text": "These programs incentivize Superalgos users to take the first couple of steps to participate in governance and start giving back to the project. They make earning the first few tokens a breeze and allow everyone to become invested in the Superalgos SA Token! We are talking about the Airdrop Program and the Github Program.", - "updated": 1630216446725 + "updated": 1630216446725, + "translations": [ + { + "language": "ES", + "text": "Estos programas incentivan a los usuarios de Superalgos a realizar los primeros pasos para participar en la gorvernanza y comenzar a devolver al proyecto. Ellos hacen ganar los primeros pocos token como una brisa y permite que todos se involucren en los Superalgos SA Token! Estamos hablando del the Airdrop Program y el Github Program.", + "updated": 1633515446793 + } + ] }, "paragraphs": [ { @@ -13,16 +20,37 @@ { "style": "Success", "text": "Learn more about how Token Power Flows into these programs!", - "updated": 1630228322651 + "updated": 1630228322651, + "translations": [ + { + "language": "ES", + "text": "Aprende más a cerca de como fluye el Token Power Flows dentro de los programas!", + "updated": 1633515500934 + } + ] }, { "style": "Text", - "text": "What these two programs have in common is that they don't require Token Power to function. That is, even if you have zero Superalgos SA Tokens and zero Delegated Power, you may still participate to earn your first few tokens!" + "text": "What these two programs have in common is that they don't require Token Power to function. That is, even if you have zero Superalgos SA Tokens and zero Delegated Power, you may still participate to earn your first few tokens!", + "translations": [ + { + "language": "ES", + "text": "Lo que tienen estos dos programas en común es que no requieren de Token Power para funcionar. Esto es, aún si tiene cero Superalgos SA Tokens y cero Delegated Power, aún puede participar para ganar los primeros pocos tokens!", + "updated": 1633515674124 + } + ] }, { "style": "Callout", "text": "All you need to do to participate is spawn each of the program nodes and submit your User Profile!", - "updated": 1630228214813 + "updated": 1630228214813, + "translations": [ + { + "language": "ES", + "text": "Todo lo que necesita hacer para participar es generar cada uno cada uno de los nodos del programa y crear su User Profile!", + "updated": 1633515800198 + } + ] }, { "style": "Block", From b3d9a3cc80cf28162cd831ab657deb4dcae536ad Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:28:38 +0200 Subject: [PATCH 43/73] 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 44/73] 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) From 540f18cd694d96ce8e507d75011988246525bc76 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:35:39 +0200 Subject: [PATCH 45/73] ProjectSchema Beta 12 --- Projects/ProjectsSchema.json | 760 +++++++++++++++++++---------------- 1 file changed, 413 insertions(+), 347 deletions(-) diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 7aa96d8da..ae089280b 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1,4 +1,245 @@ [ + { + "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": "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", @@ -71,26 +312,11 @@ "propertyName": "taskFunctions", "functionName": "newFoundationsFunctionLibraryTaskFunctions" }, - { - "name": "Trading Session Functions", - "propertyName": "tradingSessionFunctions", - "functionName": "newFoundationsFunctionLibraryTradingSessionFunctions" - }, - { - "name": "Learning Session Functions", - "propertyName": "learningSessionFunctions", - "functionName": "newFoundationsFunctionLibraryLearningSessionFunctions" - }, { "name": "Crypto Ecosystem Functions", "propertyName": "cryptoEcosystemFunctions", "functionName": "newFoundationsFunctionLibraryCryptoEcosystemFunctions" }, - { - "name": "Mine Functions", - "propertyName": "mineFunctions", - "functionName": "newFoundationsFunctionLibraryMineFunctions" - }, { "name": "Data Storage Functions", "propertyName": "dataStorageFunctions", @@ -101,11 +327,6 @@ "propertyName": "chartingSpaceFunctions", "functionName": "newFoundationsFunctionLibraryChartingSpaceFunctions" }, - { - "name": "Plugins Functions", - "propertyName": "pluginsFunctions", - "functionName": "newFoundationsFunctionLibraryPluginsFunctions" - }, { "name": "Workspace Functions", "propertyName": "workspaceFunctions", @@ -207,11 +428,6 @@ "name": "Status Bar", "propertyName": "statusBar", "functionName": "newFoundationsUtilitiesStatusBar" - }, - { - "name": "Plugins", - "propertyName": "plugins", - "functionName": "newFoundationsUtilitiesPlugins" } ], "spaces": [ @@ -525,127 +741,11 @@ ], "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", - "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": "Announcements", + "propertyName": "announcements", + "functionName": "newFoundationsBotModulesAnnouncements", + "fileName": "Announcements.js", + "folderName": "Trading-Bot/Announcements" }, { "name": "Social Bots", @@ -681,189 +781,6 @@ "functionName": "newFoundationsBotModulesTwitterBot", "fileName": "TwitterBot.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", - "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" } ] }, @@ -884,7 +801,7 @@ ] }, "SA": { - "globals":[ + "globals": [ { "name": "Time Constants", "propertyName": "timeConstants", @@ -893,12 +810,6 @@ } ], "utilities": [ - { - "name": "Plugins", - "propertyName": "plugins", - "functionName": "newFoundationsUtilitiesPlugins", - "fileName": "Plugins.js" - }, { "name": "Miscellaneous Functions", "propertyName": "miscellaneousFunctions", @@ -926,17 +837,172 @@ ] }, "plugins": [ - "Data Mines", - "Trading Mines", - "Learning Mines", - "Trading Systems", - "Learning Systems", - "Trading Engines", - "Learning Engines", "Tutorials", "API Maps" ] }, + { + "name": "Data-Mining", + "propertyName": "dataMining", + "UI": { + "functionLibraries": [ + { + "name": "Mine Functions", + "propertyName": "mineFunctions", + "functionName": "newDataMiningFunctionLibraryMineFunctions" + } + ] + }, + "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" + } + ] + }, + "plugins": [ + "Data Mines" + ], + "tasks": [ + "Data Tasks" + ] + }, + { + "name": "Community-Plugins", + "propertyName": "communityPlugins", + "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", "propertyName": "ethereum", @@ -1353,7 +1419,7 @@ "propertyName": "queriesUnfollowedUserProfiles", "functionName": "newSocialTradingModulesQueriesUnfollowedUserProfiles", "fileName": "Queries/UnfollowedUserProfiles.js" - }, + }, { "name": "Bot Profile Stats", "propertyName": "queriesBotProfileStats", @@ -1518,8 +1584,8 @@ ], "utilities": [] }, - "UI":{ - "modules":[ + "UI": { + "modules": [ { "name": "Web Sockets Client", "propertyName": "webSocketsClient", @@ -1529,4 +1595,4 @@ ] } } -] +] \ No newline at end of file From 2905730db6c1e54df30543abef679b5c463ef9ae Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:37:00 +0200 Subject: [PATCH 46/73] Update CircularMenuItem.js --- .../Spaces/Floating-Space/CircularMenuItem.js | 62 ++++++++++++------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js b/Projects/Foundations/UI/Spaces/Floating-Space/CircularMenuItem.js index 17c1b8865..9f4a3e5d8 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, @@ -267,12 +268,22 @@ 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 { + + /* + TODO : This code needs to be cleaned and reorganized. It is not clear how a menu item icon is going to be selected. + */ + 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) @@ -306,7 +317,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 + ']' } @@ -491,31 +502,34 @@ function newCircularMenuItem() { if (thisObject.icon === undefined) { thisObject.icon = UI.projects.foundations.spaces.designSpace.getIconByProjectAndName('Foundations', 'missing-image') } - 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) } } } From 08a56a60261392efa2d108248b94081bedf625ca Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:37:59 +0200 Subject: [PATCH 47/73] Removing files for Beta 12 --- .../LearningSessionFunctions.js | 306 ---------------- .../TradingSessionFunctions.js | 332 ------------------ 2 files changed, 638 deletions(-) delete mode 100644 Projects/Foundations/UI/Function-Libraries/LearningSessionFunctions.js delete mode 100644 Projects/Foundations/UI/Function-Libraries/TradingSessionFunctions.js diff --git a/Projects/Foundations/UI/Function-Libraries/LearningSessionFunctions.js b/Projects/Foundations/UI/Function-Libraries/LearningSessionFunctions.js deleted file mode 100644 index 1e408605b..000000000 --- a/Projects/Foundations/UI/Function-Libraries/LearningSessionFunctions.js +++ /dev/null @@ -1,306 +0,0 @@ -function newFoundationsFunctionLibraryLearningSessionFunctions() { - let thisObject = { - syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd, - runSession: runSession, - stopSession: stopSession - } - - return thisObject - - function syncronizeSessionWithBackEnd(node) { - let validationsResult = validations(node) - if (validationsResult === undefined) { - /* If something fails at validations we just quit. */ - return - } - let lanNetworkNode = validationsResult.lanNetworkNode - if (lanNetworkNode === undefined) { - /* Nodes that do not belong to a network can not get ready. */ - return - } - - let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) - - /* First we setup everything so as to listen to the response from the Task Server */ - let eventSubscriptionIdOnStatus - let key = node.name + '-' + node.type + '-' + node.id - eventsServerClient.listenToEvent(key, 'Status Response', undefined, node.id, onResponse, onStatus) - - function onResponse(message) { - eventSubscriptionIdOnStatus = message.eventSubscriptionId - } - - function onStatus(message) { - eventsServerClient.stopListening(key, eventSubscriptionIdOnStatus, node.id) - if (message.event.status === 'Learning Session Runnning') { - node.payload.uiObject.menu.internalClick('Run Learning Session') - } - } - - /* Second we ask the Task Server if this Session is Running. */ - eventsServerClient.raiseEvent(key, 'Learning Session Status') - } - - function runSession(node, resume, callBackFunction) { - let validationsResult = validations(node) - if (validationsResult === undefined) { - /* If something fails at validations we just quit. */ - return - } - let lanNetworkNode = validationsResult.lanNetworkNode - if (lanNetworkNode === undefined) { - /* This means that the validations failed. */ - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) - - node.payload.uiObject.run(eventsServerClient, callBackFunction) - - let key = node.name + '-' + node.type + '-' + node.id - - let lightingPath = '' + - 'Learning System->' + - 'TensorFlow Library->' + - 'Execution Environment->Supervised Learning->Unsupervised Learning->Self Learning->Reinforcement Learning->' + - 'WebGL Backend->NodeJS Backend->WASM Backend->CPU Backend->' + - 'Environment Flags->Debug Mode->Production Mode->' + - 'Supervised Learning->Unsupervised Learning->Self Learning->Reinforcement Learning->' + - 'Artificial Neural Network->Model->' + - 'Logistic Regression->Model->' + - 'Compile->Optimizer->Loss Function->Metrics->Optimizer by Name->SGD Instance->Momentum Instance->Adagrad Instance->Adadelta Instance->Adam Instance->Rmsprop Instance->' + - 'Fit Dataset->Verbose->Epochs->Callbacks->Dataset Args->Batches Per Gradient Update->Shuffle->' + - 'Layers API->Core API->' + - 'Sequential Model->Functional Model->' + - 'Data Reporting->' + - 'Input Layer->Sequential layer->Output Layer->'+ - 'Input Features->Data Feature->Feature Formula->Input Shape->Batch Input Shape->Feature Preprocessing->MinMax Scaler->Standard Scaler->Collection Condition->' + - 'Output Labels->Data Label->Label Formula->' + - 'Advanced Activation Layers->Basic Layers->Convolutional Layers->' + - 'Conv 1D Layer->Conv 2D Layer->Conv 2D Transpose Layer->Conv 3D Layer->Cropping 2D Layer->Depthwise Convo 2D Layer->Separable Convo 2D Layer->Up Sampling 2D Layer->' + - 'Activation Layer->Dense Layer->Dropout Layer->Embedding Layer->Flatten Layer->Permutable Layer->Rrepeat Vector Layer->Reshape Layer->Spatial Dropout 1D Layer->' + - 'Elu Layer->Leaky Relu Layer->Prelu Layer->Relu Layer->Softmax Layer->Thresholded Relu Layer->'+ - 'Dimensionality Units->Activation Function->Dtype->Trainable->Weights->Tensor->Kernel->Bias->' + - 'Kernel Initializer->Kernel Constraint->Kernel Regularizer->' + - 'Bias Initializer->Bias Constraint->Bias Regularizer->' - - let learningSystem = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.learningSystemReference.payload.referenceParent, false, true, true, false, false, lightingPath) - - lightingPath = '' + - 'Learning Engine->' + - 'Learning Current->Learning Last->Previous->' + - 'Learning Episode->' + - 'Episode Base Asset->Episode Quoted Asset->Learning Episode Counters->Learning Episode Statistics->' + - 'Strategies->Positions->Orders->Hits->Fails->' + - 'Profit Loss->Hit Ratio->Hit Fail->Days->ROI->Annualized Rate Of Return->User Defined Statistic->' + - 'Candle->Cycle->' + - 'Begin->End->Last Begin->Last End->Open->Close->Min->Max->Index->' + - 'Distance To Learning Event->' + - 'Head Of The Market->Process Date->' + - 'Trigger On->Trigger Off->Take Position->Close Position->Next Phase->Move To Phase->Create Order->Cancel Order->Close Order->' + - 'Strategy->' + - 'Strategy Counters->' + - 'Position->' + - 'Entry Target Rate->Exit Target Rate->' + - 'Stop Loss->Stop Loss Phase->Stop Loss Position->Begin->End->Initial Value->Final Value->' + - 'Take Profit->Take Profit Phase->Take Profit Position->Begin->End->Initial Value->Final Value->' + - 'Position Counters->' + - 'Position Statistics->Days->User Defined Statistic->' + - 'Position Base Asset->Position Quoted Asset->Entry Target Size->Exit Target Size->' + - 'Profit Loss->ROI->Hit Fail->' + - 'Exchange Orders->Market Buy Orders->Market Sell Orders->Limit Buy Orders->Limit Sell Orders->' + - 'Market Order->Limit Order->' + - 'Exchange Id->Rate->Order Name->Algorithm Name->Lock->' + - 'Order Counters->' + - 'Order Base Asset->Order Quoted Asset->' + - 'Actual Size->Size->Size Filled->Amount Received->Fees Paid->Fees To Be Paid->' + - 'Order Statistics->Percentage Filled->Actual Rate->Days->User Defined Statistic->' + - 'Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->' + - 'Begin->End->Exit Type->Status->Begin Rate->End Rate->Stage Base Asset->Stage Quoted Asset->Size Placed->Target Size->Size Filled->Fees Paid->Stage Defined In->' + - 'Serial Number->Identifier->Begin->End->Begin Rate->End Rate->Strategy Name->Status->Exit Type->' + - 'Balance->Begin Balance->End Balance->' + - 'Index->Situation Name->Formula->Periods->' + - 'Features->Feature->Begin->End->Feature Value->'+ - 'Labels->Label->Begin->End->Label Value->'+ - 'Predictions->Prediction->Begin->End->Prediction Value->' - - let learningEngine = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.learningEngineReference.payload.referenceParent, false, true, true, false, false, lightingPath) - - lightingPath = '' + - 'Back Learning Session->Live Learning Session->' + - 'Learning Parameters->' + - 'Learning Algorithm->Time Range->Time Frame->Heartbeats->User Defined Parameters->' + - 'Social Bots->Telegram Bot->Discord Bot->Slack Bot->Twitter Bot ->' - - let session = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node, false, true, true, false, false, lightingPath) - - let defaultExchange = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.exchange.payload, 'codeName') - let defaultMarket = - UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.baseAsset.payload.referenceParent.payload, 'codeName') - + '-' + - UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.quotedAsset.payload.referenceParent.payload, 'codeName') - - let dependencyFilter = UI.projects.foundations.functionLibraries.dependenciesFilter.createDependencyFilter( - defaultExchange, - defaultMarket, - node.learningSystemReference.payload.referenceParent - ) - - /* Raise event to run the session */ - let event = { - session: JSON.stringify(session), - learningSystem: JSON.stringify(learningSystem), - learningEngine: JSON.stringify(learningEngine), - dependencyFilter: JSON.stringify(dependencyFilter), - resume: resume - } - - if (resume !== true) { - eventsServerClient.raiseEvent(key, 'Run Learning Session', event) - } else { - eventsServerClient.raiseEvent(key, 'Resume Learning Session', event) - } - - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - } - - function stopSession(node, callBackFunction) { - let validationsResult = validations(node) - if (validationsResult === undefined) { - /* If something fails at validations we just quit. */ - return - } - let lanNetworkNode = validationsResult.lanNetworkNode - if (lanNetworkNode === undefined) { - /* This means that the validations failed. */ - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) - - let key = node.name + '-' + node.type + '-' + node.id - eventsServerClient.raiseEvent(key, 'Stop Learning Session') - - node.payload.uiObject.stop(callBackFunction, undefined, true) - } - - function validations(node) { - - let result = {} - - if (node.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs a Process Instance parent to be able to run.') - return - } - - if (node.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Process Instance node.') - return - } - - if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Task.') - return - } - - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Task Manager.') - return - } - - result.taskManager = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - - if (result.taskManager.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside Mine Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside Market Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside Exchange Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Testing or Production Learning Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Network Node.') - return - } - - result.lanNetworkNode = UI.projects.foundations.utilities.meshes.findNodeInNodeMesh(result.taskManager, 'LAN Network Node', undefined, true, false, true, false) - - if (node.learningSystemReference === undefined) { - node.payload.uiObject.setErrorMessage('Session needs a child Learning System Reference.') - return - } - - if (node.learningEngineReference === undefined) { - node.payload.uiObject.setErrorMessage('Session needs a child Learning Engine Reference.') - return - } - - if (node.learningSystemReference.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Learning System Reference needs to reference a Learning System.') - return - } - - if (node.learningEngineReference.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Learning Engine Reference needs to reference a Learning Engine.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to have a Default Market.') - return - } - - result.market = result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent - - if (result.market.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Default Market needs to be a child of Exchange Markets.') - return - } - - if (result.market.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Exchange Markets neeed to be a child of Crypto Exchange.') - return - } - - if (result.market.baseAsset === undefined) { - node.payload.uiObject.setErrorMessage('Default Market needs to have a Base Asset.') - return - } - - if (result.market.quotedAsset === undefined) { - node.payload.uiObject.setErrorMessage('Default Market needs to have a Quoted Asset.') - return - } - - if (result.market.baseAsset.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Market Base Asset needs to reference an Asset.') - return - } - - if (result.market.quotedAsset.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Market Quoted Asset needs to reference an Asset.') - return - } - - result.exchange = result.market.payload.parentNode.payload.parentNode - - return result - } -} diff --git a/Projects/Foundations/UI/Function-Libraries/TradingSessionFunctions.js b/Projects/Foundations/UI/Function-Libraries/TradingSessionFunctions.js deleted file mode 100644 index a8761f130..000000000 --- a/Projects/Foundations/UI/Function-Libraries/TradingSessionFunctions.js +++ /dev/null @@ -1,332 +0,0 @@ -function newFoundationsFunctionLibraryTradingSessionFunctions() { - let thisObject = { - syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd, - runSession: runSession, - stopSession: stopSession - } - - return thisObject - - function syncronizeSessionWithBackEnd(node) { - let validationsResult = validations(node) - if (validationsResult === undefined) { - /* If something fails at validations we just quit. */ - return - } - let lanNetworkNode = validationsResult.lanNetworkNode - if (lanNetworkNode === undefined) { - /* Nodes that do not belong to a network can not get ready. */ - return - } - - let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) - - /* First we setup everything so as to listen to the response from the Task Server */ - let eventSubscriptionIdOnStatus - let key = node.name + '-' + node.type + '-' + node.id - eventsServerClient.listenToEvent(key, 'Status Response', undefined, node.id, onResponse, onStatus) - - function onResponse(message) { - eventSubscriptionIdOnStatus = message.eventSubscriptionId - } - - function onStatus(message) { - eventsServerClient.stopListening(key, eventSubscriptionIdOnStatus, node.id) - if (message.event.status === 'Trading Session Runnning') { - node.payload.uiObject.menu.internalClick('Run Trading Session') - } - } - - /* Second we ask the Task Server if this Session is Running. */ - eventsServerClient.raiseEvent(key, 'Trading Session Status') - } - - function runSession(node, resume, callBackFunction) { - let validationsResult = validations(node) - if (validationsResult === undefined) { - /* If something fails at validations we just quit. */ - return - } - let lanNetworkNode = validationsResult.lanNetworkNode - if (lanNetworkNode === undefined) { - /* This means that the validations failed. */ - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) - - let key = node.name + '-' + node.type + '-' + node.id - - /* Setup Listener to check Parent Task Status of the Session */ - let eventSubscriptionIdOnStatus - let eventHandlerKey = "Task Client - " + node.payload.parentNode.payload.parentNode.payload.parentNode.id - - eventsServerClient.listenToEvent(eventHandlerKey, 'Task Status', undefined, node.id, onResponse, onStatus) - - function onResponse(message) { - eventSubscriptionIdOnStatus = message.eventSubscriptionId - } - - function onStatus(message) { - eventsServerClient.stopListening(eventHandlerKey, eventSubscriptionIdOnStatus, node.id) - - /* If Task is Not Running Display Error */ - if (message.event.status === 'Task Process Not Running') { - node.payload.uiObject.setErrorMessage('Parent Task Not Running.') - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - } else { - node.payload.uiObject.run(eventsServerClient, callBackFunction) - } - } - - /* Raise Event to Check Task Status */ - let eventKey = {} - eventKey.taskId = node.payload.parentNode.payload.parentNode.payload.parentNode.id - - eventsServerClient.raiseEvent("Task Manager", 'Task Status', eventKey) - - let lightingPath = '' + - 'Trading System->' + - 'Dynamic Indicators->Indicator Function->Formula->' + - 'Trading Strategy->' + - 'Trigger Stage->Trigger On Event->Trigger Off Event->Take Position Event->' + - 'Open Stage->' + - 'Manage Stage->' + - 'Managed Stop Loss->Managed Take Profit->' + - 'Phase->Formula->Next Phase Event->Move To Phase Event->Phase->' + - 'Situation->Condition->Javascript Code->' + - 'Close Stage->' + - 'Initial Targets->Target Size In Base Asset->Target Size In Quoted Asset->Target Rate->Formula->' + - 'Open Execution->Close Execution->' + - 'Execution Algorithm->Market Buy Order->Market Sell Order->Limit Buy Order->Limit Sell Order->' + - 'Order Rate->Formula->' + - 'Create Order Event->Cancel Order Event->' + - 'Close Stage Event->' + - 'Announcement->Announcement Formula->Announcement Condition->' + - 'Size In Base Asset->Size In Quoted Asset->Position Rate->Formula->' + - 'Situation->Condition->Javascript Code->' + - 'Market Order->Limit Order->' + - 'Simulated Exchange Events->Simulated Partial Fill->Simulated Actual Rate->Simulated Fees Paid->Formula->' + - 'User Defined Code->Javascript Code->' - - let tradingSystem = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.tradingSystemReference.payload.referenceParent, false, true, true, false, false, lightingPath) - - lightingPath = '' + - 'Trading Engine->' + - 'Dynamic Indicators->Indicator Function->' + - 'Trading Current->Trading Last->Previous->' + - 'Trading Episode->' + - 'Episode Base Asset->Episode Quoted Asset->Trading Episode Counters->Trading Episode Statistics->' + - 'Strategies->Positions->Orders->Hits->Fails->User Defined Counter->' + - 'Profit Loss->Hit Ratio->Hit Fail->Days->ROI->Annualized Rate Of Return->User Defined Statistic->' + - 'Candle->Cycle->' + - 'Begin->End->Last Begin->Last End->Open->Close->Min->Max->Index->' + - 'Distance To Trading Event->' + - 'Head Of The Market->Process Date->' + - 'Trigger On->Trigger Off->Take Position->Close Position->Next Phase->Move To Phase->Create Order->Cancel Order->Close Order->' + - 'Strategy->' + - 'Strategy Counters->' + - 'Position->' + - 'Entry Target Rate->Exit Target Rate->' + - 'Stop Loss->Stop Loss Phase->Stop Loss Position->Begin->End->Initial Value->Final Value->' + - 'Take Profit->Take Profit Phase->Take Profit Position->Begin->End->Initial Value->Final Value->' + - 'Position Counters->' + - 'Position Statistics->Days->User Defined Statistic->' + - 'Position Base Asset->Position Quoted Asset->Entry Target Size->Exit Target Size->' + - 'Profit Loss->ROI->Hit Fail->' + - 'Exchange Orders->Market Buy Orders->Market Sell Orders->Limit Buy Orders->Limit Sell Orders->' + - 'Market Order->Limit Order->' + - 'Exchange Id->Rate->Order Name->Algorithm Name->Lock->' + - 'Order Counters->' + - 'Order Base Asset->Order Quoted Asset->' + - 'Actual Size->Size->Size Filled->Amount Received->Fees Paid->Fees To Be Paid->' + - 'Order Statistics->Percentage Filled->Actual Rate->Days->User Defined Statistic->' + - 'Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->' + - 'Begin->End->Exit Type->Status->Begin Rate->End Rate->Stage Base Asset->Stage Quoted Asset->Size Placed->Target Size->Size Filled->Fees Paid->Stage Defined In->' + - 'Serial Number->Identifier->Begin->End->Begin Rate->End Rate->Strategy Name->Status->Exit Type->' + - 'Balance->Begin Balance->End Balance->' + - 'Index->Situation Name->Formula->Periods->' + - 'User Defined Variables->User Defined Variable->' - - let tradingEngine = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node.tradingEngineReference.payload.referenceParent, false, true, true, false, false, lightingPath) - - lightingPath = '' + - 'Backtesting Session->Paper Trading Session->Forward Testing Session->Live Trading Session->' + - 'Trading Parameters->' + - 'Session Base Asset->Session Quoted Asset->Time Range->Time Frame->Slippage->Fee Structure->Snapshots->Heartbeats->User Defined Parameters->' + - 'Social Bots->Telegram Bot->Discord Bot->Slack Bot->Twitter Bot->' + - 'Social Bot Command->Formula->' + - 'Exchange Account Asset->Asset->' - - let session = UI.projects.foundations.functionLibraries.protocolNode.getProtocolNode(node, false, true, true, false, false, lightingPath) - - let defaultExchange = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.exchange.payload, 'codeName') - let defaultMarket = - UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.baseAsset.payload.referenceParent.payload, 'codeName') - + '-' + - UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(validationsResult.market.quotedAsset.payload.referenceParent.payload, 'codeName') - - let dependencyFilter = UI.projects.foundations.functionLibraries.dependenciesFilter.createDependencyFilter( - defaultExchange, - defaultMarket, - node.tradingSystemReference.payload.referenceParent - ) - - /* Raise event to run the session */ - let event = { - session: JSON.stringify(session), - tradingSystem: JSON.stringify(tradingSystem), - tradingEngine: JSON.stringify(tradingEngine), - dependencyFilter: JSON.stringify(dependencyFilter), - resume: resume - } - - if (resume !== true) { - eventsServerClient.raiseEvent(key, 'Run Trading Session', event) - } else { - eventsServerClient.raiseEvent(key, 'Resume Trading Session', event) - } - - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - } - - function stopSession(node, callBackFunction) { - let validationsResult = validations(node) - if (validationsResult === undefined) { - /* If something fails at validations we just quit. */ - return - } - let lanNetworkNode = validationsResult.lanNetworkNode - if (lanNetworkNode === undefined) { - /* This means that the validations failed. */ - callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) - return - } - - let eventsServerClient = UI.projects.foundations.spaces.designSpace.workspace.eventsServerClients.get(lanNetworkNode.id) - - let key = node.name + '-' + node.type + '-' + node.id - eventsServerClient.raiseEvent(key, 'Stop Trading Session') - - node.payload.uiObject.stop(callBackFunction, undefined, true) - } - - function validations(node) { - - let result = {} - - if (node.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs a Process Instance parent to be able to run.') - return - } - - if (node.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Process Instance node.') - return - } - - if (node.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Task.') - return - } - - if (node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Task Manager.') - return - } - - result.taskManager = node.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode - - if (result.taskManager.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside Mine Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside Market Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside Exchange Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Testing or Production Trading Tasks.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to be inside a Network Node.') - return - } - - result.lanNetworkNode = UI.projects.foundations.utilities.meshes.findNodeInNodeMesh(result.taskManager, 'LAN Network Node', undefined, true, false, true, false) - - if (node.tradingSystemReference === undefined) { - node.payload.uiObject.setErrorMessage('Session needs a child Trading System Reference.') - return - } - - if (node.tradingEngineReference === undefined) { - node.payload.uiObject.setErrorMessage('Session needs a child Trading Engine Reference.') - return - } - - if (node.tradingSystemReference.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Trading System Reference needs to reference a Trading System.') - return - } - - if (node.tradingEngineReference.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Trading Engine Reference needs to reference a Trading Engine.') - return - } - - if (result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Session needs to have a Default Market.') - return - } - - result.market = result.taskManager.payload.parentNode.payload.parentNode.payload.referenceParent - - if (result.market.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Default Market needs to be a child of Exchange Markets.') - return - } - - if (result.market.payload.parentNode.payload.parentNode === undefined) { - node.payload.uiObject.setErrorMessage('Exchange Markets neeed to be a child of Crypto Exchange.') - return - } - - if (result.market.baseAsset === undefined) { - node.payload.uiObject.setErrorMessage('Default Market needs to have a Base Asset.') - return - } - - if (result.market.quotedAsset === undefined) { - node.payload.uiObject.setErrorMessage('Default Market needs to have a Quoted Asset.') - return - } - - if (result.market.baseAsset.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Market Base Asset needs to reference an Asset.') - return - } - - if (result.market.quotedAsset.payload.referenceParent === undefined) { - node.payload.uiObject.setErrorMessage('Market Quoted Asset needs to reference an Asset.') - return - } - - result.exchange = result.market.payload.parentNode.payload.parentNode - - return result - } -} From 4a34245410d991d18c5f961c07f00bd3db25d7e8 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:46:54 +0200 Subject: [PATCH 48/73] deepscan bug fixes --- .../Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js | 1 - .../Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js | 1 - .../Trading-Bot/Low-Frequency-Trading/TradingEngine.js | 2 +- .../Trading-Bot/Low-Frequency-Trading/TradingEpisode.js | 1 - .../Trading-Bot/Low-Frequency-Trading/TradingStrategy.js | 2 +- .../TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js | 4 ++-- .../Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js | 2 -- .../Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js | 2 -- .../TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js | 1 - .../Learning-Bot/Low-Frequency-Learning/LearningEngine.js | 1 - .../Learning-Bot/Low-Frequency-Learning/LearningEpisode.js | 1 - 11 files changed, 4 insertions(+), 14 deletions(-) diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js index 910d016f4..af77160a7 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersCalculations.js @@ -2,7 +2,6 @@ exports.newAlgorithmicTradingBotModulesOrdersCalculations = function (processInd /* When we are live trading, we need to syncronize with the exchange. */ - const MODULE_NAME = 'Orders Calculations' let thisObject = { actualSizeCalculation: actualSizeCalculation, diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js index 1d3ea0ac6..ad4d246ae 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/OrdersSimulations.js @@ -2,7 +2,6 @@ exports.newAlgorithmicTradingBotModulesOrdersSimulations = function (processInde /* When we are backtesting or paper trading, we need to simulate what would have happened at the exchange. */ - const MODULE_NAME = 'Orders Simulations' let thisObject = { actualSizeSimulation: actualSizeSimulation, diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js index 441e5bfb7..c04a0eea0 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEngine.js @@ -3,7 +3,7 @@ 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. */ - const MODULE_NAME = 'Trading Engine' + let thisObject = { mantain: mantain, reset: reset, diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js index 44f563cca..f70284899 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingEpisode.js @@ -2,7 +2,6 @@ exports.newAlgorithmicTradingBotModulesTradingEpisode = function (processIndex) /* This module packages all functions related to Episodes. */ - const MODULE_NAME = 'Trading Episode' let thisObject = { mantain: mantain, reset: reset, diff --git a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js index c18aefd1d..be2a09c31 100644 --- a/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js +++ b/Projects/Algorithmic-Trading/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStrategy.js @@ -2,7 +2,7 @@ exports.newAlgorithmicTradingBotModulesTradingStrategy = function (processIndex) /* This module packages all functions related to Strategies. */ - const MODULE_NAME = 'Trading Strategy' + let thisObject = { mantain: mantain, reset: reset, diff --git a/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js b/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js index a343e5684..e0acf093e 100644 --- a/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js +++ b/Projects/Data-Mining/TS/Bot-Modules/API-Data-Fetcher-Bot/FetchingProcess.js @@ -868,7 +868,7 @@ exports.newDataMiningBotModulesFetchingProcess = function (processIndex) { Building the current key... */ let key = "" - for (j = 0; j < primaryKeys.length; j++) { + for (let j = 0; j < primaryKeys.length; j++) { let keyValue = record.map.get(primaryKeys[j]) key = key + '->' + keyValue } @@ -887,7 +887,7 @@ exports.newDataMiningBotModulesFetchingProcess = function (processIndex) { let record = getRecord(dataReceivedArray[i]) let key = "" - for (j = 0; j < primaryKeys.length; j++) { + for (let j = 0; j < primaryKeys.length; j++) { let keyValue = record.map.get(primaryKeys[j]) key = key + '->' + keyValue } diff --git a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js index e50e98bc7..b1f43ac9d 100644 --- a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameDaily.js @@ -440,7 +440,6 @@ return } - const inputVolumesPerdiod = 60 * 1000; // 1 min const inputFilePeriod = 24 * 60 * 60 * 1000; // 24 hs let totalOutputVolumes = inputFilePeriod / outputPeriod; // this should be 2 in this case. let beginingOutputTime = contextVariables.datetimeLastProducedFile.valueOf(); @@ -577,7 +576,6 @@ let fileContent = ""; for (let i = 0; i < volumes.length; i++) { - let candle = volumes[i]; fileContent = fileContent + separator + '[' + volumes[i].buy + "," + volumes[i].sell + "," + volumes[i].begin + "," + volumes[i].end + "]"; if (separator === "") { separator = ","; } fileRecordCounter++ diff --git a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js index 51f986645..89ccadd17 100644 --- a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/Candles-Volumes/CandlesVolumesMultiTimeFrameMarket.js @@ -677,7 +677,6 @@ callBackFunction(err); return; } - const inputVolumesPerdiod = 60 * 1000; // 1 min const inputFilePeriod = 24 * 60 * 60 * 1000; // 24 hs let totalOutputVolumes = inputFilePeriod / outputPeriod; // this should be 2 in this case. @@ -813,7 +812,6 @@ let fileContent = ""; for (let i = 0; i < volumes.length; i++) { - let candle = volumes[i]; fileContent = fileContent + separator + '[' + volumes[i].buy + "," + volumes[i].sell + "," + volumes[i].begin + "," + volumes[i].end + "]"; if (separator === "") { separator = ","; } fileRecordCounter++ diff --git a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js index 68129a3ff..b97a1f896 100644 --- a/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js +++ b/Projects/Data-Mining/TS/Bot-Modules/Indicator-Bot/IndicatorOutput.js @@ -74,7 +74,6 @@ let outputData // Data built as a result of applying user defined code and formulas at the Data Building Procedure let singularVariableName // Name of the variable for this product let recordDefinition // Record as defined by the user at the UI - let fileContent // Here we store the contents of the new data built just before writing it to a file. let resultsWithIrregularPeriods // A product will have irregular periods when the User Code inserts new result records at will, in contrast with normal procedure where the platform insert one record per loop execution. /* diff --git a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js index c63f52b31..2f6941f32 100644 --- a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEngine.js @@ -3,7 +3,6 @@ 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. */ - const MODULE_NAME = 'Learning Engine' let thisObject = { mantain: mantain, reset: reset, diff --git a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js index 6ea0bdb39..db63b0b40 100644 --- a/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js +++ b/Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningEpisode.js @@ -2,7 +2,6 @@ exports.newMachineLearningBotModulesLearningEpisode = function (processIndex) { /* This module packages all functions related to Episodes. */ - const MODULE_NAME = 'Learning Episode' let thisObject = { mantain: mantain, reset: reset, From 0bf9caf2c10df9843d440238ab61b3d82c0869bd Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 6 Oct 2021 12:50:00 +0200 Subject: [PATCH 49/73] Beta 12 Labels --- Platform/Client/githubServer.js | 4 ++-- Platform/Client/httpInterface.js | 2 +- Platform/PlatformApp.js | 2 +- README.md | 2 +- platform.js | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Platform/Client/githubServer.js b/Platform/Client/githubServer.js index 148ce0801..f85b56d46 100644 --- a/Platform/Client/githubServer.js +++ b/Platform/Client/githubServer.js @@ -79,7 +79,7 @@ exports.newGithubServer = function newGithubServer() { const octokit = new Octokit({ auth: token, - userAgent: 'Superalgos Beta 11' + userAgent: 'Superalgos Beta 12' }) await getList() @@ -207,7 +207,7 @@ exports.newGithubServer = function newGithubServer() { const { Octokit } = SA.nodeModules.octokit const octokit = new Octokit({ auth: token, - userAgent: 'Superalgos Beta 11' + userAgent: 'Superalgos Beta 12' }) await getPrList() await mergePrs() diff --git a/Platform/Client/httpInterface.js b/Platform/Client/httpInterface.js index 65ca9de37..57770a087 100644 --- a/Platform/Client/httpInterface.js +++ b/Platform/Client/httpInterface.js @@ -725,7 +725,7 @@ exports.newHttpInterface = function newHttpInterface() { const octokit = new Octokit({ auth: token, - userAgent: 'Superalgos Beta 11' + userAgent: 'Superalgos Beta 12' }) const repo = 'Superalgos' diff --git a/Platform/PlatformApp.js b/Platform/PlatformApp.js index 6c1795f19..49431f932 100644 --- a/Platform/PlatformApp.js +++ b/Platform/PlatformApp.js @@ -143,7 +143,7 @@ exports.newPlatformApp = function newPlatformApp() { console.log('Http Interface .............................................. Listening at port ' + global.env.CLIENT_HTTP_INTERFACE_PORT) console.log('') - console.log("You are running Superalgos Beta 11") + console.log("You are running Superalgos Beta 12") console.log('') console.log("What's new? These are the main new features in this version:") console.log('') diff --git a/README.md b/README.md index 9d9a519e9..c82dca35e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Superalgos Beta 11 +# Superalgos Beta 12 ![contributors](https://img.shields.io/github/contributors-anon/Superalgos/Superalgos?label=Contributors) ![pull-activity](https://img.shields.io/github/issues-pr-closed-raw/Superalgos/Superalgos?color=blueviolet) diff --git a/platform.js b/platform.js index 0f4511990..c60ec42f4 100644 --- a/platform.js +++ b/platform.js @@ -17,7 +17,7 @@ if ( console.log('Superalgos') console.log('') - console.log('VERSION: Beta 11') + console.log('VERSION: Beta 12') console.log('') console.log('WEB: https://www.superalgos.org') console.log('') From 255315dd648013eed9bbf2fddf556e954f621785 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 13:03:45 +0200 Subject: [PATCH 50/73] This is my contribution to Superalgos --- ...rnance-how-to-001-load-a-user-profile.json | 72 ++++++++++++++++--- 1 file changed, 62 insertions(+), 10 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json b/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json index d9bb0f390..683e7680e 100644 --- a/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json +++ b/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json @@ -23,7 +23,8 @@ { "language": "ES", "text": "Supongamos que deseas declarar tu referente en el Referral Program, o tal vez desees apoyar el Contribution Claims de un compañero desarrollador.", - "updated": 1632025791877 + "updated": 1632025791877, + "style": "Text" } ] }, @@ -34,7 +35,8 @@ { "language": "ES", "text": "En cualquier caso, deberás cargar el User Profile de la persona en cuestión para que pueda establecer las referencias adecuadas.", - "updated": 1632025827657 + "updated": 1632025827657, + "style": "Callout" } ] }, @@ -46,7 +48,8 @@ { "language": "ES", "text": "O tal vez quieras cargar tu propio User Profile en uno de los Other Governance Workspaces. ¡Es el mismo proceso después de todo!", - "updated": 1632025920310 + "updated": 1632025920310, + "style": "Note" } ] }, @@ -58,12 +61,26 @@ { "style": "List", "text": "Find out the person's User Profile name. If you know the person's identity on Github.com, then that's all you need to know. If you don't, then you may need to contact the person and ask! If it's your profile, then no need to do much in this regard!", - "updated": 1630681681124 + "updated": 1630681681124, + "translations": [ + { + "language": "ES", + "text": "Encuentre el nombre del User Profile de la persona. Si conoce como se identifica la persona en Github.com, entonces eso es todo lo que necesita saber. Si no, puede necesitar contactar a la persona y preguntárselo! Si es su profile, entonces no es necesario hacer demaciado al respecto!", + "updated": 1633517388693 + } + ] }, { "style": "List", "text": "Verify that a file with the same name exists in the following path within the Superalgos folder in your hard drive...", - "updated": 1630597624699 + "updated": 1630597624699, + "translations": [ + { + "language": "ES", + "text": "Verifiqueque un archivo con el mismo nombre exista en la siguiente ruta dentro de Superalgos folder en su disco duro...", + "updated": 1633517151535 + } + ] }, { "style": "Json", @@ -72,24 +89,59 @@ { "style": "List", "text": "If the file doesn't exist, make sure you have the latest version of the app. If it's still missing after updating, let the person know and wait for the profile to be submitted.", - "updated": 1630597643975 + "updated": 1630597643975, + "translations": [ + { + "language": "ES", + "text": "Si el archivo no existe, asegúrese que tiene a última versión de la app. Si falta aún después de hacer la actualización, permite que la persona sepa y espere que el profile sea incluído.", + "updated": 1633517577195 + } + ] }, { "style": "List", "text": "If the file is there and assuming you already are in the workspace you wish to work with, go to the Plugins hierarchy and find the Dummy Plugin File under Plugin User Profiles > Governance Plugin Project.", - "updated": 1630597669225 + "updated": 1630597669225, + "translations": [ + { + "language": "ES", + "text": "Si el archivo aparece y suponiendo que ya se encuentre en el espacio del workspace con el que desea trabajar, vaya a la jerarquía de Plugins y encuentre el muñeco Plugin File debajo de Plugin User Profiles > Governance Plugin Project.", + "updated": 1633517833894 + } + ] }, { "style": "List", - "text": "Access the configuration of the Dummy profile and change the fileName property using the appropriate name (Github.com username). Replace the name of the node too, to avoid confusion later on." + "text": "Access the configuration of the Dummy profile and change the fileName property using the appropriate name (Github.com username). Replace the name of the node too, to avoid confusion later on.", + "translations": [ + { + "language": "ES", + "text": "Acceda a la configuración del muñeco del profile y modifique la propiedad del fileName usando el nombre apropriado (Github.com username). Reemplace el nombre del nodo también, para evitar confusiones más tarde.", + "updated": 1633518000717 + } + ] }, { "style": "List", - "text": "Save the Current Workspace with Ctrl + Alt + Shift + Key-S and refresh the page." + "text": "Save the Current Workspace with Ctrl + Alt + Shift + Key-S and refresh the page.", + "translations": [ + { + "language": "ES", + "text": "Guarde el Current Workspace con Ctrl + Alt + Shift + Key-S y refresque la página.", + "updated": 1633518088269 + } + ] }, { "style": "List", - "text": "Once the page reloads, you should see the new profile along with the rest! That's it!" + "text": "Once the page reloads, you should see the new profile along with the rest! That's it!", + "translations": [ + { + "language": "ES", + "text": "Una vez que la página se recargue, debería ver el profile nuevojunto con el resto de ellos! Eso es!", + "updated": 1633518182330 + } + ] } ] } \ No newline at end of file From ed2f8c7497713330de016d75dece632d2778dc36 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 13:50:30 +0200 Subject: [PATCH 51/73] This is my contribution to Superalgos --- .../governance-how-to-001-load-a-user-profile.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json b/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json index 683e7680e..1b305eaa5 100644 --- a/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json +++ b/Projects/Governance/Schemas/Docs-Topics/G/Governance/Governance-How-To/governance-how-to-001-load-a-user-profile.json @@ -105,8 +105,8 @@ "translations": [ { "language": "ES", - "text": "Si el archivo aparece y suponiendo que ya se encuentre en el espacio del workspace con el que desea trabajar, vaya a la jerarquía de Plugins y encuentre el muñeco Plugin File debajo de Plugin User Profiles > Governance Plugin Project.", - "updated": 1633517833894 + "text": "Si el archivo aparece y suponiendo que ya se encuentre en el espacio del workspace con el que desea trabajar, vaya a la jerarquía de Plugins y encuentre el Dummy Plugin File debajo de Plugin User Profiles > Governance Plugin Project.", + "updated": 1633520923071 } ] }, @@ -116,8 +116,8 @@ "translations": [ { "language": "ES", - "text": "Acceda a la configuración del muñeco del profile y modifique la propiedad del fileName usando el nombre apropriado (Github.com username). Reemplace el nombre del nodo también, para evitar confusiones más tarde.", - "updated": 1633518000717 + "text": "Acceda a la configuración del Dummy profile y modifique la propiedad del fileName usando el nombre apropriado (Github.com username). Reemplace el nombre del nodo también, para evitar confusiones más tarde.", + "updated": 1633521011506 } ] }, From f27034652e3263b165763aa21710a6affffbab48 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 13:56:07 +0200 Subject: [PATCH 52/73] This is my contribution to Superalgos --- ...o-002-establish-and-remove-references.json | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Topics/H/How/How-To/how-to-002-establish-and-remove-references.json b/Projects/Foundations/Schemas/Docs-Topics/H/How/How-To/how-to-002-establish-and-remove-references.json index 3931af158..f4fd9dece 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/H/How/How-To/how-to-002-establish-and-remove-references.json +++ b/Projects/Foundations/Schemas/Docs-Topics/H/How/How-To/how-to-002-establish-and-remove-references.json @@ -9,7 +9,8 @@ { "language": "ES", "text": "Para establecer la referencia, click derecho en el primer nodo y arrástrelo cerca del nodo de destino. Entonces remueva la referencia, use el boton delink en el menú.", - "updated": 1633296472626 + "updated": 1633296472626, + "style": "Definition" } ] }, @@ -25,8 +26,9 @@ "translations": [ { "language": "ES", - "text": "Cuando esteé estableciendo una referencia, anilos grises muestran con cuales nodos puede establecer la referencia. En caso de que haya muchos nodos que aceptarían la referencia, el nodo que esté más cerca de donde se origina la referencia está destacado con un anillo dorado. Liberando el botón del mouse establece a referencia con el nodo destacado.", - "updated": 1633296500174 + "text": "Cuando esté estableciendo una referencia, anilsos grises muestran con cuales nodos puede establecer la referencia. En caso de que haya muchos nodos que aceptarían la referencia, el nodo que esté más cerca de donde se origina la referencia está destacado con un anillo dorado. Liberando el botón del mouse establece a referencia con el nodo destacado.", + "updated": 1633521217701, + "style": "Text" } ] }, @@ -41,8 +43,9 @@ "translations": [ { "language": "ES", - "text": "La referencia es visualmente representada por una leve linea de puntos grises. Esta linea es vicible solo cuando ambos extremos de la referencia son visibles.", - "updated": 1633295706095 + "text": "La referencia es visualmente representada por una leve linea de puntos grises. Esta linea es visible solo cuando ambos extremos de la referencia son visibles.", + "updated": 1633521251780, + "style": "Text" } ] }, @@ -53,8 +56,9 @@ "translations": [ { "language": "ES", - "text": "Para remover una referencia o deslinkear dos nodos, use el botón delink button del nodo dondela referencia se origina.", - "updated": 1633295798732 + "text": "Para remover una referencia o deslinkear dos nodos, use el botón delink button del nodo donde la referencia se origina.", + "updated": 1633521278527, + "style": "Text" } ] }, @@ -79,7 +83,8 @@ { "language": "ES", "text": "El proceso es exactamente el mismo. Todo lo que necesita es manejar unos pocos trucos para que pueda arrastrar uno de los nodos todo el recorrido hasta donde el segundo nodo está.", - "updated": 1633295934654 + "updated": 1633295934654, + "style": "Text" } ] }, @@ -96,7 +101,8 @@ { "language": "ES", "text": "Estos UI trucos pueden hacer tu vida más fácil:", - "updated": 1633295979755 + "updated": 1633295979755, + "style": "Text" } ] }, @@ -108,7 +114,8 @@ { "language": "ES", "text": "Use el design space map tantas veces como sea necesario para encontrar el camino desde una jeraquía a la otra.", - "updated": 1633296062866 + "updated": 1633296062866, + "style": "List" } ] }, @@ -119,7 +126,8 @@ { "language": "ES", "text": "Fije el nodo que va a mover a través del espacio de diseño, para que pueda soltarlo en cualquier punto para chequear las direcciones en el mapa del espacio de diseño.", - "updated": 1633296213030 + "updated": 1633296213030, + "style": "List" } ] }, @@ -130,7 +138,8 @@ { "language": "ES", "text": "Use Ctrl / Command + arteclas de flechas para arrastrar el nodo a través dela pantalla despues de clickear en el con el mouse. Mantenga las teclas presionadas y el nodo vuela!", - "updated": 1633296325908 + "updated": 1633296325908, + "style": "List" } ] }, @@ -140,8 +149,9 @@ "translations": [ { "language": "ES", - "text": "Remueva el ijado ona vez que la referencia sea establecida para que el nodo vuelva a su lugar.", - "updated": 1633296417854 + "text": "Remueve el fijado ona vez que la referencia sea establecida para que el nodo vuelva a su lugar.", + "updated": 1633521325505, + "style": "List" } ] } From 03b2b1ffdaf7f465fe77b0763b3e02856c422405 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 14:30:19 +0200 Subject: [PATCH 53/73] This is my contribution to Superalgos --- .../community-building-programs.json | 102 +++++++++++++++--- 1 file changed, 90 insertions(+), 12 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Nodes/C/Community/Community-Building-Programs/community-building-programs.json b/Projects/Governance/Schemas/Docs-Nodes/C/Community/Community-Building-Programs/community-building-programs.json index b00a6f0a5..820c2acb3 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/C/Community/Community-Building-Programs/community-building-programs.json +++ b/Projects/Governance/Schemas/Docs-Nodes/C/Community/Community-Building-Programs/community-building-programs.json @@ -7,7 +7,8 @@ { "language": "ES", "text": "Superalgos prospera a través de contribuciones y colaboración. Diseñamos el Community Building Programs para fomentar una comunidad en la que los miembros siempre estén dispuestos a ayudar y retribuir. El nodo puede generar los nodos Referral Program, Support Program, y Mentorship Program.", - "updated": 1630896389287 + "updated": 1630896389287, + "style": "Definition" } ] }, @@ -20,55 +21,132 @@ { "style": "Success", "text": "Learn more about how Token Power Flows into these programs!", - "updated": 1630218909731 + "updated": 1630218909731, + "translations": [ + { + "language": "ES", + "text": "Aprenda más a cerca de como fluye el Token Power en estos programas!", + "updated": 1633521539329 + } + ] }, { "style": "Text", - "text": "Each of the Community Building Programs has an associated Rewards Pool and a Bonus Pool under the Governance Programs > Community Building Programs section of the Superalgos Pools hierarchy." + "text": "Each of the Community Building Programs has an associated Rewards Pool and a Bonus Pool under the Governance Programs > Community Building Programs section of the Superalgos Pools hierarchy.", + "translations": [ + { + "language": "ES", + "text": "Cada programa del Community Building Programs tiene asociada una Rewards Pool y un Bonus Pool debajo de Governance Programs > Community Building Programs en la sección de la jerarquía de Superalgos Pools.", + "updated": 1633521703488 + } + ] }, { "style": "Note", "text": "The incentives entailed in a Bonus Pool are explained in the Tokens Bonus node.", - "updated": 1630170463942 + "updated": 1630170463942, + "translations": [ + { + "language": "ES", + "text": "Los incentivos implicados en una Bonus Pool están explicados en el nodo Tokens Bonus.", + "updated": 1633521794403 + } + ] }, { "style": "Text", "text": "Let's explore how each Rewards Pool is distributed in the case of Community Building Programs. In general terms, the Referral Program, Support Program, and Mentorship Program all have the following common rules:", - "updated": 1630399976367 + "updated": 1630399976367, + "translations": [ + { + "language": "ES", + "text": "Exploremos como cada Rewards Pool es distribuida en el caso de los programas de la Community Building Programs. En términos generales, el Referral Program, Support Program y el Mentorship Program todos tienen las siguientes reglas comunes:", + "updated": 1633522008747 + } + ] }, { "style": "List", "text": "When your profile is referenced by others through their User Referrer, User Supporter, or User Mentor nodes, they pass on 10% of the Referral Power, Support Power, or Mentorship Power available in the node to you. This is your Incoming Power in the corresponding program.", - "updated": 1630166954607 + "updated": 1630166954607, + "translations": [ + { + "language": "ES", + "text": "Cuando su profile es referenciado por otros a través de los nodos de su User Referrer, User Supporter, or User Mentor, ellos pasan un 10% del Referral Power, Support Power, or Mentorship Power disponible en el nodo a usted. Este es su Incoming Power en el programa correspondiente.", + "updated": 1633522227632 + } + ] }, { "style": "List", "text": "Your Incoming Power is added to your Own Power in the corresponding program, so that you may pass on more power to other User Profiles. Like in the reverse case, when you reference other User Profiles, you pass on 10% of the power that reaches the node establishing the reference.", - "updated": 1630166856996 + "updated": 1630166856996, + "translations": [ + { + "language": "ES", + "text": "Su Incoming Power es agregado a su propio Own Power en el programa correspondiente, para que entonces pueda enviar más power a otros User Profiles. Como en el caso contrario, cuando referencia a otros su User Profiles, usted pasa un 10% del power que alcanza el nodo que establece la referencia.", + "updated": 1633522374508 + } + ] }, { "style": "Important", "text": "This passing of 10% of the power from one user to the next has the effect of rewarding collaboration chains. ", - "updated": 1630683048349 + "updated": 1630683048349, + "translations": [ + { + "language": "ES", + "text": "Este pasar el 10% del power de un usuario al siguiente tiene el efecto de recompensar las cadenas de colaboración.", + "updated": 1633522479558 + } + ] }, { "style": "Callout", "text": "For instance, Alice tells her friend Bob about Superalgos. When Bob eventually sets up his User Profile, he declares Alice as his referrer. This means that Alice gets 10% of the Referral Power that Bob drives to his User Referrer node. Then, Bob brings his friend Charly to Superalgos. Charly sets up his profile and declares Bob as his referrer. So now Bob gets 10% of the Referral Power that Charly drives to his User Referrer node. ", - "updated": 1630683087674 + "updated": 1630683087674, + "translations": [ + { + "language": "ES", + "text": "Por ejemplo, Alice le habla a su amigo Bob a cerca de Superalgos. Cuando Bob eventualmente programa su User Profile, declara que Alice es su referido. Esto significa que Alice obtiene un 10% del Referral Power que Bob dirige a su nodo User Referrer. Entonces, Bob trae a su amigo Charly a Superalgos. Charly configura su profile y declara a Bob como su referido. Entonces ahora Bob obtiene un 10% del Referral Power que Charly dirige a su nodo de User Referrer.", + "updated": 1633522898254 + } + ] }, { "style": "Success", "text": "Can you see what happens with Alice's Incoming Referral Power? That's it! She gets 10% of Bob's power, which includes 10% of Charly's power and son on!", - "updated": 1630683111245 + "updated": 1630683111245, + "translations": [ + { + "language": "ES", + "text": "Puede ver lo que sucede con el Incoming Referral Power de Alice? Eso es! Ella obtiene un 10% del power de Bob, que incluye un 10% del power de Charly y así sucesivamente!", + "updated": 1633523067803 + } + ] }, { "style": "Note", - "text": "Pretty much the same happens with the Support Program and the Mentorship Program." + "text": "Pretty much the same happens with the Support Program and the Mentorship Program.", + "translations": [ + { + "language": "ES", + "text": "Prácticamente lo mismo ocurre con el Support Program y el Mentorship Program.", + "updated": 1633523110557 + } + ] }, { "style": "Text", "text": "The Incoming Power you get from other users is in a Direct Proportion to the number of tokens you get from the corresponding program Rewards Pool. The calculation is based on a Rule of Three, and the result is displayed under the Tokens Awarded node of the corresponding program.", - "updated": 1630682945130 + "updated": 1630682945130, + "translations": [ + { + "language": "ES", + "text": "El Incoming Power que obtiene de otros usuarios está en una Direct Proportion al número de tokens que obtiene del programa corespondiente de la Rewards Pool. El cálculo está basado en una Rule of Three, y el resutado es mostrado debajo del nodo de Tokens Awarded del programa correspondiente.", + "updated": 1633523351316 + } + ] }, { "style": "Json", From 1ec3f656a01f8210b20a9f7be5b8bbcb0bd350eb Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 14:50:53 +0200 Subject: [PATCH 54/73] This is my contribution to Superalgos --- .../Community-Mods/community-mods.json | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Concepts/C/Community/Community-Mods/community-mods.json b/Projects/Governance/Schemas/Docs-Concepts/C/Community/Community-Mods/community-mods.json index 6c7b216ba..593f1bfaf 100644 --- a/Projects/Governance/Schemas/Docs-Concepts/C/Community/Community-Mods/community-mods.json +++ b/Projects/Governance/Schemas/Docs-Concepts/C/Community/Community-Mods/community-mods.json @@ -2,7 +2,14 @@ "type": "Community Mods", "definition": { "text": "If you have a knack for lovingly explaining things, find pleasure in helping people, and wish to give back to the project, becoming a Community Mod may be great for you and the project!", - "updated": 1630005046805 + "updated": 1630005046805, + "translations": [ + { + "language": "ES", + "text": "Si tiene la habilidad de explicar las cosas amorosamente, disfruta de ayudar a la gente, y desea devolver al proyecto convitiéndose en un Community Mod ( moderador de la comunidad) puede ser muy bueno para usted y para el proyecto!", + "updated": 1633524089504 + } + ] }, "paragraphs": [ { @@ -13,7 +20,14 @@ { "style": "Callout", "text": "To become a Community Mod, you must go deep into the rabbit hole, study the Docs and tutorials, and start using the system. It takes a deep understanding of how things work before you’re able to explain it to someone else. That said, it doesn’t take much to help newcomers with the easier questions. You may get involved and participate in the Community Group and Support Group, and, at some point, we’ll draft you to join the team!", - "updated": 1630495449816 + "updated": 1630495449816, + "translations": [ + { + "language": "ES", + "text": "Para convertirse en un Community Mod, debe ir más profundo al meollo de la cuestión, estudie los Docs y los tutoriales, y comience a usar el sistema. Conlleva un entendimiento más profundo de como funcionan las cosas antes de que esté en condiciones de explicarle a alguién más. Dicho esto, no se necesita demaciado para ayudar a las preguntas más faciles de los recién llegados. Puede comprometerse y participar en el Community Group y el Support Group, y, en algún momento, lo invitaremos a formar parte del equipo!", + "updated": 1633524555342 + } + ] } ] } \ No newline at end of file From 59f0202485ada99250cc28add63c777eb8d2ffbb Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 16:27:55 +0200 Subject: [PATCH 55/73] This is my contribution to Superalgos --- .../Referral-Program/referral-program.json | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Nodes/R/Referral/Referral-Program/referral-program.json b/Projects/Governance/Schemas/Docs-Nodes/R/Referral/Referral-Program/referral-program.json index a8af0e6ff..c77421941 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/R/Referral/Referral-Program/referral-program.json +++ b/Projects/Governance/Schemas/Docs-Nodes/R/Referral/Referral-Program/referral-program.json @@ -2,7 +2,14 @@ "type": "Referral Program", "definition": { "text": "The referral program incentivizes the promotion of the project, either by word-of-mouth or “en masse” through articles, social media posts, videos, and other forms of influencer marketing.", - "updated": 1630227795694 + "updated": 1630227795694, + "translations": [ + { + "language": "ES", + "text": "El referral program incentiva la promoción del proyecto, ya sea de boca en boca o en masa a través de artículos, posteos en redes sociales, videos y otras formas de influencias en marketing .", + "updated": 1633524918233 + } + ] }, "paragraphs": [ { @@ -17,11 +24,25 @@ }, { "style": "Text", - "text": "With this program, you may earn Superalgos SA Tokens for every user you refer to the project, and also for the users they refer!" + "text": "With this program, you may earn Superalgos SA Tokens for every user you refer to the project, and also for the users they refer!", + "translations": [ + { + "language": "ES", + "text": "Con este programa, puede ganar Superalgos SA Tokens por cada usuario que usted refiera al proyecto, y tambien por los usuarios que ellos referencien!", + "updated": 1633525009280 + } + ] }, { "style": "Callout", - "text": "To participate, you must spawn the Referral Program and declare your referrer. To do that, add a User Referrer node and use it to establish a reference to the User Profile of the person that referred you to Superalgos. If you have more than one referrer, simply add more User Referrer nodes." + "text": "To participate, you must spawn the Referral Program and declare your referrer. To do that, add a User Referrer node and use it to establish a reference to the User Profile of the person that referred you to Superalgos. If you have more than one referrer, simply add more User Referrer nodes.", + "translations": [ + { + "language": "ES", + "text": "Para participar, debe extender el programa Referral Program y declarar su referido. Para hacer esto, agregue un nodo al User Referrer y úselo para establecer el User Profile de la persona que lo refirió a Superalgos. Si tiene más de un referido, simplemente agregue más nodos al User Referrer.", + "updated": 1633530224609 + } + ] }, { "style": "Text", @@ -29,7 +50,14 @@ }, { "style": "Text", - "text": "Declaring your referrers is the best way to thank the people that may have written that article or tweet, produced that video, maintained the website, or told you about Superalgos! Without them, you probably wouldn’t be here yet!" + "text": "Declaring your referrers is the best way to thank the people that may have written that article or tweet, produced that video, maintained the website, or told you about Superalgos! Without them, you probably wouldn’t be here yet!", + "translations": [ + { + "language": "ES", + "text": "Declarar sus referidos es el mejor modo de agradecerle a la gente que escribió el artículo o tweeteo, produjo ese video, realizó el mantenimiento de la web, o te habló a cerca de Superalgos! Sin ellos, probablemente no estaría aquí todavía!", + "updated": 1633530419731 + } + ] }, { "style": "Include", From 060418e4d61139e50c2cffc9dc3698863bb32d64 Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 17:03:34 +0200 Subject: [PATCH 56/73] This is my contribution to Superalgos --- ...to-governance-001-governance-overview.json | 59 ++++++++++++------- ...nance-002-participating-in-governance.json | 36 +++++++++-- 2 files changed, 71 insertions(+), 24 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-001-governance-overview.json b/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-001-governance-overview.json index 765df4065..4de5e2585 100644 --- a/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-001-governance-overview.json +++ b/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-001-governance-overview.json @@ -9,7 +9,8 @@ { "language": "ES", "text": "La gobernanza del proyecto de Superalgos está distribuída entre todos los miembros de la comunidad que estén dispuestos a participar. Puede comprometerse de múltiples maneras, ayudar a dirigir el desarrollo en las direcciones deseadas, y contribuir a nutrir una comunidad saludable.", - "updated": 1633345029161 + "updated": 1633345029161, + "style": "Definition" } ] }, @@ -22,7 +23,8 @@ { "language": "ES", "text": "Para participar en la gobernanza, los miembros de la comunidad apalancan su tenencia de Superalgos SA Token, ejerciendo influencia proporcional a su Token Power y a su Reputation. La inlfuencia combinada de todos los tenedores de token que participan en la gobernancia determinan, entre otras cosas:", - "updated": 1633345582953 + "updated": 1633345582953, + "style": "Text" } ] }, @@ -33,7 +35,8 @@ { "language": "ES", "text": "Que Positions, Features, Assets, o actividades de desarrollo de proyectos, en general, están incentivados y cómo.", - "updated": 1633348402852 + "updated": 1633348402852, + "style": "List" } ] }, @@ -44,7 +47,8 @@ { "language": "ES", "text": "Que contribuyentes son pagados por cuales contribuciones.", - "updated": 1633345751024 + "updated": 1633345751024, + "style": "List" } ] }, @@ -55,7 +59,8 @@ { "language": "ES", "text": "Qué programas se financian y cómo", - "updated": 1633345784026 + "updated": 1633345784026, + "style": "List" } ] }, @@ -66,7 +71,8 @@ { "language": "ES", "text": "Puede ejercer su influencia de forma dinámica, ya que puede redirigir su Token Power en cualquier momento. La distribución de Token Power en cada lanzamiento del software — atado al correspondiente Superalgos SA Token Distribution Event — determina cómo se distribuyen los tokens asignados al lanzamiento.", - "updated": 1633345986132 + "updated": 1633345986132, + "style": "Text" } ] }, @@ -77,7 +83,8 @@ { "language": "ES", "text": "El Governance Project está diseñado como un sistema flexible que permite a la comunidad ejercer influencia en direcciones arbitrarias de manera dinámica. Permite que la gobernanza evolucione con el proyecto. también promueve la innovación sin permiso, ya que los Colaboradores pueden proponer nuevas áreas de desarrollo y conducir a la comunidad incentivar expansion a lo largo de lineas nuevas.", - "updated": 1633346387045 + "updated": 1633346387045, + "style": "Text" } ] }, @@ -88,7 +95,8 @@ { "language": "ES", "text": "Una comunidad comprometida con la gobernanza es fundamental para el desarrollo del proyecto, por lo tanto se incentiva la participación, en otras palabras, ganará Superalgos SA Tokens si forma parte de la gobernanza de Superalgos.", - "updated": 1633346519203 + "updated": 1633346519203, + "style": "Note" } ] }, @@ -103,7 +111,8 @@ { "language": "ES", "text": "El sistema de gobernanza se implementa con Superalgos, haciendo uso de los mismos recursos de secuencias de comandos visuale, estructuras de datos jerárquicos, y conceptos tales como referencias que conforman el paradigma de Superalgos con el que está familiarizado.", - "updated": 1633346787559 + "updated": 1633346787559, + "style": "Text" } ] }, @@ -114,7 +123,8 @@ { "language": "ES", "text": "Como tal, la gobernanza no requiere el uso de contratos inteligentes para hacer cumplir reglas inmutables. Por el contrario, en Superalgos, la gobernanza es una noción en constante evolución, muy parecida al resto del proyecto. ", - "updated": 1633346878247 + "updated": 1633346878247, + "style": "Text" } ] }, @@ -126,7 +136,8 @@ { "language": "ES", "text": "Esta flexibilidad es una característica crucial que nos permitirá hacer evolucionar el sistema de gobernanza, adaptar la teoría del juego detrás de él y corregir cualquier vulnerabilidad que los malos actores puedan encontrar con el tiempo", - "updated": 1633346945113 + "updated": 1633346945113, + "style": "Callout" } ] }, @@ -138,7 +149,8 @@ { "language": "ES", "text": "La gobernanza está definida a través de múltiples Governance Workspaces que los usuarios pueden cargar y contribuir con. Estos espacios de trabajo presentan las definiciones de varias jerarquías que determinan la relación de todos los conceptos que afectan la gobernanza.", - "updated": 1633347120583 + "updated": 1633347120583, + "style": "Text" } ] }, @@ -150,7 +162,8 @@ { "language": "ES", "text": "Para participar en la gobernanaza, los usuarios deben configurar y enviar un User Profile plugin que define cómo pretenden ejercer la influencia conferida por sus tenencias de Superalgos SA Token. La inlfuencia y participación está definida mediante diferentes tipos de programas, votos y declaraciones.", - "updated": 1633347353982 + "updated": 1633347353982, + "style": "Text" } ] }, @@ -162,7 +175,8 @@ { "language": "ES", "text": "El sistema de gobernanza computa los votos y las declaraciones en tiempo real, mostrando una vista previa de lo que la distribucion showing a preview of what the distribution puede parecer, en el UI.", - "updated": 1633347466937 + "updated": 1633347466937, + "style": "Text" } ] }, @@ -186,7 +200,8 @@ { "language": "ES", "text": "Porque las definiciones que afectan a la gobernanza envia como plugin con el software, el proceso es transparente y auditable.", - "updated": 1633347687363 + "updated": 1633347687363, + "style": "Text" } ] }, @@ -198,7 +213,8 @@ { "language": "ES", "text": "cualquier usuario puede, en cualquier momento, cargar el correspondiente Plugin Workspaces y visualizar and visualizecómo la influencia está siendo ejercida por todos participantes titulares de Superalgos SA Token..", - "updated": 1633347841894 + "updated": 1633347841894, + "style": "List" } ] }, @@ -209,7 +225,8 @@ { "language": "ES", "text": "Cualquier usuario puede verificar Any user may verify todas las métricas gestionadas por el Governance Project en las tablas desplegadas en el Governace Tab.", - "updated": 1633347961533 + "updated": 1633347961533, + "style": "List" } ] }, @@ -220,7 +237,8 @@ { "language": "ES", "text": "Cualquier usuario puede hacer correr una simulación de el proceso de distribución de Superalgos SA Token y verificar verify cómo se distribuirán los tokens asignados a la próxima versión.", - "updated": 1633348037956 + "updated": 1633348037956, + "style": "List" } ] }, @@ -231,8 +249,9 @@ "translations": [ { "language": "ES", - "text": "Cualquier usuario puede obtener (mediante GitHub) y cargar versiones históricas del software, y hacer correr una simulación de Superalgos SA Token Distribution Event para verificar como los tokens han sido distribuidos ten lasnzamientos anteriores. Note quet, en este caso, el número absoluto de votos puede no ser válido ya que las tenencias de token habrán variado, de todas maneras, cualquier usuario puede validar la distribución relativa.", - "updated": 1633348350518 + "text": "Cualquier usuario puede obtener (mediante GitHub) y cargar versiones históricas del software, y hacer correr una simulación de Superalgos SA Token Distribution Event para verificar como los tokens han sido distribuidos ten lanzamientos anteriores. Note quet, en este caso, el número absoluto de votos puede no ser válido ya que las tenencias de token habrán variado, de todas maneras, cualquier usuario puede validar la distribución relativa.", + "updated": 1633531601031, + "style": "List" } ] } diff --git a/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-002-participating-in-governance.json b/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-002-participating-in-governance.json index 79273027b..0029c80b2 100644 --- a/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-002-participating-in-governance.json +++ b/Projects/Governance/Schemas/Docs-Topics/I/Introduction/Introduction-to-Governance/introduction-to-governance-002-participating-in-governance.json @@ -4,22 +4,50 @@ "type": "Participating in Governance", "definition": { "text": "To participate in governance, you must set up your User Profile — a hierarchy that defines how you intend to use the Token Power conferred by your token holdings.", - "updated": 1624698139967 + "updated": 1624698139967, + "translations": [ + { + "language": "ES", + "text": "Para participar en la gobernanza, debes configurar tu User Profile — una jerarquía que define cómo puede usar el the Token Power conferido por tu tenencia de token.", + "updated": 1633531879183 + } + ] }, "paragraphs": [ { "style": "Text", "text": "How you use your Token Power is defined in several programs within the hierarchy. For instance, the Claims Program lets you present claims for the work you’ve done. We’ll cover all programs in detail.", - "updated": 1624698150117 + "updated": 1624698150117, + "translations": [ + { + "language": "ES", + "text": "Cómo use su Token Power está definido por diferentes programas incluídos en la jerarquía. Por ejemplo, los Claims Program le permite presentar declaraciones por el trabajo qe haya realizado. Cubriremos todos los programas en detalle.", + "updated": 1633532034348 + } + ] }, { "style": "Text", - "text": "Your User Profile points to a Superalgos SA Token address you create from within Superalgos. You validate your address by signing a cryptographic proof, also from within Superalgos, so that the system becomes aware of the number of tokens in the address, and assigns your profile an equivalent amount of Token Power." + "text": "Your User Profile points to a Superalgos SA Token address you create from within Superalgos. You validate your address by signing a cryptographic proof, also from within Superalgos, so that the system becomes aware of the number of tokens in the address, and assigns your profile an equivalent amount of Token Power.", + "translations": [ + { + "language": "ES", + "text": "Sus puntos del User Profile marcan una dirección de Superalgos SA Token que usted crea desde dentro de Superalgos. Valida su dirección confirmando una prueba de firma criptográfica, también desde Superalgos, entonces el sistema se da cuenta de la cantidad de tokens en su dirección, y le asigna a su profile el monto equivalente de Token Power.", + "updated": 1633532428398 + } + ] }, { "style": "Success", "text": "The address you generate is also the address to which the project will send the tokens you earn for your contributions. We call it you Governance Address.", - "updated": 1629993655810 + "updated": 1629993655810, + "translations": [ + { + "language": "ES", + "text": "TLa dirección que genere es también la dirección donde el proyecto le envie los tokens que haya ganado por sus contribuciones. Nosotros la llamamos su Governance Address ( dirección de gobernanza).", + "updated": 1633532569964 + } + ] } ] } \ No newline at end of file From 9d2acc5a58a5da831f5c0679b06430b56d15d64a Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 17:07:48 +0200 Subject: [PATCH 57/73] This is my contribution to Superalgos --- .../T/Token/Token-Power/token-power.json | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Concepts/T/Token/Token-Power/token-power.json b/Projects/Governance/Schemas/Docs-Concepts/T/Token/Token-Power/token-power.json index bf016317f..07b21fc00 100644 --- a/Projects/Governance/Schemas/Docs-Concepts/T/Token/Token-Power/token-power.json +++ b/Projects/Governance/Schemas/Docs-Concepts/T/Token/Token-Power/token-power.json @@ -2,7 +2,14 @@ "type": "Token Power", "definition": { "text": "Your Token Power is equal to the number of Superalgos SA Tokens in your Governance Address, and is a measure of the influence you have in relation with the influence of the rest of Contributors participating in governance.", - "updated": 1624780307783 + "updated": 1624780307783, + "translations": [ + { + "language": "ES", + "text": "Su Token Power es igual al número de Superalgos SA Tokens en su Governance Address, y es una medida de la influencia que tiene con respecto a la influencia del resto de los contribuyentes participando de la gobernanza.", + "updated": 1633532803325 + } + ] }, "paragraphs": [ { @@ -12,7 +19,14 @@ }, { "style": "Callout", - "text": "Your Token Power is equal to the number of Superalgos SA Tokens in your Governance Address, and is a measure of the influence you have in relation with the influence of the rest of Contributors participating in governance." + "text": "Your Token Power is equal to the number of Superalgos SA Tokens in your Governance Address, and is a measure of the influence you have in relation with the influence of the rest of Contributors participating in governance.", + "translations": [ + { + "language": "ES", + "text": "Su Token Power es igual al número de Superalgos SA Tokens en su Governance Address, y es una medida de la influencia que tiene con respecto a la influencia del resto de los contribuyentes participando de la gobernanza.", + "updated": 1633532837434 + } + ] } ] } \ No newline at end of file From 2fbcd3fa57ae41d0c999a5912e95eb7f32871910 Mon Sep 17 00:00:00 2001 From: ssplatt Date: Wed, 6 Oct 2021 12:24:18 -0400 Subject: [PATCH 58/73] fix twitter bot reference name to fix 'delete node' --- Projects/Foundations/Schemas/App-Schema/twitter-bot.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Foundations/Schemas/App-Schema/twitter-bot.json b/Projects/Foundations/Schemas/App-Schema/twitter-bot.json index 27f8ab800..231abf004 100644 --- a/Projects/Foundations/Schemas/App-Schema/twitter-bot.json +++ b/Projects/Foundations/Schemas/App-Schema/twitter-bot.json @@ -37,5 +37,5 @@ "compatibleTypes": "->Social Bots->" }, "childrenNodesProperties": [], - "propertyNameAtParent": "TwitterBots" + "propertyNameAtParent": "twitterBots" } From 87d2252c4331b1a087ebc823e899fc7259e444e4 Mon Sep 17 00:00:00 2001 From: ssplatt Date: Wed, 6 Oct 2021 12:48:54 -0400 Subject: [PATCH 59/73] update path to persistent data to match new locations --- Docker/Dockerfile | 2 +- Docker/docker-compose.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 81d60a6bd..1448d6ec2 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -12,5 +12,5 @@ RUN apk add --no-cache --virtual .build-deps make g++ \ USER superalgos EXPOSE 34248 EXPOSE 18041 -VOLUME ["/app/Data-Storage", "/app/Log-Files", "/app/My-Workspaces"] +VOLUME ["/app/Platform/My-Data-Storage", "/app/Platform/My-Log-Files", "/app/Platform/My-Workspaces"] ENTRYPOINT ["node", "platform", "noBrowser"] diff --git a/Docker/docker-compose.yml b/Docker/docker-compose.yml index 40efbd552..e05751cc3 100644 --- a/Docker/docker-compose.yml +++ b/Docker/docker-compose.yml @@ -11,7 +11,7 @@ services: - '34248:34248' - '18041:18041' volumes: - - ../Data-Storage:/app/Data-Storage - - ../Log-Files:/app/Log-Files - - ../My-Workspaces:/app/My-Workspaces + - ../Platform/My-Data-Storage:/app/Platform/My-Data-Storage + - ../Platform/My-Log-Files:/app/Platform/My-Log-Files + - ../Platform/My-Workspaces:/app/Platform/My-Workspaces restart: on-failure From db4ad1b0e4a356e7b0e20d0655ea7d54498f1adf Mon Sep 17 00:00:00 2001 From: eNut Date: Wed, 6 Oct 2021 19:47:00 +0200 Subject: [PATCH 60/73] This is my contribution to Superalgos --- Projects/Governance/Plugins/User-Profiles/e-Nut.json | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Projects/Governance/Plugins/User-Profiles/e-Nut.json b/Projects/Governance/Plugins/User-Profiles/e-Nut.json index fc875dd70..c111f31a3 100644 --- a/Projects/Governance/Plugins/User-Profiles/e-Nut.json +++ b/Projects/Governance/Plugins/User-Profiles/e-Nut.json @@ -137,7 +137,9 @@ "referenceParentCombinedNodePath": [ [ "Julian-Molina", - "User Profile" + "User Profile", + "Governance", + "b85aaac1-0708-4aec-97f9-bc3cc70e530a" ] ] } @@ -462,12 +464,12 @@ "id": "9d54ff41-1328-4e8b-b7b3-e71a5b0404df", "savedPayload": { "position": { - "x": 26796.666666666668, - "y": 12039 + "x": 26666.666666666668, + "y": 19850 }, "targetPosition": { - "x": 26796.666666666668, - "y": 12039 + "x": 26666.666666666668, + "y": 19850 }, "floatingObject": { "isPinned": false, From f789e2d57826d0cb86173d04cec709850d64de7b Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 20:01:24 +0200 Subject: [PATCH 61/73] This is my contribution to Superalgos --- ...s-001-beta-11-claim-governance-system.json | 99 ++++++++++++++++--- 1 file changed, 88 insertions(+), 11 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json b/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json index ea59210be..6f08ed864 100644 --- a/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json +++ b/Projects/Governance/Schemas/Docs-Topics/B/Beta/Beta-11-Claims/beta-11-claims-001-beta-11-claim-governance-system.json @@ -4,7 +4,14 @@ "type": "Beta 11 Claim - Governance System", "definition": { "text": "Governance of the Superalgos Project is distributed among all members of the Superalgos Community willing to participate. The Governance System is built-in the Superalgos Platform, so participating is quite straightforward.", - "updated": 1628249171408 + "updated": 1628249171408, + "translations": [ + { + "language": "ES", + "text": "La gobernanza del proyecto de Superalgos Project es distribuída sentre todos los miembros de la Superalgos Community que deseen participar. El Governance System ( sistema de gobernanza) seconstruye en la Superalgos Platform, por lo que participar es bastante sencillo.", + "updated": 1633533118734 + } + ] }, "paragraphs": [ { @@ -18,11 +25,25 @@ }, { "style": "Text", - "text": "To participate in governance, community members leverage their Superalgos SA Token holdings, exerting influence proportional to their Token Power. The combined influence of all token holders participating in governance determines how the token is distributed upon each release." + "text": "To participate in governance, community members leverage their Superalgos SA Token holdings, exerting influence proportional to their Token Power. The combined influence of all token holders participating in governance determines how the token is distributed upon each release.", + "translations": [ + { + "language": "ES", + "text": "Para participar en la gobernanza, los miembros de la comunidad, promedian su tentencia de Superalgos SA Token, ejerciendo una influencia proporcional a su Token Power. La influencia combinada de todos los que tienen token participando en la gobernanza determina como el token se distribuye encada liberación.", + "updated": 1633533342249 + } + ] }, { "style": "Success", - "text": "Even if you have no tokens to start with, the Community will delegate Token Power to your profile so that you may get started!" + "text": "Even if you have no tokens to start with, the Community will delegate Token Power to your profile so that you may get started!", + "translations": [ + { + "language": "ES", + "text": "Aún cuando no tenga tokens para comenzar, la comunidad delegará Token Power a su profile para que pueda comenzar!", + "updated": 1633533429717 + } + ] }, { "style": "Subtitle", @@ -31,19 +52,47 @@ }, { "style": "List", - "text": "What Positions, Features, Assets, or project-development activities, in general, are incentivized and how." + "text": "What Positions, Features, Assets, or project-development activities, in general, are incentivized and how.", + "translations": [ + { + "language": "ES", + "text": "Qué Positions, Features, Assets, o actividades de desarrollo del proyecto, en general, son incentivados y cómo.", + "updated": 1633533525021 + } + ] }, { "style": "List", - "text": "Which Contributors are compensated for which Contributions." + "text": "Which Contributors are compensated for which Contributions.", + "translations": [ + { + "language": "ES", + "text": "Qué Contribuyentes son recompensados y por cuáles contribuciones.", + "updated": 1633533586785 + } + ] }, { "style": "List", - "text": "What Programs are funded and how." + "text": "What Programs are funded and how.", + "translations": [ + { + "language": "ES", + "text": "Qué Programs son creados y cómo.", + "updated": 1633533612445 + } + ] }, { "style": "Text", - "text": "Governance is designed as a flexible system that allows the Community to dynamically direct influence in arbitrary directions." + "text": "Governance is designed as a flexible system that allows the Community to dynamically direct influence in arbitrary directions.", + "translations": [ + { + "language": "ES", + "text": "La gobernanza está diseñada como un sistema flexible que la comunidad dinámicamente dirija influencia en direcciones arbitrarias.", + "updated": 1633533779710 + } + ] }, { "style": "Subtitle", @@ -52,11 +101,25 @@ }, { "style": "Text", - "text": "A Community engaged in governance is crucial for the development of the project, therefore participation is incentivized. In other words, you will earn Superalgos SA Tokens simply by taking part in the governance of Superalgos." + "text": "A Community engaged in governance is crucial for the development of the project, therefore participation is incentivized. In other words, you will earn Superalgos SA Tokens simply by taking part in the governance of Superalgos.", + "translations": [ + { + "language": "ES", + "text": "Una Community comprometida en la gobernanza es crucial para el desarrollo del proyecto, por lo tanto se incentiva la participación. En otras palabras, ganará Superalgos SA Tokens simplemente por ser parte de la gobernanza de Superalgos.", + "updated": 1633542770033 + } + ] }, { "style": "Text", - "text": "The system allows governance to evolve with the project. It also encourages permissionless innovation, as Contributors may propose new areas of development and rally the Community to incentivize expansion along new lines." + "text": "The system allows governance to evolve with the project. It also encourages permissionless innovation, as Contributors may propose new areas of development and rally the Community to incentivize expansion along new lines.", + "translations": [ + { + "language": "ES", + "text": "El sistema permite que la gobernanza evolucione con el proyecto. Tambien motiva a la innovación sin permiso, ya que los contribuyentes pueden proponer nuevas áreas de desarrollo y manejar a la comunidad para que se motive para expandir nuevas lineas.", + "updated": 1633543011570 + } + ] }, { "style": "Title", @@ -64,11 +127,25 @@ }, { "style": "Text", - "text": "The Governance System was built from scracth as a new Software Project within the Superalgos Codebase." + "text": "The Governance System was built from scracth as a new Software Project within the Superalgos Codebase.", + "translations": [ + { + "language": "ES", + "text": "El sistema de gobierno fue construído sobre los bocetos de un nuevo proyecto de Software incluído en el código de base de Superalgos.", + "updated": 1633543179992 + } + ] }, { "style": "Text", - "text": "The following Governance Programs were developed at this time:" + "text": "The following Governance Programs were developed at this time:", + "translations": [ + { + "language": "ES", + "text": "Los siguientes programas de Governance Programs fueron desarrollados en este tiempo:", + "updated": 1633543245169 + } + ] }, { "style": "Subtitle", From 9afff7174dfcc1c6d8ac2f5cbe24fece014f4a1f Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 20:33:04 +0200 Subject: [PATCH 62/73] This is my contribution to Superalgos --- .../Support-Program/support-program.json | 54 ++++++++++++++++--- ...user-profile-007-the-referral-program.json | 9 +++- .../user-profile-008-the-support-program.json | 9 +++- ...er-profile-009-the-mentorship-program.json | 9 +++- ...e-010-votes-and-claims-programs-intro.json | 9 +++- 5 files changed, 80 insertions(+), 10 deletions(-) diff --git a/Projects/Governance/Schemas/Docs-Nodes/S/Support/Support-Program/support-program.json b/Projects/Governance/Schemas/Docs-Nodes/S/Support/Support-Program/support-program.json index 8a5c11524..7818aa6ef 100644 --- a/Projects/Governance/Schemas/Docs-Nodes/S/Support/Support-Program/support-program.json +++ b/Projects/Governance/Schemas/Docs-Nodes/S/Support/Support-Program/support-program.json @@ -2,7 +2,14 @@ "type": "Support Program", "definition": { "text": "At Superalgos, we take pride in the level of support we offer to newcomers and the Community in general. It is a crucial aspect of our culture, based above all on collaboration. The Support Program enables the Community to compensate Community Mods contributing to the project’s support efforts.", - "updated": 1630231393370 + "updated": 1630231393370, + "translations": [ + { + "language": "ES", + "text": "En Superalgos, estamos orgullosos del nivel de soporte que ofrecemos a los recién llegados y a la comunidad en general. Es un aspecto crucial de nuestra cultura, basada por sobre todo en la colaboración. El Support Program posibilita a la comunidad compensar a los Community Mods contribuyendo a los esfuerzos de soporte del proyecto.", + "updated": 1633544186835 + } + ] }, "paragraphs": [ { @@ -17,26 +24,61 @@ }, { "style": "Text", - "text": "Superalgos is a vast system and the learning curve is still quite steep. Many users need help, particularly during the early stages." + "text": "Superalgos is a vast system and the learning curve is still quite steep. Many users need help, particularly during the early stages.", + "translations": [ + { + "language": "ES", + "text": "Superalgos es un sistema vasto y y la curva de aprendizaje aún es un largo paso. Muchos usuarios ayudan, particularmente durante las etapas tempranas.", + "updated": 1633544374767 + } + ] }, { "style": "Text", - "text": "While the Community is always ready to help with typical questions, we’ve noticed that it takes a certain level of experience and knowledge to provide effective support. This is why select Community Mods are in charge of the Support Group." + "text": "While the Community is always ready to help with typical questions, we’ve noticed that it takes a certain level of experience and knowledge to provide effective support. This is why select Community Mods are in charge of the Support Group.", + "translations": [ + { + "language": "ES", + "text": "Mientras que la Community está siempre lista para ayudar con las preguntas típicas, hemos notado que lleva cierto nivel de experiencia y conocimiento para porveer un soporte efectivo. Por esto es que la selección de Community Mods está a cargo del Support Group.", + "updated": 1633544529696 + } + ] }, { "style": "Note", "text": "If you ever wish to join the team of Community Mods, start participating in the various Telegram groups and Discord channels, helping users and answering questions. We’ll soon spot you and draft you into the Community Mods team!", - "updated": 1630231465692 + "updated": 1630231465692, + "translations": [ + { + "language": "ES", + "text": "Si alguna vez desea sumarse al equipo de los Community Mods, empieza a participar de varios de los grupos de Telegram y del Discord channels, ayudando a usuarios y respondiendo preguntas. Pronto lo descubriremos y lo llevaremos al equipo de los Community Mods!", + "updated": 1633544734836 + } + ] }, { "style": "Callout", "text": "To participate, you must spawn the Support Program and declare your favorite supporters. To do that, add a User Supporter node and use it to establish a reference to the User Profile of the person that has helped you the most! If you have more than one favorite supporter, add more User Supporter nodes!", - "updated": 1630231527435 + "updated": 1630231527435, + "translations": [ + { + "language": "ES", + "text": "Para participar, debe desplegar el Support Program y declarar sus supporters favoritos. Para hacer esto, agregue un nodo de User Supporter y uselo para establecer la referencia al User Profile de la persona que le ha ayudado más! Si tien más de un supporter favorito, agregue más nodos de User Supporter!", + "updated": 1633544936312 + } + ] }, { "style": "Text", "text": "If you seldom use the Support Group, that may be thanks to the effort put in crafting tutorials and documentation. If that is your case, then feel free to select the individuals or teams doing this work as your preferred supporters!", - "updated": 1630231554533 + "updated": 1630231554533, + "translations": [ + { + "language": "ES", + "text": "Si rara vez usael grupo de Support, eso puede ser gracias al esfuerzo puesto en montar tutoriales y documentacion. Si es ese su caso, siéntase libre de elegir individuos o equipos haciendo este trabajo como sus supporters preferidos!", + "updated": 1633545138992 + } + ] }, { "style": "Include", diff --git a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-007-the-referral-program.json b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-007-the-referral-program.json index 90f10c092..9483060fb 100644 --- a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-007-the-referral-program.json +++ b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-007-the-referral-program.json @@ -4,7 +4,14 @@ "type": "The Referral Program", "definition": { "text": "Help us spread the word about Superalgos!", - "updated": 1630495118436 + "updated": 1630495118436, + "translations": [ + { + "language": "ES", + "text": "Ayúdanos a correr la voz a cerca de Superalgos!", + "updated": 1633543506732 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-008-the-support-program.json b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-008-the-support-program.json index a8d51e094..679f7bb9b 100644 --- a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-008-the-support-program.json +++ b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-008-the-support-program.json @@ -4,7 +4,14 @@ "type": "The Support Program", "definition": { "text": "Let's reward Community Mods so that they keep up the good work, and so that more people want to join the team!", - "updated": 1630495305649 + "updated": 1630495305649, + "translations": [ + { + "language": "ES", + "text": "Premiemos a los Community Mods para que ellos continúen haciendo un buen trabajo, y por eso más gente querrá sumarse al equipo!", + "updated": 1633543661376 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-009-the-mentorship-program.json b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-009-the-mentorship-program.json index a63fb74c3..17fe27a4a 100644 --- a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-009-the-mentorship-program.json +++ b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-009-the-mentorship-program.json @@ -4,7 +4,14 @@ "type": "The Mentorship Program", "definition": { "text": "Helps us reward mentors so that they keep up the good work forming Contributors!", - "updated": 1630495605300 + "updated": 1630495605300, + "translations": [ + { + "language": "ES", + "text": "Ayudénos a premiar a los mentores así ellos continuan haciendo un buen trabajo formando a los contribuyentes!", + "updated": 1633543826508 + } + ] }, "paragraphs": [ { diff --git a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-010-votes-and-claims-programs-intro.json b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-010-votes-and-claims-programs-intro.json index c0cc1deb7..9e5b6abbe 100644 --- a/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-010-votes-and-claims-programs-intro.json +++ b/Projects/Governance/Schemas/Docs-Topics/U/User/User-Profile/user-profile-010-votes-and-claims-programs-intro.json @@ -4,7 +4,14 @@ "type": "Votes And Claims Programs Intro", "definition": { "text": "Help us govern the Superalgos Project!", - "updated": 1630495810385 + "updated": 1630495810385, + "translations": [ + { + "language": "ES", + "text": "Ayúdenos a gobernar el proyecto de Superalgos!", + "updated": 1633543892451 + } + ] }, "paragraphs": [ { From 5a3d40169c2464a5edd675b82bd1fdd85388288c Mon Sep 17 00:00:00 2001 From: EvaMaria70 Date: Wed, 6 Oct 2021 20:44:15 +0200 Subject: [PATCH 63/73] This is my contribution to Superalgos --- ...15-tutorial-step-about-our-governance.json | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-115-tutorial-step-about-our-governance.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-115-tutorial-step-about-our-governance.json index 100b404d7..b510a2cb8 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-115-tutorial-step-about-our-governance.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-115-tutorial-step-about-our-governance.json @@ -8,28 +8,63 @@ "name": "\\governance-project", "project": "Governance" }, - "updated": 1629835261024 + "updated": 1629835261024, + "translations": [ + { + "language": "ES", + "text": "Antes de dejarlo con el siguiente tutorial, debe saber que Superalgos es un proyecto crypto project con gobernanza distribuida!", + "updated": 1633545502625 + } + ] }, "paragraphs": [ { "style": "List", "text": "You may earn Superalgos SA Tokens and Reputation by contributing to the project.", - "updated": 1630065210887 + "updated": 1630065210887, + "translations": [ + { + "language": "ES", + "text": "Puede ganar Superalgos SA Tokens y Reputation por contribuir al proyecto.", + "updated": 1633545548293 + } + ] }, { "style": "List", "text": "Then you may leverage your tokens and reputation to participate in Governance Programs.", - "updated": 1629834501563 + "updated": 1629834501563, + "translations": [ + { + "language": "ES", + "text": "Entonces puede aprovechar sus tokens y reputación para particiapar en los Governance Programs.", + "updated": 1633545620173 + } + ] }, { "style": "List", "text": "Participating in governance earns you more tokens, as helping direct the project is an important contribution in and of itself!", - "updated": 1629834600057 + "updated": 1629834600057, + "translations": [ + { + "language": "ES", + "text": "Participando en la gobernanza gana más tokens, ya que ayudar a dirigir el proyecto es una contribución importante en sí misma!", + "updated": 1633545710019 + } + ] }, { "style": "Note", "text": "You may earn your first few tokens with the Airdrops Program just by setting up your User Profile. But before you do that, you need to do a couple more tutorials to complete your education!", - "updated": 1629835202298 + "updated": 1629835202298, + "translations": [ + { + "language": "ES", + "text": "Puede ganar sus primeros pocos tokens con el Airdrops Program con solo programar su User Profile. Pero antes de que lo haga, necesita hacer un parmás de tutoriales para completar su educación!", + "updated": 1633545813091 + } + ] } ] } \ No newline at end of file From 1b04aa32e7075c2ba942d32c2120754c414f8f83 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 08:48:41 +0100 Subject: [PATCH 64/73] Electron wrapper for binaries --- electron-wrapper.js | 130 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 electron-wrapper.js diff --git a/electron-wrapper.js b/electron-wrapper.js new file mode 100644 index 000000000..b47a036be --- /dev/null +++ b/electron-wrapper.js @@ -0,0 +1,130 @@ +const {app, Menu, BrowserWindow} = require('electron') + +const path = require('path') +const fs = require('fs') + +const WINDOW_WIDTH = null +const WINDOW_HEIGHT = null + +var w + +var app_ready = false +var server_ready = false + +const port = 34248 // Default HTTP port + +/* To check if the folders where user data do exist. If not, create them */ +function userData() { + const dataStorage = path.join(process.cwd(), '/Platform/My-Data-Storage') + const logFiles = path.join(process.cwd(), '/Platform/My-Log-Files') + const workspace = path.join(process.cwd(), '/Platform/My-Workspaces') + + if (!fs.existsSync(dataStorage)) { + fs.mkdirSync(dataStorage) + } + + if (!fs.existsSync(logFiles)) { + fs.mkdirSync(logFiles) + } + + if (!fs.existsSync(workspace)) { + fs.mkdirSync(workspace) + } +} +run() + +function run() { + userData() + const { fork } = require('child_process') + fork(path.join(__dirname, './PlatformRoot.js'), { + execArgv: ['noBrowser'] + }) + + server_ready = true + if (app_ready) open() +} + +function open () { + let bw_options = { + width: WINDOW_WIDTH ? WINDOW_WIDTH : 1280, + height: WINDOW_HEIGHT ? WINDOW_HEIGHT : 720, + resizable: true + } + + w = new BrowserWindow( + bw_options + ) + + w.setResizable(true) + + w.loadURL("http://localhost:" + port) + + // w.webContents.openDevTools() + + w.on('closed', function () { + w = null + }) +} + +app.on('ready', function () { + app_ready = true + create_menus() + if (server_ready) open() +}) + +app.on('window-all-closed', function () { + app.quit() +}) + +function create_menus () { + const template = [ + { + label: app.getName(), + submenu: [ + { + role: 'quit' + } + ] + }, + { + label: 'Edit', + submenu: [ + {role: 'undo'}, + {role: 'redo'}, + {type: 'separator'}, + {role: 'cut'}, + {role: 'copy'}, + {role: 'paste'}, + {role: 'pasteandmatchstyle'}, + {role: 'delete'}, + {role: 'selectall'} + ] + }, + { + label: 'View', + submenu: [ + { + label: 'Open in Browser...', + click () { + require('electron').shell.openExternal('http://localhost:' + port) + } + }, + { + type: 'separator' + }, + {role: 'reload'}, + {role: 'forcereload'}, + {role: 'toggledevtools'}, + {type: 'separator'}, + {role: 'resetzoom'}, + {role: 'zoomin'}, + {role: 'zoomout'}, + {type: 'separator'}, + {role: 'togglefullscreen'} + ] + } + ] + + const menu = Menu.buildFromTemplate(template) + Menu.setApplicationMenu(menu) +} \ No newline at end of file From c0c2f10228710158cb71969561698a12b7e3b268 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 08:49:07 +0100 Subject: [PATCH 65/73] Path update to run inside electron package --- Environment.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Environment.js b/Environment.js index a042eaf5b..e3d44a91c 100644 --- a/Environment.js +++ b/Environment.js @@ -1,18 +1,20 @@ +const path = require("path") + exports.newEnvironment = function () { let thisObject = { WEB_SERVER_URL: 'localhost', CLIENT_WEB_SOCKETS_INTERFACE_PORT: 18041, CLIENT_HTTP_INTERFACE_PORT: 34248, - 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', - PATH_TO_CLIENT: './Platform', - PATH_TO_DEFAULT_WORKSPACE: './Projects/Foundations/Plugins/Workspaces', - PATH_TO_MY_WORKSPACES: './Platform/My-Workspaces', - PATH_TO_FONTS: './Platform/WebServer/Fonts' + PATH_TO_DATA_STORAGE: path.join(__dirname, './Platform/My-Data-Storage'), + PATH_TO_PROJECTS: path.join(__dirname, './Projects'), + PATH_TO_LOG_FILES: path.join(__dirname, './Platform/My-Log-Files'), + PATH_TO_PROJECTS_REQUIRED: path.join(__dirname, './Projects'), + PATH_TO_PROJECT_SCHEMA: path.join(__dirname, './Projects/ProjectsSchema.json'), + PATH_TO_CLIENT: path.join(__dirname, './Platform'), + PATH_TO_DEFAULT_WORKSPACE: path.join(__dirname, './Projects/Foundations/Plugins/Workspaces'), + PATH_TO_MY_WORKSPACES: path.join(__dirname, './Platform/My-Workspaces'), + PATH_TO_FONTS: path.join(__dirname, './Platform/WebServer/Fonts') } return thisObject From 37587029d20bc1c1b1ff5a7babfc90c8b06cbf5d Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 08:49:29 +0100 Subject: [PATCH 66/73] Binaries build scripts --- .gitignore | 1 + package.json | 75 +++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 749233d0e..77cf8ef6a 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ node_modules launch.json package-lock.json .idea +build diff --git a/package.json b/package.json index ab00b7ad6..b1345736d 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,21 @@ { "name": "superalgos", - "version": "0.0.11", - "description": "Superalgos", + "version": "0.0.12-beta", + "description": "Superalgos is a free, open-source crypto trading bot", + "main": "electron-wrapper.js", + "license": "Apache License 2.0", + "homepage": "https://www.superalgos.org/", "author": { "name": "Luis-Fernando-Molina" }, "scripts": { - "start": "node platform minMemo noBrowser", - "setup": "node setup noShortcuts" + "start-dev": "node platform minMemo noBrowser", + "setup": "node setup noShortcuts", + "release-dev": "electron-builder --dir", + "release-win": "electron-builder --win", + "release-mac": "electron-builder --mac", + "start": "electron .", + "postinstall": "electron-builder install-app-deps" }, "dependencies": { "@octokit/rest": "^18.11.4", @@ -29,5 +37,64 @@ "util": "^0.12.4", "web3": "^1.6.0", "ws": "^8.2.3" + }, + "devDependencies": { + "electron": "^15.1.0", + "electron-builder": "^22.11.7" + }, + "build": { + "appId": "org.superalgos.platform", + "productName": "Superalgos", + "directories": { + "output": "build" + }, + "files": [ + "**/*", + "!.github${/*}", + "!.vscode${/*}", + "!.dockerignore${/*}", + "!Data-Storage/*", + "!Log-Files/*", + "!My-Workspaces/*", + "!build", + "!Docker", + "!Launch-Scripts", + "!run.js", + "!setup.js", + "!uninstall.js" + ], + "win": { + "target": [ + { + "target": "portable", + "arch": "x64" + }, + { + "target": "nsis", + "arch": "x64" + } + ], + "icon": "./Launch-Scripts/superalgos.ico", + "publish": "github" + }, + "nsis": { + "oneClick": false, + "perMachine": false, + "allowElevation": false, + "allowToChangeInstallationDirectory": true, + "createDesktopShortcut": true, + "createStartMenuShortcut": true, + "license": "./LICENSE", + "runAfterFinish": false + }, + "mac": { + "category": "public.app-category.finance", + "target": "dmg", + "type": "development", + "publish": "github" + }, + "linux": { + "maintainer": "na.amorim@gmail.com" + } } } From c1fe2e975d1eedb2da3606f5db5a49b117fd852a Mon Sep 17 00:00:00 2001 From: NAmorim Date: Thu, 7 Oct 2021 11:28:06 +0100 Subject: [PATCH 67/73] Correction for arguments --- electron-wrapper.js | 4 +--- package.json | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/electron-wrapper.js b/electron-wrapper.js index b47a036be..92566cc6e 100644 --- a/electron-wrapper.js +++ b/electron-wrapper.js @@ -36,9 +36,7 @@ run() function run() { userData() const { fork } = require('child_process') - fork(path.join(__dirname, './PlatformRoot.js'), { - execArgv: ['noBrowser'] - }) + fork(path.join(__dirname, './PlatformRoot.js'), process.argv) server_ready = true if (app_ready) open() diff --git a/package.json b/package.json index b1345736d..2c1bf7587 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "release-dev": "electron-builder --dir", "release-win": "electron-builder --win", "release-mac": "electron-builder --mac", - "start": "electron .", + "start": "electron . noBrowser", "postinstall": "electron-builder install-app-deps" }, "dependencies": { From 1a4bae9e86149f5778fc14cd947d104ea3b0044b Mon Sep 17 00:00:00 2001 From: harrellbm Date: Thu, 7 Oct 2021 08:03:24 -0500 Subject: [PATCH 68/73] Add Dutch Language Footer --- Projects/Education/UI/Spaces/Docs-Space/Footer.js | 6 ++++++ Projects/Education/UI/Utilities/Languages.js | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/Projects/Education/UI/Spaces/Docs-Space/Footer.js b/Projects/Education/UI/Spaces/Docs-Space/Footer.js index 87812476c..61633399a 100644 --- a/Projects/Education/UI/Spaces/Docs-Space/Footer.js +++ b/Projects/Education/UI/Spaces/Docs-Space/Footer.js @@ -129,6 +129,12 @@ function newFoundationsDocsFooter() { } HTML = HTML + '">' + HTML = HTML + '' + HTML = HTML + '' HTML = HTML + '