python - 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)
执行代码后,我收到错误:
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 是不可能的
解决方案
最小符号以美元而不是硬币的数量来衡量。该订单必须刚刚处于被拒绝的那个级别的风口浪尖。我试过你的代码,它工作。然后,我以 0.0001 为增量按比例缩小,并在接近 10 美元时得到最小的符号错误。
这里要考虑的主要事情是你的止损,它也不能低于最小符号,因为你实际上是在下一个 x 金额减去损失的订单,这可能会让你接管。只需要多交易一点,给自己一个缓冲。
干杯朋友!
推荐阅读
- spring - 如何使用 Spring Boot 检测 API 请求是来自移动应用程序还是来自 Web
- c# - 从 MultipartFormDataContent 和 StreamContent 获取上传进度
- java - 在 glassfish4.1 上部署应用程序时出错
- c# - 在协程中值为真后无法返回字符串
- android - 如何在异步提交结果时观察 PagedList LiveData?
- ruby - Thread.abort_on_exception 在任何地方引发?
- sql - 计算日夜数的SQL查询
- python - 不记名令牌在 requests.post 授权标头中不起作用?
- unity3d - 我如何防止运动学对象不通过另一个刚体对象
- excel - Excel VBA通过单击形状更改形状的背景图像