diff --git a/LowFrequencyTrading/ExchangeAPI.js b/LowFrequencyTrading/ExchangeAPI.js index 8455fce3b..8d6adc9a1 100644 --- a/LowFrequencyTrading/ExchangeAPI.js +++ b/LowFrequencyTrading/ExchangeAPI.js @@ -28,9 +28,6 @@ let key = bot.KEY let secret = bot.SECRET - if (key === "undefined") { key = undefined } - if (secret === "undefined") { secret = undefined } - const exchangeClass = ccxt[exchangeId] const exchangeConstructorParams = { 'apiKey': key, @@ -76,8 +73,8 @@ async function createOrder(tradingSystemOrder, tradingEngineOrder) { - let price = tradingEngineOrder.rate // CCXT: how much quote currency you are willing to pay for a trade lot of base currency (for limit orders only) - let amount = tradingEngineOrder.size // CCXT: how much of currency you want to trade + let price = tradingEngineOrder.rate.value // CCXT: how much quote currency you are willing to pay for a trade lot of base currency (for limit orders only) + let amount = tradingEngineOrder.size.value // CCXT: how much of currency you want to trade let type // CCXT: a string literal type of order, ccxt currently unifies market and limit orders only let side // CCXT: a string literal for the direction of your order, buy or sell let symbol = bot.market.baseAsset + '/' + bot.market.quotedAsset // CCXT: a string literal symbol of the market you wish to trade on, like BTC/USD, ZEC/ETH, DOGE/DASH, etc @@ -108,7 +105,7 @@ /* Basic Logging */ logInfo("createOrder -> symbol = " + symbol); logInfo("createOrder -> side = " + side); - logInfo("createOrder -> cost = " + cost); + logInfo("createOrder -> type = " + type); logInfo("createOrder -> amount = " + amount); logInfo("createOrder -> price = " + price); @@ -123,7 +120,7 @@ } try { - let order = await (exchange.createOrder(symbol, type, side, amount)) + let order = await (exchange.createOrder(symbol, type, side, amount, price)) return order.id } catch (err) { tradingSystem.errors.push([tradingSystemOrder.id, err.message]) diff --git a/LowFrequencyTrading/TradingExecution.js b/LowFrequencyTrading/TradingExecution.js index 8ca04ab8b..2b6d89777 100644 --- a/LowFrequencyTrading/TradingExecution.js +++ b/LowFrequencyTrading/TradingExecution.js @@ -142,6 +142,15 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE /* Check Order Size */ if (tradingEngineOrder.size.value <= 0) { return } + /* Order Rate Calculation */ + tradingEngineOrder.rate.value = tradingEngine.current.position.rate.value // By default this is the order rate. + if (tradingSystemOrder.positionRate !== undefined) { + if (tradingSystemOrder.positionRate.formula !== undefined) { + tradingEngineOrder.rate.value = tradingSystem.formulas.get(tradingSystemOrder.positionRate.formula.id) + tradingEngineOrder.rate.value = global.PRECISE(tradingEngineOrder.rate.value, 10) + } + } + /* Place Order at the Exchange */ if (createOrderAtExchange(tradingSystemOrder, tradingEngineOrder) !== true) { return } @@ -161,21 +170,12 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE tradingEngineOrder.algorithmName.value = executionAlgorithm.name tradingEngineOrder.situationName.value = situationName - /* Order Rate Calculation */ - tradingEngineOrder.rate.value = tradingEngine.current.position.rate.value // By default this is the order rate. - if (tradingSystemOrder.positionRate !== undefined) { - if (tradingSystemOrder.positionRate.formula !== undefined) { - tradingEngineOrder.rate.value = tradingSystem.formulas.get(tradingSystemOrder.positionRate.formula.id) - tradingEngineOrder.rate.value = global.PRECISE(tradingEngineOrder.rate.value, 10) - } - } - /* Update Stage Orders Size */ stageOrdersSize.value = stageOrdersSize.value + tradingEngineOrder.size.value stageOrdersSize.value = global.PRECISE(stageOrdersSize.value, 10) } - function createOrderAtExchange(tradingSystemOrder, tradingEngineOrder) { + async function createOrderAtExchange(tradingSystemOrder, tradingEngineOrder) { /* Filter by Session Type */ switch (bot.SESSION.type) { @@ -193,7 +193,7 @@ exports.newTradingExecution = function newTradingExecution(bot, logger, tradingE } } - let orderId = exchangeAPIModule.createOrder(tradingSystemOrder, tradingEngineOrder) + let orderId = await exchangeAPIModule.createOrder(tradingSystemOrder, tradingEngineOrder) if (orderId !== undefined) { tradingEngineOrder.exchangeId.value = orderId diff --git a/Session.js b/Session.js index 806468fea..f7524e5ce 100644 --- a/Session.js +++ b/Session.js @@ -306,7 +306,7 @@ } bot.tradingProcessDate = new Date(bot.SESSION.parameters.timeRange.config.initialDatetime.valueOf()) - pProcessConfig.liveWaitTime = sessionParameters.timeFrame.config.value + pProcessConfig.liveWaitTime = bot.SESSION.parameters.timeFrame.config.value return true } @@ -335,14 +335,14 @@ bot.SESSION.parameters.sessionBaseAsset.config.maximumBalance = bot.SESSION.parameters.sessionBaseAsset.config.maximumBalance * balancePercentage / 100 bot.SESSION.parameters.sessionQuotedAsset.config.maximumBalance = bot.SESSION.parameters.sessionQuotedAsset.config.maximumBalance * balancePercentage / 100 - pProcessConfig.normalWaitTime = sessionParameters.timeFrame.config.value + pProcessConfig.normalWaitTime = bot.SESSION.parameters.timeFrame.config.value return true } function startPaperTrading(message) { bot.tradingProcessDate = new Date(bot.SESSION.parameters.timeRange.config.initialDatetime.valueOf()) - pProcessConfig.normalWaitTime = sessionParameters.timeFrame.config.value + pProcessConfig.normalWaitTime = bot.SESSION.parameters.timeFrame.config.value return true }