首页 > 解决方案 > Binance OCO 订单 -> MIN_NOTIONAL | python-binance

问题描述

我正在尝试为ETHUSDT

这是我创建的功能:

def OcoOrder(symbol, bet, takeProfit, stopLoss):
    client.order_oco_sell(symbol=symbol,
                          quantity=str(bet),
                          price=str(round(takeProfit, 2)),
                          stopPrice=str(round(stopLoss, 2)),
                          stopLimitPrice =str(round(stopLoss, 2)),
                          stopLimitTimeInForce="GTC")

这是电话:

buyPrice = 3803.57
stopLossValue = buyPrice * stopLoss
takeProfitValue = buyPrice * takeProfit
OcoOrder(symbol, "0.0028", takeProfitValue, stopLossValue)

我拥有的数量是 0.0028,相当于 10USDT 多一点 在此处输入图像描述

执行代码后,我收到错误:

APIError(code=-1013): Filter failure: MIN_NOTIONAL

我检查了币安交换信息的MIN_NOTINAL价值,它是 10。意味着我可以出售的最小数量是 10 ETH 或换句话说 38.000 欧元?!?!?!

{
     "symbol":"ETHUSDT",
     "status":"TRADING",
     "baseAsset":"ETH",
     "baseAssetPrecision":8,
     "quoteAsset":"USDT",
     "quotePrecision":8,
     "quoteAssetPrecision":8,
     "baseCommissionPrecision":8,
     "quoteCommissionPrecision":8,
     "orderTypes":[
        "LIMIT",
        "LIMIT_MAKER",
        "MARKET",
        "STOP_LOSS_LIMIT",
        "TAKE_PROFIT_LIMIT"
     ],
     "icebergAllowed":true,
     "ocoAllowed":true,
     "quoteOrderQtyMarketAllowed":true,
     "isSpotTradingAllowed":true,
     "isMarginTradingAllowed":true,
     "filters":[
        {
           "filterType":"PRICE_FILTER",
           "minPrice":"0.01000000",
           "maxPrice":"1000000.00000000",
           "tickSize":"0.01000000"
        },
        {
           "filterType":"PERCENT_PRICE",
           "multiplierUp":"5",
           "multiplierDown":"0.2",
           "avgPriceMins":5
        },
        {
           "filterType":"LOT_SIZE",
           "minQty":"0.00010000",
           "maxQty":"9000.00000000",
           "stepSize":"0.00010000"
        },
        {
           "filterType":"MIN_NOTIONAL",
           "minNotional":"10.00000000",
           "applyToMarket":true,
           "avgPriceMins":5
        },
        {
           "filterType":"ICEBERG_PARTS",
           "limit":10
        },
        {
           "filterType":"MARKET_LOT_SIZE",
           "minQty":"0.00000000",
           "maxQty":"1459.84229583",
           "stepSize":"0.00000000"
        },
        {
           "filterType":"MAX_NUM_ORDERS",
           "maxNumOrders":200
        },
        {
           "filterType":"MAX_NUM_ALGO_ORDERS",
           "maxNumAlgoOrders":5
        }
     ],
     "permissions":[
        "SPOT",
        "MARGIN"
     ]
  },

如果我交换它并使用 USDT 值作为我得到的数量,Account has insufficient balance for requested action.因为我显然没有 10 ETH

我在监督什么吗?最小数量是 10 ETH 是不可能的

标签: pythonbinance

解决方案


最小符号以美元而不是硬币的数量来衡量。该订单必须刚刚处于被拒绝的那个级别的风口浪尖。我试过你的代码,它工作。然后,我以 0.0001 为增量按比例缩小,并在接近 10 美元时得到最小的符号错误。

这里要考虑的主要事情是你的止损,它也不能低于最小符号,因为你实际上是在下一个 x 金额减去损失的订单,这可能会让你接管。只需要多交易一点,给自己一个缓冲。

干杯朋友!


推荐阅读