我正在尝试为ETHUSDT
创建OCO订单
这是我创建的函数:
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)
执行代码后,我得到错误:
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
最小符号是用美元来衡量的,而不是硬币的数量。这张订单一定是在被拒绝的那一点上。我试过你的代码,它成功了。然后,我以.0001的增量缩小,当我接近10美元时,得到了最小的符号错误
这里要考虑的主要问题是止损,也不能低于最小值,因为你实际上是在订购X减量损失,这可能会让你吃亏。只需要多做一点交易,给自己一个缓冲干杯,朋友
相关问题 更多 >
编程相关推荐