@@ -202,6 +202,32 @@ def open_coin_option_buy_full(
|
||||
tick_sz=tick_sz,
|
||||
ord_type="ioc",
|
||||
)
|
||||
# 51008 时自动减半张数再试一次(买币已到位,避免整笔回滚)
|
||||
if (not order.get("ok")) and sheets > 1:
|
||||
msg_l = str(order.get("msg") or "").lower()
|
||||
if "51008" in str(order.get("raw") or "").lower() or "不足" in str(order.get("msg") or ""):
|
||||
sheets2 = max(1, sheets // 2)
|
||||
if sheets2 < sheets:
|
||||
order2 = cfg["place_option_limit_order"](
|
||||
ex,
|
||||
inst_id=inst_id,
|
||||
side="buy",
|
||||
sheets=sheets2,
|
||||
price=float(ask),
|
||||
td_mode=td_mode_for_option_buy(cfg.get("td_mode")),
|
||||
tick_sz=tick_sz,
|
||||
ord_type="ioc",
|
||||
)
|
||||
if order2.get("ok"):
|
||||
order = order2
|
||||
sheets = sheets2
|
||||
sizing = {
|
||||
"ok": True,
|
||||
"sheets": sheets,
|
||||
"eth_amount": round(sheets * ct_mult, 8),
|
||||
"coin_premium": round(sheets * float(ask) * ct_mult, 8),
|
||||
"retried_half": True,
|
||||
}
|
||||
if not order.get("ok"):
|
||||
rb = rollback_bought_coin_to_usdt(
|
||||
conn, ex, bridge_id=bridge_id, underlying=underlying, reason=order.get("msg") or "下单失败"
|
||||
|
||||
Reference in New Issue
Block a user