From dad19f8278962a484a92af54a3c9953050ecdeab Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 5 Jan 2020 15:15:28 +0100 Subject: [PATCH] baseAsset and quotedAsset refactoring --- Assistant.js | 124 ++++++++++++++++----------------- Commons.js | 4 +- Context.js | 36 +++++----- MultiPeriod.js | 8 +-- MultiPeriodDaily.js | 6 +- MultiPeriodMarket.js | 2 +- Root.js | 4 +- StatusReport.js | 4 +- TradingBot.js | 36 +++++----- TradingSimulation.js | 160 +++++++++++++++++++++---------------------- 10 files changed, 192 insertions(+), 192 deletions(-) diff --git a/Assistant.js b/Assistant.js index 4c2fe181a..00d3176bb 100644 --- a/Assistant.js +++ b/Assistant.js @@ -144,7 +144,7 @@ let dataSet = thisObject.dataDependencies.dataSets.get(key); let dateForPath = bot.processDatetime.getUTCFullYear() + '/' + utilities.pad(bot.processDatetime.getUTCMonth() + 1, 2) + '/' + utilities.pad(bot.processDatetime.getUTCDate(), 2); - let fileName = '' + bot.market.assetA + '_' + bot.market.assetB + '.json'; + let fileName = '' + bot.market.baseAsset + '_' + bot.market.quotedAsset + '.json'; let filePath = bot.marketRateProvider.product + "/" + bot.marketRateProvider.dataSet + "/" + dateForPath; dataSet.getTextFile(filePath, fileName, onFileReceived); @@ -273,43 +273,43 @@ /* Calculate Profits */ - if (context.executionContext.initialBalance.assetA > 0) { + if (context.executionContext.initialBalance.baseAsset > 0) { - context.executionContext.profits.assetA = (thisObject.truncDecimals(context.executionContext.balance.assetA) - thisObject.truncDecimals(context.executionContext.initialBalance.assetA)) / thisObject.truncDecimals(context.executionContext.initialBalance.assetA); - context.executionContext.profits.assetA = thisObject.truncDecimals(context.executionContext.profits.assetA); + context.executionContext.profits.baseAsset = (thisObject.truncDecimals(context.executionContext.balance.baseAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset); + context.executionContext.profits.baseAsset = thisObject.truncDecimals(context.executionContext.profits.baseAsset); } - if (context.executionContext.initialBalance.assetB > 0) { + if (context.executionContext.initialBalance.quotedAsset > 0) { - context.executionContext.profits.assetB = (thisObject.truncDecimals(context.executionContext.balance.assetB) - thisObject.truncDecimals(context.executionContext.initialBalance.assetB)) / thisObject.truncDecimals(context.executionContext.initialBalance.assetB); - context.executionContext.profits.assetB = thisObject.truncDecimals(context.executionContext.profits.assetB); + context.executionContext.profits.quotedAsset = (thisObject.truncDecimals(context.executionContext.balance.quotedAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset); + context.executionContext.profits.quotedAsset = thisObject.truncDecimals(context.executionContext.profits.quotedAsset); } - context.newHistoryRecord.profitsAssetA = context.executionContext.profits.assetA; - context.newHistoryRecord.profitsAssetB = context.executionContext.profits.assetB; + context.newHistoryRecord.profitsBaseAsset = context.executionContext.profits.baseAsset; + context.newHistoryRecord.profitsQuotedAsset = context.executionContext.profits.quotedAsset; /* Calculate Combined Profits */ - if (context.executionContext.initialBalance.assetA > 0) { + if (context.executionContext.initialBalance.baseAsset > 0) { - let convertedAssetsB = (thisObject.truncDecimals(context.executionContext.balance.assetB) - thisObject.truncDecimals(context.executionContext.initialBalance.assetB)) * marketRate; + let convertedAssetsB = (thisObject.truncDecimals(context.executionContext.balance.quotedAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset)) * marketRate; convertedAssetsB = thisObject.truncDecimals(convertedAssetsB); - context.executionContext.combinedProfits.assetA = (thisObject.truncDecimals(context.executionContext.balance.assetA) + convertedAssetsB - thisObject.truncDecimals(context.executionContext.initialBalance.assetA)) / thisObject.truncDecimals(context.executionContext.initialBalance.assetA) * 100; - context.executionContext.combinedProfits.assetA = thisObject.truncDecimals(context.executionContext.combinedProfits.assetA); + context.executionContext.combinedProfits.baseAsset = (thisObject.truncDecimals(context.executionContext.balance.baseAsset) + convertedAssetsB - thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset) * 100; + context.executionContext.combinedProfits.baseAsset = thisObject.truncDecimals(context.executionContext.combinedProfits.baseAsset); } - if (context.executionContext.initialBalance.assetB > 0) { + if (context.executionContext.initialBalance.quotedAsset > 0) { - let convertedAssetsA = (thisObject.truncDecimals(context.executionContext.balance.assetA) - thisObject.truncDecimals(context.executionContext.initialBalance.assetA)) / marketRate; + let convertedAssetsA = (thisObject.truncDecimals(context.executionContext.balance.baseAsset) - thisObject.truncDecimals(context.executionContext.initialBalance.baseAsset)) / marketRate; convertedAssetsA = thisObject.truncDecimals(convertedAssetsA); - context.executionContext.combinedProfits.assetB = (thisObject.truncDecimals(context.executionContext.balance.assetB) + convertedAssetsA - thisObject.truncDecimals(context.executionContext.initialBalance.assetB)) / thisObject.truncDecimals(context.executionContext.initialBalance.assetB) * 100; - context.executionContext.combinedProfits.assetB = thisObject.truncDecimals(context.executionContext.combinedProfits.assetB); + context.executionContext.combinedProfits.quotedAsset = (thisObject.truncDecimals(context.executionContext.balance.quotedAsset) + convertedAssetsA - thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset)) / thisObject.truncDecimals(context.executionContext.initialBalance.quotedAsset) * 100; + context.executionContext.combinedProfits.quotedAsset = thisObject.truncDecimals(context.executionContext.combinedProfits.quotedAsset); } - context.newHistoryRecord.combinedProfitsA = context.executionContext.combinedProfits.assetA; - context.newHistoryRecord.combinedProfitsB = context.executionContext.combinedProfits.assetB; + context.newHistoryRecord.combinedProfitsA = context.executionContext.combinedProfits.baseAsset; + context.newHistoryRecord.combinedProfitsB = context.executionContext.combinedProfits.quotedAsset; callBackFunction(global.DEFAULT_OK_RESPONSE); @@ -652,23 +652,23 @@ */ - let sumAssetA = 0; - let sumAssetB = 0; + let sumBaseAsset = 0; + let sumQuotedAsset = 0; let sumRate = 0; for (let k = 0; k < pTrades.length; k++) { let trade = pTrades[k]; - sumAssetA = sumAssetA + thisObject.truncDecimals(trade.amountA); - sumAssetB = sumAssetB + thisObject.truncDecimals(trade.amountB); + sumBaseAsset = sumBaseAsset + thisObject.truncDecimals(trade.amountA); + sumQuotedAsset = sumQuotedAsset + thisObject.truncDecimals(trade.amountB); sumRate = sumRate + thisObject.truncDecimals(trade.rate); } - sumAssetA = thisObject.truncDecimals(sumAssetA); - sumAssetB = thisObject.truncDecimals(sumAssetB); + sumBaseAsset = thisObject.truncDecimals(sumBaseAsset); + sumQuotedAsset = thisObject.truncDecimals(sumQuotedAsset); - if (position.amountB !== sumAssetB) { + if (position.amountB !== sumQuotedAsset) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> position.amountB = " + position.amountB); - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> sumAssetB = " + sumAssetB); + logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> sumQuotedAsset = " + sumQuotedAsset); logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> Cannot be confirmed that the order was executed. It must be manually cancelled by the user or cancelled by the exchange itself."); logger.write(MODULE_NAME, "[HINT] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> If the process was abruptally cancelled and then restarted, it is possible that now is not sincronized with the exchange."); @@ -724,22 +724,22 @@ */ - let sumAssetA = 0; - let sumAssetB = 0; + let sumBaseAsset = 0; + let sumQuotedAsset = 0; for (let k = 0; k < pTrades.length; k++) { let trade = pTrades[k]; - sumAssetA = sumAssetA + thisObject.truncDecimals(trade.amountA); - sumAssetB = sumAssetB + thisObject.truncDecimals(trade.amountB); + sumBaseAsset = sumBaseAsset + thisObject.truncDecimals(trade.amountA); + sumQuotedAsset = sumQuotedAsset + thisObject.truncDecimals(trade.amountB); } /* To this we add the current position amounts. */ - sumAssetA = sumAssetA + thisObject.truncDecimals(exchangePosition.amountA); - sumAssetB = sumAssetB + thisObject.truncDecimals(exchangePosition.amountB); + sumBaseAsset = sumBaseAsset + thisObject.truncDecimals(exchangePosition.amountA); + sumQuotedAsset = sumQuotedAsset + thisObject.truncDecimals(exchangePosition.amountB); - sumAssetA = thisObject.truncDecimals(sumAssetA); - sumAssetB = thisObject.truncDecimals(sumAssetB); + sumBaseAsset = thisObject.truncDecimals(sumBaseAsset); + sumQuotedAsset = thisObject.truncDecimals(sumQuotedAsset); /* * Next let's get the max decimal positions for the pair being trade returned by the exchange and validate that at least @@ -753,12 +753,12 @@ let minValue = '0.' + (1).toPrecision(exchangeParam - 1).split('.').reverse().join(''); let exchangePrecision = parseFloat(parseFloat(minValue).toFixed(exchangeParam)); - if (Math.abs(position.amountA - sumAssetA) > exchangePrecision || Math.abs(position.amountB - sumAssetB) > exchangePrecision) { + if (Math.abs(position.amountA - sumBaseAsset) > exchangePrecision || Math.abs(position.amountB - sumQuotedAsset) > exchangePrecision) { logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> position.amountA = " + position.amountA); - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> sumAssetA = " + sumAssetA); + logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> sumBaseAsset = " + sumBaseAsset); logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> position.amountB = " + position.amountB); - logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> sumAssetB = " + sumAssetB); + logger.write(MODULE_NAME, "[INFO] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> sumQuotedAsset = " + sumQuotedAsset); logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> Cannot confirm that a partial execution was done well."); @@ -815,8 +815,8 @@ /* Calculate Balances */ - let assetA = 0; - let assetB = 0; + let baseAsset = 0; + let quotedAsset = 0; if (trade.type === 'buy') { @@ -829,13 +829,13 @@ let feeAmount = thisObject.truncDecimals(Number(trade.fee) * Number(trade.amountB)); - assetA = Number(trade.amountA); - assetB = Number(trade.amountB) - feeAmount; + baseAsset = Number(trade.amountA); + quotedAsset = Number(trade.amountB) - feeAmount; - context.executionContext.balance.assetA = thisObject.truncDecimals(context.executionContext.balance.assetA - assetA); - context.executionContext.balance.assetB = thisObject.truncDecimals(context.executionContext.balance.assetB + assetB); + context.executionContext.balance.baseAsset = thisObject.truncDecimals(context.executionContext.balance.baseAsset - baseAsset); + context.executionContext.balance.quotedAsset = thisObject.truncDecimals(context.executionContext.balance.quotedAsset + quotedAsset); - context.executionContext.availableBalance.assetB = thisObject.truncDecimals(context.executionContext.availableBalance.assetB + assetB); + context.executionContext.availableBalance.quotedAsset = thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset + quotedAsset); /* Not the available balance for asset A is not affected since it was already reduced when the order was placed. */ @@ -852,13 +852,13 @@ let feeAmount = thisObject.truncDecimals(Number(trade.fee) * Number(trade.amountA)); - assetA = Number(trade.amountA) - feeAmount; - assetB = Number(trade.amountB); + baseAsset = Number(trade.amountA) - feeAmount; + quotedAsset = Number(trade.amountB); - context.executionContext.balance.assetA = thisObject.truncDecimals(context.executionContext.balance.assetA + assetA); - context.executionContext.balance.assetB = thisObject.truncDecimals(context.executionContext.balance.assetB - assetB); + context.executionContext.balance.baseAsset = thisObject.truncDecimals(context.executionContext.balance.baseAsset + baseAsset); + context.executionContext.balance.quotedAsset = thisObject.truncDecimals(context.executionContext.balance.quotedAsset - quotedAsset); - context.executionContext.availableBalance.assetA = thisObject.truncDecimals(context.executionContext.availableBalance.assetA + assetA); + context.executionContext.availableBalance.baseAsset = thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset + baseAsset); /* Not the available balance for asset B is not affected since it was already reduced when the order was placed. */ @@ -937,11 +937,11 @@ if (pType === 'buy') { - if (pAmountA > thisObject.truncDecimals(context.executionContext.availableBalance.assetA)) { + if (pAmountA > thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset)) { logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> pAmountA is grater than the Available Balance."); logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> pAmountA = " + pAmountA); - logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> Available Balance = " + thisObject.truncDecimals(context.executionContext.availableBalance.assetA)); + logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> Available Balance = " + thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset)); let err = { result: global.DEFAULT_FAIL_RESPONSE.result, @@ -955,11 +955,11 @@ if (pType === 'sell') { - if (pAmountB > thisObject.truncDecimals(context.executionContext.availableBalance.assetB)) { + if (pAmountB > thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset)) { logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> pAmountB is grater than the Available Balance."); logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> pAmountB = " + pAmountB); - logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> Available Balance = " + thisObject.truncDecimals(context.executionContext.availableBalance.assetB)); + logger.write(MODULE_NAME, "[ERROR] putPosition -> Input Validations -> Available Balance = " + thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset)); let err = { result: global.DEFAULT_FAIL_RESPONSE.result, @@ -1048,13 +1048,13 @@ if (position.type === 'buy') { - context.executionContext.availableBalance.assetA = thisObject.truncDecimals(context.executionContext.availableBalance.assetA - pAmountA); + context.executionContext.availableBalance.baseAsset = thisObject.truncDecimals(context.executionContext.availableBalance.baseAsset - pAmountA); context.newHistoryRecord.lastBuyRate = pRate; } if (position.type === 'sell') { - context.executionContext.availableBalance.assetB = thisObject.truncDecimals(context.executionContext.availableBalance.assetB - pAmountB); + context.executionContext.availableBalance.quotedAsset = thisObject.truncDecimals(context.executionContext.availableBalance.quotedAsset - pAmountB); context.newHistoryRecord.lastSellRate = pRate; } @@ -1210,11 +1210,11 @@ } } - function getPublicTradeHistory(assetA, assetB, startTime, endTime, callback) { + function getPublicTradeHistory(baseAsset, quotedAsset, startTime, endTime, callback) { if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getTradeHistory -> Entering function."); } - exchangeAPI.getPublicTradeHistory(assetA, assetB, startTime, endTime, callback); + exchangeAPI.getPublicTradeHistory(baseAsset, quotedAsset, startTime, endTime, callback); } function recalculateRateAverages() { @@ -1296,8 +1296,8 @@ if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getCombinedProfits -> Entering function."); } let combinedProfits = { - assetA: context.newHistoryRecord.combinedProfitsA, - assetB: context.newHistoryRecord.combinedProfitsB + baseAsset: context.newHistoryRecord.combinedProfitsA, + quotedAsset: context.newHistoryRecord.combinedProfitsB } if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getCombinedProfits -> JSON.stringify(combinedProfits) = " + JSON.stringify(combinedProfits)); } @@ -1310,8 +1310,8 @@ if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getROI -> Entering function."); } let ROI = { - assetA: (context.executionContext.balance.assetA - context.executionContext.initialBalance.assetA) / context.executionContext.initialBalance.assetA * 100, - assetB: (context.executionContext.balance.assetB - context.executionContext.initialBalance.assetB) / context.executionContext.initialBalance.assetB * 100 + baseAsset: (context.executionContext.balance.baseAsset - context.executionContext.initialBalance.baseAsset) / context.executionContext.initialBalance.baseAsset * 100, + quotedAsset: (context.executionContext.balance.quotedAsset - context.executionContext.initialBalance.quotedAsset) / context.executionContext.initialBalance.quotedAsset * 100 } if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] getROI -> JSON.stringify(ROI) = " + JSON.stringify(ROI)); } diff --git a/Commons.js b/Commons.js index e08233d12..9465fa5f7 100644 --- a/Commons.js +++ b/Commons.js @@ -469,7 +469,7 @@ if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> writeFile -> Entering function."); } let market = bot.market; - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let dateForPath = '' if (processingDailyFiles === true) { @@ -493,7 +493,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; diff --git a/Context.js b/Context.js index caf859a1c..deb8305db 100644 --- a/Context.js +++ b/Context.js @@ -36,8 +36,8 @@ newPositions: 0, newTrades: 0, movedPositions: 0, - profitsAssetA: 0, - profitsAssetB: 0, + profitsBaseAsset: 0, + profitsQuotedAsset: 0, combinedProfitsA: 0, combinedProfitsB: 0, messageRelevance: 0, @@ -250,11 +250,11 @@ /* Update the new History Record, in case there are no trades during this execution that updates it. */ - thisObject.newHistoryRecord.profitsAssetA = thisObject.executionContext.profits.assetA; - thisObject.newHistoryRecord.profitsAssetB = thisObject.executionContext.profits.assetB; + thisObject.newHistoryRecord.profitsBaseAsset = thisObject.executionContext.profits.baseAsset; + thisObject.newHistoryRecord.profitsQuotedAsset = thisObject.executionContext.profits.quotedAsset; - thisObject.newHistoryRecord.combinedProfitsA = thisObject.executionContext.combinedProfits.assetA; - thisObject.newHistoryRecord.combinedProfitsB = thisObject.executionContext.combinedProfits.assetB; + thisObject.newHistoryRecord.combinedProfitsA = thisObject.executionContext.combinedProfits.baseAsset; + thisObject.newHistoryRecord.combinedProfitsB = thisObject.executionContext.combinedProfits.quotedAsset; callBack(global.DEFAULT_OK_RESPONSE); @@ -315,24 +315,24 @@ thisObject.executionContext = { initialBalance: { // This is used to calculate profits. - assetA: INITIAL_BALANCE_A, - assetB: INITIAL_BALANCE_B + baseAsset: INITIAL_BALANCE_A, + quotedAsset: INITIAL_BALANCE_B }, balance: { // This is the total balance that includes positions at the order book + funds available to be traded. - assetA: INITIAL_BALANCE_A, - assetB: INITIAL_BALANCE_B // It starts with the initial initialBalance. + baseAsset: INITIAL_BALANCE_A, + quotedAsset: INITIAL_BALANCE_B // It starts with the initial initialBalance. }, availableBalance: { // This is the balance the bot has at any moment in time available to be traded (not in positions at the order book). - assetA: INITIAL_BALANCE_A, - assetB: INITIAL_BALANCE_B // It starts with the initial initialBalance. + baseAsset: INITIAL_BALANCE_A, + quotedAsset: INITIAL_BALANCE_B // It starts with the initial initialBalance. }, profits: { - assetA: 0, - assetB: 0 + baseAsset: 0, + quotedAsset: 0 }, combinedProfits: { - assetA: 0, - assetB: 0 + baseAsset: 0, + quotedAsset: 0 }, positions: [], transactions: [] @@ -457,8 +457,8 @@ thisObject.newHistoryRecord.newPositions, thisObject.newHistoryRecord.newTrades, thisObject.newHistoryRecord.movedPositions, - thisObject.newHistoryRecord.profitsAssetA, - thisObject.newHistoryRecord.profitsAssetB, + thisObject.newHistoryRecord.profitsBaseAsset, + thisObject.newHistoryRecord.profitsQuotedAsset, thisObject.newHistoryRecord.combinedProfitsA, thisObject.newHistoryRecord.combinedProfitsB, diff --git a/MultiPeriod.js b/MultiPeriod.js index f0d3c59fa..4db5534d0 100644 --- a/MultiPeriod.js +++ b/MultiPeriod.js @@ -312,7 +312,7 @@ if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFramesMarketFiles -> periodsLoopBody -> dependencyLoopBody -> getFile -> Entering function."); } - let fileName = market.assetA + '_' + market.assetB + ".json"; + let fileName = market.baseAsset + '_' + market.quotedAsset + ".json"; if (dependency.dataSet !== "Multi-Period-Market") { @@ -638,7 +638,7 @@ } else { filePath = dependency.product + '/' + dependency.dataSet + "/" + dateForPath; } - let fileName = market.assetA + '_' + market.assetB + ".json"; + let fileName = market.baseAsset + '_' + market.quotedAsset + ".json"; dataset.getTextFile(filePath, fileName, onFileReceived); @@ -714,7 +714,7 @@ } else { filePath = dependency.product + '/' + dependency.dataSet + "/" + dateForPath; } - let fileName = market.assetA + '_' + market.assetB + ".json"; + let fileName = market.baseAsset + '_' + market.quotedAsset + ".json"; dataset.getTextFile(filePath, fileName, onFileReceived); @@ -992,7 +992,7 @@ let fileContent = JSON.stringify(dataRange); - let fileName = '/Data.Range.' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '/Data.Range.' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePath = bot.filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + productCodeName + "/" + 'Multi-Period-Daily' + fileName; fileStorage.createTextFile(bot.dataMine, filePath, fileContent + '\n', onFileCreated); diff --git a/MultiPeriodDaily.js b/MultiPeriodDaily.js index 4432f7247..ad50e23ca 100644 --- a/MultiPeriodDaily.js +++ b/MultiPeriodDaily.js @@ -422,7 +422,7 @@ } else { filePath = dependency.product + '/' + dependency.dataSet + "/" + dateForPath; } - let fileName = market.assetA + '_' + market.assetB + ".json"; + let fileName = market.baseAsset + '_' + market.quotedAsset + ".json"; dataset.getTextFile(filePath, fileName, onFileReceived); @@ -492,7 +492,7 @@ } else { filePath = dependency.product + '/' + dependency.dataSet + "/" + dateForPath; } - let fileName = market.assetA + '_' + market.assetB + ".json"; + let fileName = market.baseAsset + '_' + market.quotedAsset + ".json"; dataset.getTextFile(filePath, fileName, onFileReceived); @@ -726,7 +726,7 @@ let fileContent = JSON.stringify(dataRange); - let fileName = '/Data.Range.' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '/Data.Range.' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePath = bot.filePathRoot + "/Output/" + productCodeName + "/" + bot.process + fileName; fileStorage.createTextFile(bot.dataMine, filePath, fileContent + '\n', onFileCreated); diff --git a/MultiPeriodMarket.js b/MultiPeriodMarket.js index 914ba0314..9ba755bb1 100644 --- a/MultiPeriodMarket.js +++ b/MultiPeriodMarket.js @@ -173,7 +173,7 @@ if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> processTimeFrames -> periodsLoopBody -> dependencyLoopBody -> getFile -> Entering function."); } let dateForPath = bot.processDatetime.getUTCFullYear() + '/' + utilities.pad(bot.processDatetime.getUTCMonth() + 1, 2) + '/' + utilities.pad(bot.processDatetime.getUTCDate(), 2); - let fileName = market.assetA + '_' + market.assetB + ".json"; + let fileName = market.baseAsset + '_' + market.quotedAsset + ".json"; let filePath if (dependency.dataSet === "Multi-Period-Market") { diff --git a/Root.js b/Root.js index 6881da5a5..6d2c714db 100644 --- a/Root.js +++ b/Root.js @@ -210,8 +210,8 @@ botConfig.dataMine = global.TASK_NODE.bot.processes[processIndex].referenceParent.parentNode.parentNode.code.codeName botConfig.exchange = global.TASK_NODE.bot.processes[processIndex].marketInstance.referenceParent.parentNode.parentNode.code.codeName botConfig.market = { - assetA: global.TASK_NODE.bot.processes[processIndex].marketInstance.referenceParent.baseAsset.referenceParent.code.codeName, - assetB: global.TASK_NODE.bot.processes[processIndex].marketInstance.referenceParent.quotedAsset.referenceParent.code.codeName + baseAsset: global.TASK_NODE.bot.processes[processIndex].marketInstance.referenceParent.baseAsset.referenceParent.code.codeName, + quotedAsset: global.TASK_NODE.bot.processes[processIndex].marketInstance.referenceParent.quotedAsset.referenceParent.code.codeName } /* This stuff is still hardcoded and unresolved. */ diff --git a/StatusReport.js b/StatusReport.js index b5d26862c..16c680ea1 100644 --- a/StatusReport.js +++ b/StatusReport.js @@ -148,7 +148,7 @@ if (global.LOG_CONTROL[MODULE_NAME].logInfo === true) { logger.write(MODULE_NAME, "[INFO] load -> Entering function."); } - let fileName = "Status.Report." + bot.market.assetA + '_' + bot.market.assetB + ".json"; + let fileName = "Status.Report." + bot.market.baseAsset + '_' + bot.market.quotedAsset + ".json"; let filePath; let ownerId = statusDependencyNode.dataMine + "-" + statusDependencyNode.bot + "-" + statusDependencyNode.botVersion.major + "-" + statusDependencyNode.botVersion.minor + "-" + statusDependencyNode.process + "-" + statusDependencyNode.dataSetVersion; @@ -245,7 +245,7 @@ return; } - let fileName = "Status.Report." + bot.market.assetA + '_' + bot.market.assetB + ".json"; + let fileName = "Status.Report." + bot.market.baseAsset + '_' + bot.market.quotedAsset + ".json"; let filePath = bot.filePathRoot + "/Reports/" + sessionPath + statusDependencyNode.process + timePath; filePath += '/' + fileName diff --git a/TradingBot.js b/TradingBot.js index cd3f71f92..19a14a7e8 100644 --- a/TradingBot.js +++ b/TradingBot.js @@ -219,7 +219,7 @@ fileContent = "[" + fileContent + "]"; - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SIMULATED_RECORDS_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; @@ -238,7 +238,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeRecordsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -297,7 +297,7 @@ fileContent = "[" + fileContent + "]"; fileContent = "[" + JSON.stringify(tradingSystem) + "," + fileContent + "]"; - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + CONDITIONS_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; @@ -316,7 +316,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeConditionsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -367,7 +367,7 @@ } fileContent = "[" + fileContent + "]"; - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + STRATEGIES_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; @@ -386,7 +386,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -440,7 +440,7 @@ } fileContent = "[" + fileContent + "]"; - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + TRADES_FOLDER_NAME + "/" + "Multi-Period-Market" + "/" + timeFrameLabel; @@ -459,7 +459,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -566,7 +566,7 @@ fileContent = "[" + fileContent + "]"; - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SIMULATED_RECORDS_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel; @@ -585,7 +585,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeFinalResults -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeFinalResults -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeFinalResults -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeFinalResults -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -673,7 +673,7 @@ fileContent = "[" + fileContent + "]"; let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + SIMULATED_RECORDS_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; @@ -692,7 +692,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeRecordsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -761,7 +761,7 @@ fileContent = "[" + JSON.stringify(tradingSystem) + "," + fileContent + "]"; let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + CONDITIONS_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; @@ -780,7 +780,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeConditionsFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -838,7 +838,7 @@ fileContent = "[" + fileContent + "]"; let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + STRATEGIES_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; @@ -857,7 +857,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; @@ -918,7 +918,7 @@ fileContent = "[" + fileContent + "]"; let dateForPath = currentDay.getUTCFullYear() + '/' + utilities.pad(currentDay.getUTCMonth() + 1, 2) + '/' + utilities.pad(currentDay.getUTCDate(), 2); - let fileName = '' + market.assetA + '_' + market.assetB + '.json'; + let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json'; let filePathRoot = bot.dataMine + "/" + bot.codeName + "." + bot.version.major + "." + bot.version.minor + "/" + global.CLONE_EXECUTOR.codeName + "." + global.CLONE_EXECUTOR.version + "/" + bot.exchange + "/" + bot.dataSetVersion; let filePath = filePathRoot + "/Output/" + bot.SESSION.folderName + "/" + TRADES_FOLDER_NAME + "/" + "Multi-Period-Daily" + "/" + timeFrameLabel + "/" + dateForPath; @@ -937,7 +937,7 @@ logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> err = " + err.stack); logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> filePath = " + filePath); - logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> market = " + market.assetA + "_" + market.assetB); + logger.write(MODULE_NAME, "[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> market = " + market.baseAsset + "_" + market.quotedAsset); callBackFunction(err); return; diff --git a/TradingSimulation.js b/TradingSimulation.js index b67b39a8c..87ba1a5b2 100644 --- a/TradingSimulation.js +++ b/TradingSimulation.js @@ -117,8 +117,8 @@ */ /*Needed for statistics */ - let previousBalanceAssetA = 0; - let previousBalanceAssetB = 0; + let previousBalanceBaseAsset = 0; + let previousBalanceQuotedAsset = 0; /* Position Management */ let tradePositionRate = 0; @@ -155,8 +155,8 @@ endRate: 0 } - let balanceAssetA = bot.VALUES_TO_USE.initialBalanceA; - let balanceAssetB = bot.VALUES_TO_USE.initialBalanceB; + let balanceBaseAsset = bot.VALUES_TO_USE.initialBalanceA; + let balanceQuotedAsset = bot.VALUES_TO_USE.initialBalanceB; let lastTradeProfitLoss = 0; let profit = 0; @@ -189,8 +189,8 @@ yesterday.stopLoss = 0 yesterday.takeProfit = 0 - yesterday.previousBalanceAssetA = previousBalanceAssetA - yesterday.previousBalanceAssetB = previousBalanceAssetB + yesterday.previousBalanceBaseAsset = previousBalanceBaseAsset + yesterday.previousBalanceQuotedAsset = previousBalanceQuotedAsset yesterday.tradePositionRate = tradePositionRate yesterday.tradePositionSize = tradePositionSize @@ -223,8 +223,8 @@ endRate: 0 } - yesterday.balanceAssetA = balanceAssetA; - yesterday.balanceAssetB = balanceAssetB; + yesterday.balanceBaseAsset = balanceBaseAsset; + yesterday.balanceQuotedAsset = balanceQuotedAsset; yesterday.lastTradeProfitLoss = 0; yesterday.profit = 0; @@ -257,8 +257,8 @@ interExecutionMemory.stopLoss = 0 interExecutionMemory.takeProfit = 0 - interExecutionMemory.previousBalanceAssetA = previousBalanceAssetA - interExecutionMemory.previousBalanceAssetB = previousBalanceAssetB + interExecutionMemory.previousBalanceBaseAsset = previousBalanceBaseAsset + interExecutionMemory.previousBalanceQuotedAsset = previousBalanceQuotedAsset interExecutionMemory.tradePositionRate = tradePositionRate interExecutionMemory.tradePositionSize = tradePositionSize @@ -291,8 +291,8 @@ endRate: 0 } - interExecutionMemory.balanceAssetA = balanceAssetA; - interExecutionMemory.balanceAssetB = balanceAssetB; + interExecutionMemory.balanceBaseAsset = balanceBaseAsset; + interExecutionMemory.balanceQuotedAsset = balanceQuotedAsset; interExecutionMemory.lastTradeProfitLoss = lastTradeProfitLoss; interExecutionMemory.profit = profit; @@ -327,8 +327,8 @@ stopLoss = interExecutionMemory.stopLoss takeProfit = interExecutionMemory.takeProfit - previousBalanceAssetA = interExecutionMemory.previousBalanceAssetA - previousBalanceAssetB = interExecutionMemory.previousBalanceAssetB + previousBalanceBaseAsset = interExecutionMemory.previousBalanceBaseAsset + previousBalanceQuotedAsset = interExecutionMemory.previousBalanceQuotedAsset tradePositionRate = interExecutionMemory.tradePositionRate tradePositionSize = interExecutionMemory.tradePositionSize @@ -364,11 +364,11 @@ if (currentDay) { if (currentDay.valueOf() >= bot.VALUES_TO_USE.timeRange.initialDatetime.valueOf() + ONE_DAY_IN_MILISECONDS) { // Only after the first day we start grabbing the balance from this memory. - balanceAssetA = interExecutionMemory.balanceAssetA; - balanceAssetB = interExecutionMemory.balanceAssetB; + balanceBaseAsset = interExecutionMemory.balanceBaseAsset; + balanceQuotedAsset = interExecutionMemory.balanceQuotedAsset; - yesterday.balanceAssetA = balanceAssetA; - yesterday.balanceAssetB = balanceAssetB; + yesterday.balanceBaseAsset = balanceBaseAsset; + yesterday.balanceQuotedAsset = balanceQuotedAsset; } } @@ -400,8 +400,8 @@ yesterday.stopLoss = stopLoss yesterday.takeProfit = takeProfit - yesterday.previousBalanceAssetA = previousBalanceAssetA - yesterday.previousBalanceAssetB = previousBalanceAssetB + yesterday.previousBalanceBaseAsset = previousBalanceBaseAsset + yesterday.previousBalanceQuotedAsset = previousBalanceQuotedAsset yesterday.tradePositionRate = tradePositionRate yesterday.tradePositionSize = tradePositionSize @@ -708,10 +708,10 @@ /* Default Values*/ if (bot.VALUES_TO_USE.baseAsset === 'BTC') { - positionSize = balanceAssetA; + positionSize = balanceBaseAsset; positionRate = candle.close; } else { - positionSize = balanceAssetB; + positionSize = balanceQuotedAsset; positionRate = candle.close; } @@ -731,15 +731,15 @@ } if (isNaN(positionSize)) { if (bot.VALUES_TO_USE.baseAsset === 'BTC') { - positionSize = balanceAssetA; + positionSize = balanceBaseAsset; } else { - positionSize = balanceAssetB; + positionSize = balanceQuotedAsset; } } else { if (bot.VALUES_TO_USE.baseAsset === 'BTC') { - if (positionSize > balanceAssetA) { positionSize = balanceAssetA } + if (positionSize > balanceBaseAsset) { positionSize = balanceBaseAsset } } else { - if (positionSize > balanceAssetB) { positionSize = balanceAssetB } + if (positionSize > balanceQuotedAsset) { positionSize = balanceQuotedAsset } } } } @@ -1095,11 +1095,11 @@ let balance if (bot.VALUES_TO_USE.baseAsset === 'BTC') { - balance = balanceAssetA + balance = balanceBaseAsset minimumBalance = bot.VALUES_TO_USE.minimumBalanceA maximumBalance = bot.VALUES_TO_USE.maximumBalanceA } else { - balance = balanceAssetB + balance = balanceQuotedAsset minimumBalance = bot.VALUES_TO_USE.minimumBalanceB maximumBalance = bot.VALUES_TO_USE.maximumBalanceB } @@ -1718,27 +1718,27 @@ let feePaid = 0 if (bot.VALUES_TO_USE.baseAsset === 'BTC') { - strategy.positionSize = balanceAssetB / finalStopLoss; + strategy.positionSize = balanceQuotedAsset / finalStopLoss; strategy.positionRate = finalStopLoss; - feePaid = balanceAssetB / finalStopLoss * bot.VALUES_TO_USE.feeStructure.taker / 100 + feePaid = balanceQuotedAsset / finalStopLoss * bot.VALUES_TO_USE.feeStructure.taker / 100 - balanceAssetA = balanceAssetA + balanceAssetB / finalStopLoss - feePaid; - balanceAssetB = 0; + balanceBaseAsset = balanceBaseAsset + balanceQuotedAsset / finalStopLoss - feePaid; + balanceQuotedAsset = 0; } else { - strategy.positionSize = balanceAssetA * finalStopLoss; + strategy.positionSize = balanceBaseAsset * finalStopLoss; strategy.positionRate = finalStopLoss; - feePaid = balanceAssetA * finalStopLoss * bot.VALUES_TO_USE.feeStructure.taker / 100 + feePaid = balanceBaseAsset * finalStopLoss * bot.VALUES_TO_USE.feeStructure.taker / 100 - balanceAssetB = balanceAssetB + balanceAssetA * finalStopLoss - feePaid; - balanceAssetA = 0; + balanceQuotedAsset = balanceQuotedAsset + balanceBaseAsset * finalStopLoss - feePaid; + balanceBaseAsset = 0; } if (processingDailyFiles) { if (positionedAtYesterday) { - yesterday.balanceAssetA = balanceAssetA; - yesterday.balanceAssetB = balanceAssetB; + yesterday.balanceBaseAsset = balanceBaseAsset; + yesterday.balanceQuotedAsset = balanceQuotedAsset; } } @@ -1814,27 +1814,27 @@ let feePaid = 0 if (bot.VALUES_TO_USE.baseAsset === 'BTC') { - strategy.positionSize = balanceAssetB / finalTakeProfit; + strategy.positionSize = balanceQuotedAsset / finalTakeProfit; strategy.positionRate = finalTakeProfit; - feePaid = balanceAssetB / finalTakeProfit * bot.VALUES_TO_USE.feeStructure.taker / 100 + feePaid = balanceQuotedAsset / finalTakeProfit * bot.VALUES_TO_USE.feeStructure.taker / 100 - balanceAssetA = balanceAssetA + balanceAssetB / finalTakeProfit - feePaid; - balanceAssetB = 0; + balanceBaseAsset = balanceBaseAsset + balanceQuotedAsset / finalTakeProfit - feePaid; + balanceQuotedAsset = 0; } else { - strategy.positionSize = balanceAssetA * finalTakeProfit; + strategy.positionSize = balanceBaseAsset * finalTakeProfit; strategy.positionRate = finalTakeProfit; - feePaid = balanceAssetA * finalTakeProfit * bot.VALUES_TO_USE.feeStructure.taker / 100 + feePaid = balanceBaseAsset * finalTakeProfit * bot.VALUES_TO_USE.feeStructure.taker / 100 - balanceAssetB = balanceAssetB + balanceAssetA * finalTakeProfit - feePaid; - balanceAssetA = 0; + balanceQuotedAsset = balanceQuotedAsset + balanceBaseAsset * finalTakeProfit - feePaid; + balanceBaseAsset = 0; } if (processingDailyFiles) { if (positionedAtYesterday) { - yesterday.balanceAssetA = balanceAssetA; - yesterday.balanceAssetB = balanceAssetB; + yesterday.balanceBaseAsset = balanceBaseAsset; + yesterday.balanceQuotedAsset = balanceQuotedAsset; } } @@ -2041,8 +2041,8 @@ amountA = tradePositionSize * openPositionRate amountB = tradePositionSize - if (amountB > availableBalance.assetB) { // The assistant know what fees were paid. - amountB = availableBalance.assetB + if (amountB > availableBalance.quotedAsset) { // The assistant know what fees were paid. + amountB = availableBalance.quotedAsset } } else { positionDirection = "buy" @@ -2052,8 +2052,8 @@ amountA = tradePositionSize amountB = tradePositionSize / openPositionRate - if (amountA > availableBalance.assetA) { // The assistant know what fees were paid. - amountA = availableBalance.assetA + if (amountA > availableBalance.baseAsset) { // The assistant know what fees were paid. + amountA = availableBalance.baseAsset } } @@ -2117,13 +2117,13 @@ marketRate = candle.close; - previousBalanceAssetA = balanceAssetA; - previousBalanceAssetB = balanceAssetB; + previousBalanceBaseAsset = balanceBaseAsset; + previousBalanceQuotedAsset = balanceQuotedAsset; if (processingDailyFiles) { if (positionedAtYesterday) { - yesterday.previousBalanceAssetA = previousBalanceAssetA; - yesterday.previousBalanceAssetB = previousBalanceAssetB; + yesterday.previousBalanceBaseAsset = previousBalanceBaseAsset; + yesterday.previousBalanceQuotedAsset = previousBalanceQuotedAsset; } } @@ -2136,20 +2136,20 @@ feePaid = tradePositionSize * tradePositionRate * bot.VALUES_TO_USE.feeStructure.taker / 100 - balanceAssetB = balanceAssetB + tradePositionSize * tradePositionRate - feePaid; - balanceAssetA = balanceAssetA - tradePositionSize; + balanceQuotedAsset = balanceQuotedAsset + tradePositionSize * tradePositionRate - feePaid; + balanceBaseAsset = balanceBaseAsset - tradePositionSize; } else { feePaid = tradePositionSize / tradePositionRate * bot.VALUES_TO_USE.feeStructure.taker / 100 - balanceAssetA = balanceAssetA + tradePositionSize / tradePositionRate - feePaid; - balanceAssetB = balanceAssetB - tradePositionSize; + balanceBaseAsset = balanceBaseAsset + tradePositionSize / tradePositionRate - feePaid; + balanceQuotedAsset = balanceQuotedAsset - tradePositionSize; } if (processingDailyFiles) { if (positionedAtYesterday) { - yesterday.balanceAssetA = balanceAssetA; - yesterday.balanceAssetB = balanceAssetB; + yesterday.balanceBaseAsset = balanceBaseAsset; + yesterday.balanceQuotedAsset = balanceQuotedAsset; yesterday.lastTradeProfitLoss = lastTradeProfitLoss; yesterday.lastTradeROI = lastTradeROI; @@ -2262,16 +2262,16 @@ closePositionRate = ticker.last + 100; // This is provisional and totally arbitrary, until we have a formula on the designer that defines this stuff. - amountA = availableBalance.assetA - amountB = availableBalance.assetA / closePositionRate + amountA = availableBalance.baseAsset + amountB = availableBalance.baseAsset / closePositionRate } else { positionDirection = "sell" closePositionRate = ticker.last - 100; // This is provisional and totally arbitrary, until we have a formula on the designer that defines this stuff. - amountA = availableBalance.assetB * closePositionRate - amountB = availableBalance.assetB + amountA = availableBalance.quotedAsset * closePositionRate + amountB = availableBalance.quotedAsset } @@ -2337,15 +2337,15 @@ } if (bot.VALUES_TO_USE.baseAsset === 'BTC') { - lastTradeProfitLoss = balanceAssetA - previousBalanceAssetA; + lastTradeProfitLoss = balanceBaseAsset - previousBalanceBaseAsset; lastTradeROI = lastTradeProfitLoss * 100 / tradePositionSize; if (isNaN(lastTradeROI)) { lastTradeROI = 0; } - profit = balanceAssetA - bot.VALUES_TO_USE.initialBalanceA; + profit = balanceBaseAsset - bot.VALUES_TO_USE.initialBalanceA; } else { - lastTradeProfitLoss = balanceAssetB - previousBalanceAssetB; + lastTradeProfitLoss = balanceQuotedAsset - previousBalanceQuotedAsset; lastTradeROI = lastTradeProfitLoss * 100 / tradePositionSize; if (isNaN(lastTradeROI)) { lastTradeROI = 0; } - profit = balanceAssetB - bot.VALUES_TO_USE.initialBalanceB; + profit = balanceQuotedAsset - bot.VALUES_TO_USE.initialBalanceB; } if (processingDailyFiles) { @@ -2533,12 +2533,12 @@ } } - if (balanceAssetA === Infinity) { - balanceAssetA = Number.MAX_SAFE_INTEGER + if (balanceBaseAsset === Infinity) { + balanceBaseAsset = Number.MAX_SAFE_INTEGER } - if (balanceAssetB === Infinity) { - balanceAssetB = Number.MAX_SAFE_INTEGER + if (balanceQuotedAsset === Infinity) { + balanceQuotedAsset = Number.MAX_SAFE_INTEGER } let quotedBaseAsset = '"' + bot.VALUES_TO_USE.baseAsset + '"' @@ -2549,8 +2549,8 @@ type: type, marketRate: marketRate, amount: 1, - balanceA: balanceAssetA, - balanceB: balanceAssetB, + balanceA: balanceBaseAsset, + balanceB: balanceQuotedAsset, profit: profit, lastTradeProfitLoss: lastTradeProfitLoss, stopLoss: stopLoss, @@ -2814,8 +2814,8 @@ interExecutionMemory.stopLoss = yesterday.stopLoss interExecutionMemory.takeProfit = yesterday.takeProfit - interExecutionMemory.previousBalanceAssetA = yesterday.previousBalanceAssetA - interExecutionMemory.previousBalanceAssetB = yesterday.previousBalanceAssetB + interExecutionMemory.previousBalanceBaseAsset = yesterday.previousBalanceBaseAsset + interExecutionMemory.previousBalanceQuotedAsset = yesterday.previousBalanceQuotedAsset interExecutionMemory.tradePositionRate = yesterday.tradePositionRate interExecutionMemory.tradePositionSize = yesterday.tradePositionSize @@ -2848,8 +2848,8 @@ endRate: yesterday.currentTrade.endRate } - interExecutionMemory.balanceAssetA = yesterday.balanceAssetA; - interExecutionMemory.balanceAssetB = yesterday.balanceAssetB; + interExecutionMemory.balanceBaseAsset = yesterday.balanceBaseAsset; + interExecutionMemory.balanceQuotedAsset = yesterday.balanceQuotedAsset; interExecutionMemory.lastTradeProfitLoss = yesterday.lastTradeProfitLoss; interExecutionMemory.profit = yesterday.profit; interExecutionMemory.lastTradeROI = yesterday.lastTradeROI;