Refactoring all records

This commit is contained in:
Luis Fernando Molina committed 2020-05-20 18:49:02 +02:00
1 parent 395bd4230c
commit ff9cc8012f
2 files changed
+147 -143

No files matched your search

+101 -101
View File
@@ -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
View File
@@ -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,