Refactoring all records
This commit is contained in:
1 parent
395bd4230c
commit
ff9cc8012f
2 files changed
+147
-143
No files matched your search
+101
-101
@@ -120,7 +120,7 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
let recordsArray
|
||||
let conditionsArray
|
||||
let strategiesArray
|
||||
let tradesArray
|
||||
let positionsArray
|
||||
|
||||
let snapshotHeaders
|
||||
let triggerOnSnapshot
|
||||
@@ -139,12 +139,12 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
writeFiles,
|
||||
callBackFunction)
|
||||
|
||||
function writeFiles(pTradingSystem, pRecordsArray, pConditionsArray, pStrategiesArray, pTradesArray, pSnapshotHeaders, pTriggerOnSnapshot, pTakePositionSnapshot) {
|
||||
function writeFiles(pTradingSystem, pRecordsArray, pConditionsArray, pStrategiesArray, pPositionsArray, pSnapshotHeaders, pTriggerOnSnapshot, pTakePositionSnapshot) {
|
||||
tradingSystem = pTradingSystem
|
||||
recordsArray = pRecordsArray
|
||||
conditionsArray = pConditionsArray
|
||||
strategiesArray = pStrategiesArray
|
||||
tradesArray = pTradesArray
|
||||
positionsArray = pPositionsArray
|
||||
|
||||
snapshotHeaders = pSnapshotHeaders
|
||||
triggerOnSnapshot = pTriggerOnSnapshot
|
||||
@@ -177,42 +177,42 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
fileContent = fileContent + separator + '[' +
|
||||
record.begin + ',' +
|
||||
record.end + ',' +
|
||||
record.balanceBaseAsset + ',' +
|
||||
record.balanceQuotedAsset + ',' +
|
||||
record.accumulatedProfitLoss + ',' +
|
||||
record.lastTradeProfitLoss + ',' +
|
||||
record.stopLoss + ',' +
|
||||
record.tradesCount + ',' +
|
||||
record.hits + ',' +
|
||||
record.fails + ',' +
|
||||
record.hitRatio + ',' +
|
||||
record.ROI + ',' +
|
||||
record.periods + ',' +
|
||||
record.days + ',' +
|
||||
record.anualizedRateOfReturn + ',' +
|
||||
record.positionRate + ',' +
|
||||
record.lastTradeROI + ',' +
|
||||
record.strategy + ',' +
|
||||
record.takeProfit + ',' +
|
||||
record.variable_current_balance_baseAsset + ',' +
|
||||
record.variable_current_balance_quotedAsset + ',' +
|
||||
record.variable_episode_stat_profitLoss + ',' +
|
||||
record.variable_last_position_profitLoss + ',' +
|
||||
record.variable_current_position_stopLoss_value + ',' +
|
||||
record.variable_episode_count_positions + ',' +
|
||||
record.variable_episode_count_hits + ',' +
|
||||
record.variable_episode_count_fails + ',' +
|
||||
record.variable_episode_stat_hitRatio + ',' +
|
||||
record.variable_episode_stat_ROI + ',' +
|
||||
record.variable_episode_count_periods + ',' +
|
||||
record.variable_episode_stat_days + ',' +
|
||||
record.variable_episode_stat_anualizedRateOfReturn + ',' +
|
||||
record.variable_current_position_rate + ',' +
|
||||
record.variable_last_position_ROI + ',' +
|
||||
record.variable_current_strategy_index + ',' +
|
||||
record.variable_current_position_takeProfit_value + ',' +
|
||||
record.variable_current_position_stopLoss_phase + ',' +
|
||||
record.variable_current_position_stopLoss_phase + ',' +
|
||||
record.positionSize + ',' +
|
||||
record.initialBalanceA + ',' +
|
||||
record.minimumBalanceA + ',' +
|
||||
record.maximumBalanceA + ',' +
|
||||
record.initialBalanceB + ',' +
|
||||
record.minimumBalanceB + ',' +
|
||||
record.maximumBalanceB + ',' +
|
||||
record.baseAsset + ',' +
|
||||
record.quotedAsset + ',' +
|
||||
record.marketBaseAsset + ',' +
|
||||
record.marketQuotedAsset + ',' +
|
||||
record.positionPeriods + ',' +
|
||||
record.positionDays + ',' +
|
||||
record.distanceToLastTriggerOn + ',' +
|
||||
record.distanceToLastTriggerOff + ',' +
|
||||
record.distanceToLastTakePosition + ',' +
|
||||
record.distanceToLastClosePosition + ']'
|
||||
record.variable_current_position_size + ',' +
|
||||
record.variable_episode_parameters_initial_balance_baseAsset + ',' +
|
||||
record.variable_episode_parameters_minimum_balance_baseAsset + ',' +
|
||||
record.variable_episode_parameters_maximum_balance_baseAsset + ',' +
|
||||
record.variable_episode_parameters_initial_balance_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_minimum_balance_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_maximum_balance_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_baseAsset + ',' +
|
||||
record.variable_episode_parameters_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_marketBaseAsset + ',' +
|
||||
record.variable_episode_parameters_marketQuotedAsset + ',' +
|
||||
record.variable_current_position_periods + ',' +
|
||||
record.variable_current_position_days + ',' +
|
||||
record.variable_current_distance_toEvent_triggerOn + ',' +
|
||||
record.variable_current_distance_toEvent_triggerOff + ',' +
|
||||
record.variable_current_distance_toEvent_takePosition + ',' +
|
||||
record.variable_current_distance_toEvent_closePosition + ']'
|
||||
|
||||
if (separator === '') { separator = ',' }
|
||||
|
||||
@@ -338,7 +338,7 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
record.number + ',' +
|
||||
record.beginRate + ',' +
|
||||
record.endRate + ',' +
|
||||
'"' + record.triggerOnSituation + '"' + ',' +
|
||||
'"' + record.situationName + '"' + ',' +
|
||||
'"' + record.name + '"' + ']'
|
||||
|
||||
if (separator === '') { separator = ',' }
|
||||
@@ -368,7 +368,7 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
return
|
||||
}
|
||||
|
||||
writeTradesFile()
|
||||
writePositionsFile()
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writeStrategiesFile -> onFileCreated -> err = ' + err.stack)
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE)
|
||||
@@ -380,28 +380,28 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
}
|
||||
}
|
||||
|
||||
function writeTradesFile() {
|
||||
function writePositionsFile() {
|
||||
try {
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeMarketFiles -> writeTradesFile -> Entering function.') }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeMarketFiles -> writePositionsFile -> Entering function.') }
|
||||
|
||||
let separator = ''
|
||||
let fileRecordCounter = 0
|
||||
|
||||
let fileContent = ''
|
||||
|
||||
for (let i = 0; i < tradesArray.length; i++) {
|
||||
let record = tradesArray[i]
|
||||
for (let i = 0; i < positionsArray.length; i++) {
|
||||
let record = positionsArray[i]
|
||||
if (record.stopRate === undefined) { record.stopRate = 0 }
|
||||
|
||||
fileContent = fileContent + separator + '[' +
|
||||
record.begin + ',' +
|
||||
record.end + ',' +
|
||||
record.status + ',' +
|
||||
record.lastTradeROI + ',' +
|
||||
record.ROI + ',' +
|
||||
record.beginRate + ',' +
|
||||
record.endRate + ',' +
|
||||
record.exitType + ',' +
|
||||
'"' + record.takePositionSituation + '"' + ']'
|
||||
'"' + record.situationName + '"' + ']'
|
||||
|
||||
if (separator === '') { separator = ',' }
|
||||
|
||||
@@ -418,13 +418,13 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
|
||||
function onFileCreated(err) {
|
||||
try {
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> Entering function.') }
|
||||
if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, '[INFO] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> fileContent = ' + fileContent) }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeMarketFiles -> writePositionsFile -> onFileCreated -> Entering function.') }
|
||||
if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, '[INFO] start -> writeMarketFiles -> writePositionsFile -> onFileCreated -> fileContent = ' + fileContent) }
|
||||
|
||||
if (err.result !== global.DEFAULT_OK_RESPONSE.result) {
|
||||
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.baseAsset + '_' + market.quotedAsset)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writePositionsFile -> onFileCreated -> err = ' + err.stack)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writePositionsFile -> onFileCreated -> filePath = ' + filePath)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writePositionsFile -> onFileCreated -> market = ' + market.baseAsset + '_' + market.quotedAsset)
|
||||
|
||||
callBackFunction(err)
|
||||
return
|
||||
@@ -432,12 +432,12 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
|
||||
writeSnapshotFiles()
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writeTradesFile -> onFileCreated -> err = ' + err.stack)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writePositionsFile -> onFileCreated -> err = ' + err.stack)
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE)
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writeTradesFile -> err = ' + err.stack)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeMarketFiles -> writePositionsFile -> err = ' + err.stack)
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE)
|
||||
}
|
||||
}
|
||||
@@ -538,42 +538,42 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
fileContent = fileContent + separator + '[' +
|
||||
record.begin + ',' +
|
||||
record.end + ',' +
|
||||
record.balanceBaseAsset + ',' +
|
||||
record.balanceQuotedAsset + ',' +
|
||||
record.accumulatedProfitLoss + ',' +
|
||||
record.lastTradeProfitLoss + ',' +
|
||||
record.stopLoss + ',' +
|
||||
record.tradesCount + ',' +
|
||||
record.hits + ',' +
|
||||
record.fails + ',' +
|
||||
record.hitRatio + ',' +
|
||||
record.ROI + ',' +
|
||||
record.periods + ',' +
|
||||
record.days + ',' +
|
||||
record.anualizedRateOfReturn + ',' +
|
||||
record.positionRate + ',' +
|
||||
record.lastTradeROI + ',' +
|
||||
record.strategy + ',' +
|
||||
record.takeProfit + ',' +
|
||||
record.variable_current_balance_baseAsset + ',' +
|
||||
record.variable_current_balance_quotedAsset + ',' +
|
||||
record.variable_episode_stat_profitLoss + ',' +
|
||||
record.variable_last_position_profitLoss + ',' +
|
||||
record.variable_current_position_stopLoss_value + ',' +
|
||||
record.variable_episode_count_positions + ',' +
|
||||
record.variable_episode_count_hits + ',' +
|
||||
record.variable_episode_count_fails + ',' +
|
||||
record.variable_episode_stat_hitRatio + ',' +
|
||||
record.variable_episode_stat_ROI + ',' +
|
||||
record.variable_episode_count_periods + ',' +
|
||||
record.variable_episode_stat_days + ',' +
|
||||
record.variable_episode_stat_anualizedRateOfReturn + ',' +
|
||||
record.variable_current_position_rate + ',' +
|
||||
record.variable_last_position_ROI + ',' +
|
||||
record.variable_current_strategy_index + ',' +
|
||||
record.variable_current_position_takeProfit_value + ',' +
|
||||
record.variable_current_position_stopLoss_phase + ',' +
|
||||
record.variable_current_position_stopLoss_phase + ',' +
|
||||
record.positionSize + ',' +
|
||||
record.initialBalanceA + ',' +
|
||||
record.minimumBalanceA + ',' +
|
||||
record.maximumBalanceA + ',' +
|
||||
record.initialBalanceB + ',' +
|
||||
record.minimumBalanceB + ',' +
|
||||
record.maximumBalanceB + ',' +
|
||||
record.baseAsset + ',' +
|
||||
record.quotedAsset + ',' +
|
||||
record.marketBaseAsset + ',' +
|
||||
record.marketQuotedAsset + ',' +
|
||||
record.positionPeriods + ',' +
|
||||
record.positionDays + ',' +
|
||||
record.distanceToLastTriggerOn + ',' +
|
||||
record.distanceToLastTriggerOff + ',' +
|
||||
record.distanceToLastTakePosition + ',' +
|
||||
record.distanceToLastClosePosition + ']'
|
||||
record.variable_current_position_size + ',' +
|
||||
record.variable_episode_parameters_initial_balance_baseAsset + ',' +
|
||||
record.variable_episode_parameters_minimum_balance_baseAsset + ',' +
|
||||
record.variable_episode_parameters_maximum_balance_baseAsset + ',' +
|
||||
record.variable_episode_parameters_initial_balance_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_minimum_balance_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_maximum_balance_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_baseAsset + ',' +
|
||||
record.variable_episode_parameters_quotedAsset + ',' +
|
||||
record.variable_episode_parameters_marketBaseAsset + ',' +
|
||||
record.variable_episode_parameters_marketQuotedAsset + ',' +
|
||||
record.variable_current_position_periods + ',' +
|
||||
record.variable_current_position_days + ',' +
|
||||
record.variable_current_distance_toEvent_triggerOn + ',' +
|
||||
record.variable_current_distance_toEvent_triggerOff + ',' +
|
||||
record.variable_current_distance_toEvent_takePosition + ',' +
|
||||
record.variable_current_distance_toEvent_closePosition + ']'
|
||||
|
||||
if (separator === '') { separator = ',' }
|
||||
|
||||
@@ -714,7 +714,7 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
record.number + ',' +
|
||||
record.beginRate + ',' +
|
||||
record.endRate + ',' +
|
||||
'"' + record.triggerOnSituation + '"' + ',' +
|
||||
'"' + record.situationName + '"' + ',' +
|
||||
'"' + record.name + '"' + ']'
|
||||
|
||||
if (separator === '') { separator = ',' }
|
||||
@@ -745,7 +745,7 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
return
|
||||
}
|
||||
|
||||
writeTradesFile()
|
||||
writePositionsFile()
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writeStrategiesFile -> onFileCreated -> err = ' + err.stack)
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE)
|
||||
@@ -757,17 +757,17 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
}
|
||||
}
|
||||
|
||||
function writeTradesFile() {
|
||||
function writePositionsFile() {
|
||||
try {
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeDailyFiles -> writeTradesFile -> Entering function.') }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeDailyFiles -> writePositionsFile -> Entering function.') }
|
||||
|
||||
let separator = ''
|
||||
let fileRecordCounter = 0
|
||||
|
||||
let fileContent = ''
|
||||
|
||||
for (let i = 0; i < tradesArray.length; i++) {
|
||||
let record = tradesArray[i]
|
||||
for (let i = 0; i < positionsArray.length; i++) {
|
||||
let record = positionsArray[i]
|
||||
|
||||
/* Will only add to the file the records of the current day. In this case since objects can span more than one day, we add all of the objects that ends
|
||||
at the current date. */
|
||||
@@ -779,11 +779,11 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
record.begin + ',' +
|
||||
record.end + ',' +
|
||||
record.status + ',' +
|
||||
record.lastTradeROI + ',' +
|
||||
record.ROI + ',' +
|
||||
record.beginRate + ',' +
|
||||
record.endRate + ',' +
|
||||
record.exitType + ',' +
|
||||
'"' + record.takePositionSituation + '"' + ']'
|
||||
'"' + record.situationName + '"' + ']'
|
||||
|
||||
if (separator === '') { separator = ',' }
|
||||
|
||||
@@ -801,13 +801,13 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
|
||||
function onFileCreated(err) {
|
||||
try {
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> Entering function.') }
|
||||
if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, '[INFO] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> fileContent = ' + fileContent) }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, '[INFO] start -> writeDailyFiles -> writePositionsFile -> onFileCreated -> Entering function.') }
|
||||
if (LOG_FILE_CONTENT === true) { logger.write(MODULE_NAME, '[INFO] start -> writeDailyFiles -> writePositionsFile -> onFileCreated -> fileContent = ' + fileContent) }
|
||||
|
||||
if (err.result !== global.DEFAULT_OK_RESPONSE.result) {
|
||||
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.baseAsset + '_' + market.quotedAsset)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writePositionsFile -> onFileCreated -> err = ' + err.stack)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writePositionsFile -> onFileCreated -> filePath = ' + filePath)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writePositionsFile -> onFileCreated -> market = ' + market.baseAsset + '_' + market.quotedAsset)
|
||||
|
||||
callBackFunction(err)
|
||||
return
|
||||
@@ -815,12 +815,12 @@ exports.newTradingBot = function newTradingBot(bot, logger, UTILITIES, FILE_STOR
|
||||
|
||||
writeSnapshotFiles()
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writeTradesFile -> onFileCreated -> err = ' + err.stack)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writePositionsFile -> onFileCreated -> err = ' + err.stack)
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE)
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writeTradesFile -> err = ' + err.stack)
|
||||
logger.write(MODULE_NAME, '[ERROR] start -> writeDailyFiles -> writePositionsFile -> err = ' + err.stack)
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE)
|
||||
}
|
||||
}
|
||||
|
||||
+46
-42
@@ -154,6 +154,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
|
||||
function inializeCurrentStrategy() {
|
||||
|
||||
variable.current.strategy.name = ''
|
||||
variable.current.strategy.index = -1
|
||||
variable.current.strategy.stage = 'No Stage'
|
||||
variable.current.strategy.begin = 0
|
||||
@@ -179,6 +180,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
variable.current.position.beginRate = 0
|
||||
variable.current.position.endRate = 0
|
||||
variable.current.position.periods = 0
|
||||
variable.current.position.days = 0
|
||||
variable.current.position.situationName = ''
|
||||
|
||||
variable.current.position.stopLoss = {}
|
||||
@@ -381,7 +383,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
let conditions = new Map() // Here we store the conditions values that will be use in the simulator for decision making.
|
||||
let formulas = new Map()
|
||||
let conditionsArrayRecord = [] // These are the records that will be saved in a file for the plotter to consume.
|
||||
let conditionsArrayValues = [] // Here we store the conditions values that will be written on file for the plotter.
|
||||
let conditionsValues = [] // Here we store the conditions values that will be written on file for the plotter.
|
||||
let formulasErrors = [] // Here we store the errors produced by all phase formulas.
|
||||
let formulasValues = [] // Here we store the values produced by all phase formulas.
|
||||
|
||||
@@ -910,9 +912,9 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
conditions.set(condition.key, condition)
|
||||
|
||||
if (condition.value) {
|
||||
conditionsArrayValues.push(1)
|
||||
conditionsValues.push(1)
|
||||
} else {
|
||||
conditionsArrayValues.push(0)
|
||||
conditionsValues.push(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1004,6 +1006,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
variable.current.strategy.beginRate = candle.min
|
||||
variable.current.strategy.endRate = candle.min // In case the strategy does not get exited
|
||||
variable.current.strategy.situationName = situation.name
|
||||
variable.current.strategy.name = strategy.name
|
||||
|
||||
variable.current.distance.toEvent.triggerOn = 1
|
||||
|
||||
@@ -1460,10 +1463,10 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
}
|
||||
|
||||
variable.current.position.periods++
|
||||
variable.positionDays = variable.current.position.periods * variable.episode.parameters.timeFrame / ONE_DAY_IN_MILISECONDS
|
||||
variable.current.position.days = variable.current.position.periods * variable.episode.parameters.timeFrame / ONE_DAY_IN_MILISECONDS
|
||||
} else {
|
||||
variable.current.position.periods = 0
|
||||
variable.positionDays = 0
|
||||
variable.current.position.days = 0
|
||||
}
|
||||
|
||||
/* Keeping Distance Counters Up-to-date */
|
||||
@@ -2086,42 +2089,42 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
simulationRecord = {
|
||||
begin: candle.begin,
|
||||
end: candle.end,
|
||||
balanceBaseAsset: variable.current.balance.baseAsset,
|
||||
balanceQuotedAsset: variable.current.balance.quotedAsset,
|
||||
accumulatedProfitLoss: variable.episode.stat.profitLoss,
|
||||
lastTradeProfitLoss: variable.last.position.profitLoss,
|
||||
stopLoss: variable.current.position.stopLoss.value,
|
||||
tradesCount: variable.episode.count.positions,
|
||||
hits: variable.episode.count.hits,
|
||||
fails: variable.episode.count.fails,
|
||||
hitRatio: variable.episode.stat.hitRatio,
|
||||
ROI: variable.episode.stat.ROI,
|
||||
periods: variable.episode.count.periods,
|
||||
days: variable.episode.stat.days,
|
||||
anualizedRateOfReturn: variable.episode.stat.anualizedRateOfReturn,
|
||||
positionRate: variable.current.position.rate,
|
||||
lastTradeROI: variable.last.position.ROI,
|
||||
strategy: variable.current.strategy.index,
|
||||
takeProfit: variable.current.position.takeProfit.value,
|
||||
variable_current_balance_baseAsset: variable.current.balance.baseAsset,
|
||||
variable_current_balance_quotedAsset: variable.current.balance.quotedAsset,
|
||||
variable_episode_stat_profitLoss: variable.episode.stat.profitLoss,
|
||||
variable_last_position_profitLoss: variable.last.position.profitLoss,
|
||||
variable_current_position_stopLoss_value: variable.current.position.stopLoss.value,
|
||||
variable_episode_count_positions: variable.episode.count.positions,
|
||||
variable_episode_count_hits: variable.episode.count.hits,
|
||||
variable_episode_count_fails: variable.episode.count.fails,
|
||||
variable_episode_stat_hitRatio: variable.episode.stat.hitRatio,
|
||||
variable_episode_stat_ROI: variable.episode.stat.ROI,
|
||||
variable_episode_count_periods: variable.episode.count.periods,
|
||||
variable_episode_stat_days: variable.episode.stat.days,
|
||||
variable_episode_stat_anualizedRateOfReturn: variable.episode.stat.anualizedRateOfReturn,
|
||||
variable_current_position_rate: variable.current.position.rate,
|
||||
variable_last_position_ROI: variable.last.position.ROI,
|
||||
variable_current_strategy_index: variable.current.strategy.index,
|
||||
variable_current_position_takeProfit_value: variable.current.position.takeProfit.value,
|
||||
variable_current_position_stopLoss_phase: variable.current.position.stopLoss.phase,
|
||||
variable_current_position_takeProfit_phase: variable.current.position.takeProfit.phase,
|
||||
positionSize: variable.current.position.size,
|
||||
initialBalanceA: variable.episode.parameters.initial.balance.baseAsset,
|
||||
minimumBalanceA: variable.episode.parameters.minimum.balance.baseAsset,
|
||||
maximumBalanceA: variable.episode.parameters.maximum.balance.baseAsset,
|
||||
initialBalanceB: variable.episode.parameters.initial.balance.quotedAsset,
|
||||
minimumBalanceB: variable.episode.parameters.minimum.balance.quotedAsset,
|
||||
maximumBalanceB: variable.episode.parameters.maximum.balance.quotedAsset,
|
||||
baseAsset: '"' + variable.episode.parameters.baseAsset + '"',
|
||||
quotedAsset: '"' + variable.episode.parameters.quotedAsset + '"',
|
||||
marketBaseAsset: '"' + variable.episode.parameters.marketBaseAsset + '"',
|
||||
marketQuotedAsset: '"' + variable.episode.parameters.marketQuotedAsset + '"',
|
||||
positionPeriods: variable.current.position.periods,
|
||||
positionDays: variable.positionDays,
|
||||
distanceToEventTriggerOn: variable.current.distance.toEvent.triggerOn,
|
||||
distanceToEventTriggerOff: variable.current.distance.toEvent.triggerOff,
|
||||
distanceToEventTakePosition: variable.current.distance.toEvent.takePosition,
|
||||
distanceToEventClosePosition: variable.current.distance.toEvent.closePosition
|
||||
variable_current_position_size: variable.current.position.size,
|
||||
variable_episode_parameters_initial_balance_baseAsset: variable.episode.parameters.initial.balance.baseAsset,
|
||||
variable_episode_parameters_minimum_balance_baseAsset: variable.episode.parameters.minimum.balance.baseAsset,
|
||||
variable_episode_parameters_maximum_balance_baseAsset: variable.episode.parameters.maximum.balance.baseAsset,
|
||||
variable_episode_parameters_initial_balance_quotedAsset: variable.episode.parameters.initial.balance.quotedAsset,
|
||||
variable_episode_parameters_minimum_balance_quotedAsset: variable.episode.parameters.minimum.balance.quotedAsset,
|
||||
variable_episode_parameters_maximum_balance_quotedAsset: variable.episode.parameters.maximum.balance.quotedAsset,
|
||||
variable_episode_parameters_baseAsset: '"' + variable.episode.parameters.baseAsset + '"',
|
||||
variable_episode_parameters_quotedAsset: '"' + variable.episode.parameters.quotedAsset + '"',
|
||||
variable_episode_parameters_marketBaseAsset: '"' + variable.episode.parameters.marketBaseAsset + '"',
|
||||
variable_episode_parameters_marketQuotedAsset: '"' + variable.episode.parameters.marketQuotedAsset + '"',
|
||||
variable_current_position_periods: variable.current.position.periods,
|
||||
variable_current_position_days: variable.current.position.days,
|
||||
variable_current_distance_toEvent_triggerOn: variable.current.distance.toEvent.triggerOn,
|
||||
variable_current_distance_toEvent_triggerOff: variable.current.distance.toEvent.triggerOff,
|
||||
variable_current_distance_toEvent_takePosition: variable.current.distance.toEvent.takePosition,
|
||||
variable_current_distance_toEvent_closePosition: variable.current.distance.toEvent.closePosition
|
||||
}
|
||||
|
||||
recordsArray.push(simulationRecord)
|
||||
@@ -2131,7 +2134,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
conditionsArrayRecord.push(variable.current.strategy.index)
|
||||
conditionsArrayRecord.push(variable.current.position.stopLoss.phase)
|
||||
conditionsArrayRecord.push(variable.current.position.takeProfit.phase)
|
||||
conditionsArrayRecord.push(conditionsArrayValues)
|
||||
conditionsArrayRecord.push(conditionsValues)
|
||||
conditionsArrayRecord.push(formulasErrors)
|
||||
conditionsArrayRecord.push(formulasValues)
|
||||
|
||||
@@ -2155,7 +2158,8 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
number: variable.current.strategy.number,
|
||||
beginRate: variable.current.strategy.beginRate,
|
||||
endRate: variable.current.strategy.endRate,
|
||||
situationName: variable.current.strategy.situationName
|
||||
situationName: variable.current.strategy.situationName,
|
||||
name: variable.current.strategy.name
|
||||
}
|
||||
|
||||
strategiesArray.push(currentStrategyRecord)
|
||||
@@ -2235,7 +2239,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT
|
||||
begin: variable.current.position.begin,
|
||||
end: variable.current.position.end,
|
||||
status: variable.current.position.status,
|
||||
lastTradeROI: variable.current.position.ROI,
|
||||
ROI: variable.current.position.ROI,
|
||||
exitType: variable.current.position.exitType,
|
||||
beginRate: variable.current.position.beginRate,
|
||||
endRate: variable.current.position.endRate,
|
||||
|
||||
Reference in new issue
Block a user