Вопрос, в последнее время в реальном движении часто возникают ошибки, возможно, цена на бирже, которую я использовал, может быть только дробиком.
Изобретатель количественный https://www.fmz.com/api#setprecision
ТраваНе спешите работать над стратегией, просто посмотрите на уроки, которые размещены на вершине форума.
ТраваНе спешите работать над стратегией, просто посмотрите на уроки, которые размещены на вершине форума.
ТраваОбмен.Купить ((_N(купитьЦена,2),_N(купитьСтоимость,3))
ТраваПубличные стратегии, как правило, не имеют особых ограничений на точность.
Трава_N(2.312,1)
Зайн.В принципе, многие открытые стратегии имеют эту проблему, и я пытался несколько, что цена случайно является целым числом из числа дроби, также будет сделан, часто ошибается, который должен быть выполнен покупки и продажи не будут выполнены, стратегия совершенно не достигает ожидаемого эффекта.
Зайн.Хорошо.
Зайн.Где находится код? Например, эта тактика захвата. function CancelPendingOrders ((orderType) {) Окончание выполнения задания while (true) { пока (правда) { var orders = _C ((exchange.GetOrders); var count = 0; if (typeof(orderType)!= 'undefined') { for (var i = 0; i < orders.length; i++) { if (orders[i].Type == orderType) { count++; {y:bi} {y:bi} } else { count = order.length; {y:bi} if (count == 0) { return; {y:bi} for (var j = 0; j < orders.length; j++) { if (typeof(orderType) == 'undefined' の で (orderType == orders[j].Type)) { exchange.CancelOrder ((orders[j].Id, orders[j]); if (j < (orders.length-1)) { Sleep ((Interval)); {y:bi} {y:bi} {y:bi} {y:bi} {y:bi} function updateProfit ((accountInit, accountNow, тикер) { var netNow = accountNow.Balance + accountNow.FrozenBalance + ((accountNow.Stocks + accountNow.FrozenStocks) * ticker.Buy); var netInit = accountInit.Balance + accountInit.FrozenBalance + ((accountInit.Stocks + accountInit.FrozenStocks) * ticker.Buy); LogProfit ((netNow - netInit); {y:bi} var InitAccount = null; var LastBuyPrice = 0; var LastSellPrice = 0; function on Tick ((() { var ticker = _C ((exchange.GetTicker); var BuyPrice = ticker.Buy + SlidePrice; var SellPrice = ticker.Sell - SlidePrice; // Утратил прибыль Если (продажная цена - покупная цена) <= MaxDiff) { CancelPendingOrders (отменить ожидаемые заказы) return; {y:bi} Что вы думаете? var cancelType = null; Что вы думаете? if (LastBuyPrice > 0 && (ticker.Buy - LastBuyPrice) > SlidePrice) { cancelType = ORDER_TYPE_BUY; {y:bi} Что вы думаете? if (LastSellPrice > 0 && (LastSellPrice - ticker.Sell) > SlidePrice) { if (cancelType == null) { cancelType = ORDER_TYPE_SELL; } else { cancelType = -1; {y:bi} {y:bi} Что вы думаете? if (cancelType == -1) { CancelPendingOrders (отменить ожидаемые заказы) } else if (cancelType!= null) { CancelPendingOrders ((cancelType); отменить ожидаемые заказы); {y:bi} var orders = _C ((exchange.GetOrders); if (orders.length == 2) { return; {y:bi} var account = _C ((exchange.GetAccount); var amountBuy = _N ((Math.min ((account.Balance / BuyPrice, Lot))); var amountSell = Math.min ((account.Stocks, Lot); if (amountBuy >= MinStock) { if (orders.length == 0 ordres[0].Type == ORDER_TYPE_SELL) { if (orders.length > 0) { updateProfit ((InitAccount, account, ticker)); {y:bi} exchange.Buy ((BuyPrice, amountBuy)); LastBuyPrice = Покупка; {y:bi} {y:bi} if (amountSell >= MinStock) { if (orders.length == 0 ordres[0].Type == ORDER_TYPE_BUY) { if (orders.length > 0) { updateProfit ((InitAccount, account, ticker)); {y:bi} exchange.Sell ((SellPrice, amountSell)); LastSellPrice = SellPrice; {y:bi} {y:bi} {y:bi} функция onexit (()) { CancelPendingOrders (отменить ожидаемые заказы) {y:bi} function main (() { InitAccount = _C ((exchange.GetAccount); Log (InitAccount); SetErrorFilter (("502: добавление 503: добавление непредвиденного отключения сети при выходе из строя WSARecv при подключении GetAddr при подключении такого отключения при восстановлении EOF"); exchange.SetRate ((1); LoopInterval = Math.max ((LoopInterval, 1)); Lot = Math.max ((MinStock, Lot); while (true) { пока (правда) { Посмотрите на это. Sleep ((LoopInterval * 1000); {y:bi} {y:bi}