baseAsset and quotedAsset refactoring
This commit is contained in:
1 parent
da67471f0e
commit
dad19f8278
10 files changed
+192
-192
No files matched your search
+62
-62
@@ -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)); }
|
||||
|
||||
+2
-2
@@ -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;
|
||||
|
||||
+18
-18
@@ -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,
|
||||
|
||||
|
||||
+4
-4
@@ -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);
|
||||
|
||||
+3
-3
@@ -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);
|
||||
|
||||
@@ -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") {
|
||||
|
||||
@@ -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. */
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
+18
-18
@@ -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;
|
||||
|
||||
+80
-80
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user