From 2348a2bacbd9552dd889d1626589d00cdf9aa870 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 6 Aug 2020 23:17:43 +0200 Subject: [PATCH] Fixes --- FileStorage.js | 2 +- LowFrequencyTrading/TradingPosition.js | 40 ++++++++++++++++++++++++-- LowFrequencyTrading/TradingStages.js | 10 ++----- server.js | 1 - 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/FileStorage.js b/FileStorage.js index 1b55b9af7..f47b86545 100644 --- a/FileStorage.js +++ b/FileStorage.js @@ -163,7 +163,7 @@ exports.newFileStorage = function newFileStorage(logger, host, port) { } function retry() { - //console.log(new Date(), ' Retry #: ' + currentRetryGetTextFile, fileLocation ) + console.log(new Date(), ' Retry #: ' + currentRetryGetTextFile, fileLocation) if (currentRetryGetTextFile < MAX_RETRY) { currentRetryGetTextFile++ logger.write(MODULE_NAME, '[WARN] FileStorage -> getTextFile -> retry -> Will try to read the file again -> Retry #: ' + currentRetryGetTextFile) diff --git a/LowFrequencyTrading/TradingPosition.js b/LowFrequencyTrading/TradingPosition.js index 2b30fe00e..436b0786f 100644 --- a/LowFrequencyTrading/TradingPosition.js +++ b/LowFrequencyTrading/TradingPosition.js @@ -15,8 +15,6 @@ exports.newTradingPosition = function newTradingPosition(bot, logger, tradingEng updateEnds: updateEnds, updateStatus: updateStatus, updateCounters: updateCounters, - updateStatistics: updateStatistics, - updateResults: updateResults, resetPosition: resetPosition, initialize: initialize, finalize: finalize @@ -47,6 +45,7 @@ exports.newTradingPosition = function newTradingPosition(bot, logger, tradingEng tradingEngine.current.position.serialNumber.value = tradingEngine.episode.episodeCounters.positions.value tradingEngine.current.position.identifier.value = global.UNIQUE_ID() tradingEngine.current.position.begin.value = tradingEngine.current.candle.begin.value + tradingEngine.current.position.beginRate.value = tradingEngine.current.candle.close.value tradingEngine.current.position.end.value = tradingEngine.current.candle.end.value tradingEngine.current.position.situationName.value = situationName @@ -72,6 +71,10 @@ exports.newTradingPosition = function newTradingPosition(bot, logger, tradingEng tradingEngine.current.position.status.value = 'Closed' tradingEngine.current.position.end.value = tradingEngine.current.candle.end.value tradingEngine.current.position.endRate.value = tradingEngine.current.candle.close.value + + /* Position Statistics & Results */ + updateStatistics() + updateResults() /* Now that the position is closed, it is the right time to move this position from current to last at the Trading Engine data structure. */ @@ -239,6 +242,37 @@ exports.newTradingPosition = function newTradingPosition(bot, logger, tradingEng function updateStatistics() { + /* Profit Loss Calculation */ + tradingEngine.current.position.positionStatistics.profitLoss.value = + ( + tradingEngine.current.balance.baseAsset.value * tradingEngine.current.position.endRate.value + + tradingEngine.current.balance.quotedAsset.value + ) - + ( + tradingEngine.previous.balance.baseAsset.value * tradingEngine.current.position.beginRate.value + + tradingEngine.previous.balance.quotedAsset.value + ) + tradingEngine.current.position.positionStatistics.profitLoss.value = global.PRECISE(tradingEngine.current.position.positionStatistics.profitLoss.value, 10) + + /* ROI Calculation */ + tradingEngine.current.position.positionStatistics.ROI.value = + ( + tradingEngine.current.position.positionStatistics.profitLoss.value + ) + * 100 / + ( + tradingEngine.previous.balance.baseAsset.value * tradingEngine.current.position.beginRate.value + + tradingEngine.previous.balance.quotedAsset.value + ) + tradingEngine.current.position.positionStatistics.ROI.value = global.PRECISE(tradingEngine.current.position.positionStatistics.ROI.value, 10) + + /* Hit Fail Calculation */ + if (tradingEngine.current.position.positionStatistics.ROI.value > 0) { + tradingEngine.current.position.positionStatistics.hitFail.value = 'HIT' + } else { + tradingEngine.current.position.positionStatistics.hitFail.value = 'FAIL' + } + /* Days Calculation */ tradingEngine.current.position.positionStatistics.days.value = tradingEngine.current.position.positionCounters.periods.value * @@ -258,6 +292,7 @@ exports.newTradingPosition = function newTradingPosition(bot, logger, tradingEng tradingEngine.previous.balance.quotedAsset.value tradingEngine.current.position.positionBaseAsset.profitLoss.value = global.PRECISE(tradingEngine.current.position.positionBaseAsset.profitLoss.value, 10) + tradingEngine.current.position.positionQuotedAsset.profitLoss.value = global.PRECISE(tradingEngine.current.position.positionQuotedAsset.profitLoss.value, 10) /* ROI Calculation */ tradingEngine.current.position.positionBaseAsset.ROI.value = @@ -269,6 +304,7 @@ exports.newTradingPosition = function newTradingPosition(bot, logger, tradingEng tradingEngine.current.position.positionQuotedAsset.entryTargetSize.value tradingEngine.current.position.positionBaseAsset.ROI.value = global.PRECISE(tradingEngine.current.position.positionBaseAsset.ROI.value, 10) + tradingEngine.current.position.positionQuotedAsset.ROI.value = global.PRECISE(tradingEngine.current.position.positionQuotedAsset.ROI.value, 10) /* Hit Fail Calculation */ if (tradingEngine.current.position.positionBaseAsset.ROI.value > 0) { diff --git a/LowFrequencyTrading/TradingStages.js b/LowFrequencyTrading/TradingStages.js index 89ba6e02a..6483f86ab 100644 --- a/LowFrequencyTrading/TradingStages.js +++ b/LowFrequencyTrading/TradingStages.js @@ -992,13 +992,6 @@ exports.newTradingStages = function newTradingStages(bot, logger, tradingEngineM function exitPositionAndStrategy() { - /* Position Statistics & Results */ - tradingPositionModule.updateStatistics() - tradingPositionModule.updateResults() - - updatingEpisodeAssets() - updatingEpisodeStatistics() - /* Taking Position Snapshot */ if (bot.SESSION.type === 'Backtesting Session') { if (sessionParameters.snapshots !== undefined) { @@ -1020,6 +1013,9 @@ exports.newTradingStages = function newTradingStages(bot, logger, tradingEngineM /* Close the Position */ tradingPositionModule.closePosition() + updatingEpisodeAssets() + updatingEpisodeStatistics() + /* Close the Strategy */ tradingStrategyModule.closeStrategy('Position Closed') diff --git a/server.js b/server.js index 1d5b92c6c..80d7a1c9e 100644 --- a/server.js +++ b/server.js @@ -1,5 +1,4 @@ /* Callbacks default responses. */ - global.DEFAULT_OK_RESPONSE = { result: "Ok", message: "Operation Succeeded"