From 4088d631a821e962af0863dbccefa676589782d1 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 14 Jun 2020 13:09:20 +0200 Subject: [PATCH] initialBalance --- LowFrequencyTrading/TradingEngine.js | 5 ++-- LowFrequencyTrading/TradingOutput.js | 36 +++++++++++++++++++++++- LowFrequencyTrading/TradingRecords.js | 9 ++++-- LowFrequencyTrading/TradingSimulation.js | 3 -- 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/LowFrequencyTrading/TradingEngine.js b/LowFrequencyTrading/TradingEngine.js index 12765c8a0..2ccba67eb 100644 --- a/LowFrequencyTrading/TradingEngine.js +++ b/LowFrequencyTrading/TradingEngine.js @@ -26,9 +26,10 @@ exports.newTradingEngine = function newTradingEngine(bot, logger) { tradingEngine = bot.simulationState.tradingEngine sessionParameters = bot.SESSION.parameters - if (tradingEngine.isInitialized !== true || bot.RESUME === false) { - tradingEngine.isInitialized = true + if (bot.RESUME === false) { initializeNode(tradingEngine) + tradingEngine.current.balance.baseAsset.value = sessionParameters.sessionBaseAsset.config.initialBalance + tradingEngine.current.balance.quotedAsset.value = sessionParameters.sessionQuotedAsset.config.initialBalance } } diff --git a/LowFrequencyTrading/TradingOutput.js b/LowFrequencyTrading/TradingOutput.js index bc43286f7..59ada325b 100644 --- a/LowFrequencyTrading/TradingOutput.js +++ b/LowFrequencyTrading/TradingOutput.js @@ -56,10 +56,44 @@ exports.newTradingOutput = function newTradingOutput(bot, logger, UTILITIES, FIL if (bot.RESUME !== true) { bot.simulationState.tradingEngine = bot.TRADING_ENGINE bot.simulationState.tradingSystem = bot.TRADING_SYSTEM + initializeOutputs() + } else { + readFiles() } - readFiles() return + function initializeOutputs() { + if (bot.processingDailyFiles) { + initializeDailyFiles() + } else { + initializeMarketFiles() + } + } + + function initializeDailyFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Daily Files') { + outputDatasetsMap.set(dataset.parentNode.config.codeName, []) + } + } + runSimulation() + } + + function initializeMarketFiles() { + for (let i = 0; i < outputDatasets.length; i++) { + let outputDatasetNode = outputDatasets[i] + let dataset = outputDatasetNode.referenceParent + + if (dataset.config.type === 'Market Files') { + outputDatasetsMap.set(dataset.parentNode.config.codeName, []) + } + } + runSimulation() + } + function readFiles() { /* This bot have an output of files that it generates. At every call to the bot, it needs to read the previously generated diff --git a/LowFrequencyTrading/TradingRecords.js b/LowFrequencyTrading/TradingRecords.js index c26cc1623..af897c42a 100644 --- a/LowFrequencyTrading/TradingRecords.js +++ b/LowFrequencyTrading/TradingRecords.js @@ -38,17 +38,17 @@ exports.newTradingRecords = function newTradingRecords(bot, logger) { let dataset = outputDatasetNode.referenceParent let product = dataset.parentNode let record + let outputDatasetArray = outputDatasetsMap.get(product.config.codeName) if (bot.processingDailyFiles === true && dataset.config.type === 'Daily Files') { record = scanRecordDefinition(product) + outputDatasetArray.push(record) } if (bot.processingDailyFiles === false && dataset.config.type === 'Market Files') { record = scanRecordDefinition(product) + outputDatasetArray.push(record) } - - let outputDatasetArray = outputDatasetsMap.get(product.config.codeName) - outputDatasetArray.push(record) } function scanRecordDefinition(product) { @@ -113,6 +113,9 @@ exports.newTradingRecords = function newTradingRecords(bot, logger) { if (recordProperty.config.isString === true) { value = '"' + value + '"' } + if (recordProperty.config.decimals !== undefined) { + value = value.toFixed(decimals) + } record.push(value) } return record diff --git a/LowFrequencyTrading/TradingSimulation.js b/LowFrequencyTrading/TradingSimulation.js index d1eede93d..36f92621e 100644 --- a/LowFrequencyTrading/TradingSimulation.js +++ b/LowFrequencyTrading/TradingSimulation.js @@ -77,9 +77,6 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, UTILIT let propertyName = 'at' + sessionParameters.timeFrame.config.label.replace('-', '') let candles = chart[propertyName].candles - /* Last Candle */ - let lastCandle = candles[candles.length - 1] // TODO Maybe remove this - /* Variables needed for heartbeat functionality */ let heartBeatDate let previousheartBeatDate