Como limitar os dígitos de preço quando o disco real está em operação

Autora:Zayne., Criado: 2019-11-02 15:00:19, Atualizado:

A questão é que, recentemente, o movimento no mercado real tem sido frequentemente informado de erros, talvez o preço do mercado que eu uso seja apenas um decimal.img


Mais.

Inventor de quantificação https://www.fmz.com/api#setprecision

Ervas daninhasNão se preocupe em executar estratégias, veja o tutorial no topo do fórum.

Ervas daninhasNão se preocupe em executar estratégias, veja o tutorial no topo do fórum.

Ervas daninhastroca.Comprar ((_N(comprarPrice,2),_N(comprarMontante,3))

Ervas daninhasA política pública geralmente não tem restrições especiais de precisão, para diferentes moedas você pode configurar manualmente o_N

Ervas daninhas_N(2.312,1)

Zayne.Basicamente, muitas estratégias públicas têm esse problema, e muitas tentadas são assim: o preço é um número inteiro de uma fração, também é transacionado, com frequência falha, a execução de compra e venda não é executada, a estratégia não atinge os resultados esperados.

Zayne.Muito bem.

Zayne.Onde está o código extra? Por exemplo, esta estratégia de roubo. função CancelPendingOrders ((orderType) { enquanto (true) { Var ordens = _C (exchange.GetOrders); Var count = 0; If (typeof(orderType)!= 'undefined') { para (var i = 0; i < ordens.length; i++) { se (orders[i].Type == orderType) { O conteúdo é o seguinte: Não. Não. } else { cont = ordens.length; Não. Se (conta == 0) { O retorno; Não. para (var j = 0; j < ordens.length; j++) { if (typeof(orderType) == 'undefined' の で (orderType == orders[j].Type)) { exchange.CancelOrder ((orders[j].Id, orders[j]); se (j < (orders.length-1)) { Sleep (intervalo); Não. Não. Não. Não. Não. função updateProfit ((accountInit, accountNow, ticker) { 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); Não. var InitAccount = null; var LastBuyPrice = 0; var LastSellPrice = 0; função on Tick (() { Var ticker = _C (exchange.GetTicker); var BuyPrice = ticker.Buy + SlidePrice; var SellPrice = ticker.Sell - SlidePrice; - O lucro desapareceu. Se o preço de venda é igual ao preço de compra, então o preço de venda é igual ao preço de compra. CancelPendingOrders (Cancelar ordens pendentes) O retorno; Não. O que é isso? var cancelType = null; O que é isso? se (LastBuyPrice > 0 && (ticker.Buy - LastBuyPrice) > SlidePrice) { O que é o tipo de ordem? Não. O que é isso? se (LastSellPrice > 0 && (LastSellPrice - ticker.Sell) > SlidePrice) se (cancelType == null) { O que é o tipo de ordem? } else { cancelType = -1; Não. Não. O que é isso? se (cancelType == -1) { CancelPendingOrders (Cancelar ordens pendentes) } else if (cancelType!= null) { CancelPendingOrders ((cancelType)); Não. Var ordens = _C (exchange.GetOrders); se (orders.length == 2) { O retorno; Não. Var account = _C ((exchange.GetAccount); var amountBuy = _N ((Math.min ((account.Balance / BuyPrice, Lot)); Var amountSell = Math.min ((account.Stocks, Lot); se (amountBuy >= MinStock) { se (orders.length == 0 ordres[0].Type == ORDER_TYPE_SELL) { se (orders.length > 0) { updateProfit ((InitAccount, account, ticker); Não. exchange.Buy ((BuyPrice, amountBuy); LastBuyPrice = BuyPrice; Não. Não. se (amountSell >= MinStock) { se (orders.length == 0 ordres[0].Type == ORDER_TYPE_BUY) { se (orders.length > 0) { updateProfit ((InitAccount, account, ticker); Não. exchange.Sell (SellPrice, amountSell); LastSellPrice = SellPrice; Não. Não. Não. função onexit (()) { CancelPendingOrders (Cancelar ordens pendentes) Não. função main() { InitAccount = _C ((exchange.GetAccount); Log (InitAccount); SetErrorFilter (("502: 503: 503: 502: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: 503: exchange.SetRate ((1); LoopInterval = Math.max ((LoopInterval, 1); Lot = Math.max ((MinStock, Lot); enquanto (true) { OnTick (); Sleep (LoopInterval * 1000); Não. Não.