diff --git a/Candles-Volumes-Indicator-Bot.sln b/Candles-Volumes-Indicator-Bot.sln new file mode 100644 index 000000000..da30e179e --- /dev/null +++ b/Candles-Volumes-Indicator-Bot.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2027 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9092AA53-FB77-4645-B42D-1CCCA6BD08BD}") = "Project", "Project.njsproj", "{AA2901BC-8F81-40F0-A402-5CA79A3F22AD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AA2901BC-8F81-40F0-A402-5CA79A3F22AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA2901BC-8F81-40F0-A402-5CA79A3F22AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA2901BC-8F81-40F0-A402-5CA79A3F22AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA2901BC-8F81-40F0-A402-5CA79A3F22AD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B4BDAEAF-E863-458A-87C1-CC6D8C490784} + EndGlobalSection +EndGlobal diff --git a/Multi-Period-Daily/User.bot.js b/Multi-Period-Daily/User.bot.js index 68b860239..c8f3d8694 100644 --- a/Multi-Period-Daily/User.bot.js +++ b/Multi-Period-Daily/User.bot.js @@ -52,7 +52,7 @@ This process is going to do the following: -Read the candles and volumes from Charly and produce a file for each day and for each period with candles and volumes. +Read the candles and volumes from Exchange Raw Data and produce a file for each day and for each period with candles and volumes. */ @@ -84,9 +84,9 @@ Read the candles and volumes from Charly and produce a file for each day and for let reportKey; let statusReport; - /* We look first for Charly in order to get when the market starts. */ + /* We look first for Exchange Raw Data in order to get when the market starts. */ - reportKey = "AAMasters" + "-" + "AACharly" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; + reportKey = "AAMasters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -120,9 +120,9 @@ Read the candles and volumes from Charly and produce a file for each day and for contextVariables.firstTradeFile = new Date(thisReport.beginingOfMarket.year + "-" + thisReport.beginingOfMarket.month + "-" + thisReport.beginingOfMarket.days + " " + thisReport.beginingOfMarket.hours + ":" + thisReport.beginingOfMarket.minutes + GMT_SECONDS); - /* Second, we get the report from Charly, to know when the marted ends. */ + /* Second, we get the report from Exchange Raw Data, to know when the marted ends. */ - reportKey = "AAMasters" + "-" + "AACharly" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1" + reportKey = "AAMasters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -157,7 +157,7 @@ Read the candles and volumes from Charly and produce a file for each day and for /* Finally we get our own Status Report. */ - reportKey = "AAMasters" + "-" + "AAOlivia" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; + reportKey = "AAMasters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -304,7 +304,7 @@ Read the candles and volumes from Charly and produce a file for each day and for let dateForPath = contextVariables.lastCandleFile.getUTCFullYear() + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCMonth() + 1, 2) + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCDate(), 2); let fileName = "Data.json" - let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "AACharly"; + let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "Exchange-Raw-Data"; let filePath = filePathRoot + "/Output/" + CANDLES_FOLDER_NAME + '/' + CANDLES_ONE_MIN + '/' + dateForPath; filePath += '/' + fileName @@ -430,7 +430,7 @@ Read the candles and volumes from Charly and produce a file for each day and for let dateForPath = contextVariables.lastCandleFile.getUTCFullYear() + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCMonth() + 1, 2) + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCDate(), 2); let fileName = "Data.json" - let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "AACharly"; + let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "Exchange-Raw-Data"; let filePath = filePathRoot + "/Output/" + VOLUMES_FOLDER_NAME + '/' + VOLUMES_ONE_MIN + '/' + dateForPath; filePath += '/' + fileName @@ -775,7 +775,7 @@ Read the candles and volumes from Charly and produce a file for each day and for try { - let reportKey = "AAMasters" + "-" + "AAOlivia" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; + let reportKey = "AAMasters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Daily" + "-" + "dataSet.V1"; let thisReport = statusDependencies.statusReports.get(reportKey); thisReport.file.lastExecution = bot.processDatetime; diff --git a/Multi-Period-Market/User.bot.js b/Multi-Period-Market/User.bot.js index d5246fd8b..21456f708 100644 --- a/Multi-Period-Market/User.bot.js +++ b/Multi-Period-Market/User.bot.js @@ -50,16 +50,16 @@ This process is going to do the following: - Read the candles and volumes from Charly and produce a single Index File for Market Period. But this is the situation: + Read the candles and volumes from Exchange Raw Data and produce a single Index File for Market Period. But this is the situation: - Charly has a dataset organized with daily files with candles of 1 min. Olivia is writting in this process a single file for each timeFrame for the whole market. + Exchange Raw Data has a dataset organized with daily files with candles of 1 min. Candles Volumes is writting in this process a single file for each timeFrame for the whole market. Everytime this process run, must be able to resume its job and process everything pending until reaching the head of the market. So the tactic to do this is the following: 1. First we need to read the last file written by this process, and load all the information into in-memory arrays. We will then append to this arrays the new - information we will get from Charly. + information we will get from Exchange Raw Data. - 2. We know from out status report which was the last DAY we processed from Charly, but we must be carefull, because that day mightn not have been complete, if the + 2. We know from out status report which was the last DAY we processed from Exchange Raw Data, but we must be carefull, because that day mightn not have been complete, if the last run found the head of the market. That means that we have to be carefull not to append candles that are already there. To simplify what we do is to discard all candles of the last processed day, and then we can process that full day again adding all the candles. @@ -93,9 +93,9 @@ let reportKey; let statusReport; - /* We look first for Charly in order to get when the market starts. */ + /* We look first for Exchange Raw Data in order to get when the market starts. */ - reportKey = "AAMasters" + "-" + "AACharly" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; + reportKey = "AAMasters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1"; if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -129,9 +129,9 @@ contextVariables.firstTradeFile = new Date(thisReport.beginingOfMarket.year + "-" + thisReport.beginingOfMarket.month + "-" + thisReport.beginingOfMarket.days + " " + thisReport.beginingOfMarket.hours + ":" + thisReport.beginingOfMarket.minutes + GMT_SECONDS); - /* Second, we get the report from Charly, to know when the marted ends. */ + /* Second, we get the report from Exchange Raw Data, to know when the marted ends. */ - reportKey = "AAMasters" + "-" + "AACharly" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1" + reportKey = "AAMasters" + "-" + "Exchange-Raw-Data" + "-" + "Historic-OHLCVs" + "-" + "dataSet.V1" if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -166,7 +166,7 @@ /* Finally we get our own Status Report. */ - reportKey = "AAMasters" + "-" + "AAOlivia" + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; + reportKey = "AAMasters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey); } statusReport = statusDependencies.statusReports.get(reportKey); @@ -452,12 +452,12 @@ const timeFrame = global.marketFilesPeriods[n][1]; /* - Here we are inside a Loop that is going to advance 1 day at the time, at each pass, will ready one of Charly's daily files and + Here we are inside a Loop that is going to advance 1 day at the time, at each pass, will ready one of Exchange Raw Data's daily files and add all its candles to our in memory arrays. At the first iteration of this loop, we will add the candles that we are carrying from our previous run, the ones we already have in-memory. You can see below how we discard from those candles the ones that are belonging to the first day we are processing at this run, that it is exactly the same as the last day processed the privious run. By discarding these candles, we are ready to run after that standard function that will just add ALL the candles found each - day at Charly. + day at Exchange Raw Data. */ if (previousCandles !== undefined) { @@ -507,7 +507,7 @@ } /* - From here on is where every iteration of the loop fully runs. Here is where we read Charly's files and add their content to whatever + From here on is where every iteration of the loop fully runs. Here is where we read Exchange Raw Data's files and add their content to whatever we already have in our arrays in-memory. In this way the process will run as many days needed and it should only stop when it reaches the head of the market. */ @@ -520,7 +520,7 @@ let dateForPath = contextVariables.lastCandleFile.getUTCFullYear() + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCMonth() + 1, 2) + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCDate(), 2); let fileName = "Data.json" - let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "AACharly"; + let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "Exchange-Raw-Data"; let filePath = filePathRoot + "/Output/" + CANDLES_FOLDER_NAME + '/' + CANDLES_ONE_MIN + '/' + dateForPath; filePath += '/' + fileName @@ -570,8 +570,8 @@ let beginingOutputTime = contextVariables.lastCandleFile.valueOf(); /* - The algorithm that follows is going to agregate candles of 1 min timeFrame read from Charly, into candles of each timeFrame - that Olivia generates. For market files those timePediods goes from 1h to 24hs. + The algorithm that follows is going to agregate candles of 1 min timeFrame read from Exchange Raw Data, into candles of each timeFrame + that Candles Volumes generates. For market files those timePediods goes from 1h to 24hs. */ for (let i = 0; i < totalOutputCandles; i++) { @@ -651,7 +651,7 @@ let dateForPath = contextVariables.lastCandleFile.getUTCFullYear() + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCMonth() + 1, 2) + '/' + utilities.pad(contextVariables.lastCandleFile.getUTCDate(), 2); let fileName = "Data.json" - let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "AACharly"; + let filePathRoot = bot.exchange + "/" + bot.market.baseAsset + "-" + bot.market.quotedAsset + "/" + bot.dataMine + "/" + "Exchange-Raw-Data"; let filePath = filePathRoot + "/Output/" + VOLUMES_FOLDER_NAME + '/' + VOLUMES_ONE_MIN + '/' + dateForPath; filePath += '/' + fileName @@ -888,7 +888,7 @@ try { - let reportKey = "AAMasters" + "-" + "AAOlivia" + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; + let reportKey = "AAMasters" + "-" + "Candles-Volumes" + "-" + "Multi-Period-Market" + "-" + "dataSet.V1"; let thisReport = statusDependencies.statusReports.get(reportKey); thisReport.file.lastExecution = bot.processDatetime; diff --git a/this.bot.config.json b/this.bot.config.json index 816a24ce6..d21ed687e 100644 --- a/this.bot.config.json +++ b/this.bot.config.json @@ -1,6 +1,6 @@ { - "displayName": "Olivia", - "codeName": "AAOlivia", + "displayName": "Candles Volumes", + "codeName": "Candles-Volumes", "type": "Indicator Bot", "version": { "major": 1, @@ -8,7 +8,7 @@ "patch": 0 }, "dataMine": "AAMasters", - "profilePicture": "Olivia.png", + "profilePicture": "Candles Volumes.png", "dataSetVersion": "dataSet.V1", "processes": [ { @@ -51,7 +51,7 @@ "statusDependencies": [ { "dataMine": "AAMasters", - "bot": "AACharly", + "bot": "Exchange-Raw-Data", "botVersion": { "major": 1, "minor": 0 @@ -61,7 +61,7 @@ }, { "dataMine": "AAMasters", - "bot": "AACharly", + "bot": "Exchange-Raw-Data", "botVersion": { "major": 1, "minor": 0 @@ -73,7 +73,7 @@ }, { "dataMine": "AAMasters", - "bot": "AAOlivia", + "bot": "Candles-Volumes", "botVersion": { "major": 1, "minor": 0 @@ -123,7 +123,7 @@ "statusDependencies": [ { "dataMine": "AAMasters", - "bot": "AACharly", + "bot": "Exchange-Raw-Data", "botVersion": { "major": 1, "minor": 0 @@ -133,7 +133,7 @@ }, { "dataMine": "AAMasters", - "bot": "AACharly", + "bot": "Exchange-Raw-Data", "botVersion": { "major": 1, "minor": 0 @@ -145,7 +145,7 @@ }, { "dataMine": "AAMasters", - "bot": "AAOlivia", + "bot": "Candles-Volumes", "botVersion": { "major": 1, "minor": 0 @@ -161,24 +161,24 @@ "codeName": "Candles", "displayName": "Candles", "description": "Two sets of files per period that contains candles.", - "storageAccount": "aaolivia", + "storageAccount": "Candles-Volumes", "shareWith": "Public", "dataSets": [ { "codeName": "Multi-Period-Market", "type": "Market Files", "validPeriods": [ "24-hs", "12-hs", "08-hs", "06-hs", "04-hs", "03-hs", "02-hs", "01-hs" ], - "filePath": "AAMasters/AAOlivia.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Candles/Multi-Period-Market/@Period", + "filePath": "AAMasters/Candles-Volumes.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Candles/Multi-Period-Market/@Period", "fileName": "@AssetA_@AssetB.json" }, { "codeName": "Multi-Period-Daily", "type": "Daily Files", "validPeriods": [ "45-min", "40-min", "30-min", "20-min", "15-min", "10-min", "05-min", "04-min", "03-min", "02-min", "01-min" ], - "filePath": "AAMasters/AAOlivia.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Candles/Multi-Period-Daily/@Period/@Year/@Month/@Day", + "filePath": "AAMasters/Candles-Volumes.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Candles/Multi-Period-Daily/@Period/@Year/@Month/@Day", "fileName": "@AssetA_@AssetB.json", "dataRange": { - "filePath": "AAMasters/AAOlivia.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Candles/Multi-Period-Daily", + "filePath": "AAMasters/Candles-Volumes.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Candles/Multi-Period-Daily", "fileName": "Data.Range.@AssetA_@AssetB.json" } } @@ -201,24 +201,24 @@ "codeName": "Volumes", "displayName": "Buy and Sell Volumes", "description": "Two sets of files per period that contains buy and sell volumes.", - "storageAccount": "aaolivia", + "storageAccount": "Candles-Volumes", "shareWith": "Public", "dataSets": [ { "codeName": "Multi-Period-Market", "type": "Market Files", "validPeriods": [ "24-hs", "12-hs", "08-hs", "06-hs", "04-hs", "03-hs", "02-hs", "01-hs" ], - "filePath": "AAMasters/AAOlivia.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Volumes/Multi-Period-Market/@Period", + "filePath": "AAMasters/Candles-Volumes.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Volumes/Multi-Period-Market/@Period", "fileName": "@AssetA_@AssetB.json" }, { "codeName": "Multi-Period-Daily", "type": "Daily Files", "validPeriods": [ "45-min", "40-min", "30-min", "20-min", "15-min", "10-min", "05-min", "04-min", "03-min", "02-min", "01-min" ], - "filePath": "AAMasters/AAOlivia.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Volumes/Multi-Period-Daily/@Period/@Year/@Month/@Day", + "filePath": "AAMasters/Candles-Volumes.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Volumes/Multi-Period-Daily/@Period/@Year/@Month/@Day", "fileName": "@AssetA_@AssetB.json", "dataRange": { - "filePath": "AAMasters/AAOlivia.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Volumes/Multi-Period-Daily", + "filePath": "AAMasters/Candles-Volumes.1.0/AACloud.1.1/@Exchange/dataSet.V1/Output/Volumes/Multi-Period-Daily", "fileName": "Data.Range.@AssetA_@AssetB.json" } }