永期手动下单:修币本位杠杆显示,张数定仓与双出场模式.
右侧以张数+比例算永续,杠杆取 env(BTC10/ETH5);开仓买币+5%滑点;出场可选盈利金额(扣双边费)或目标位;平仓后卖光币回 U. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -350,18 +350,19 @@ def validate_option_primary_watch(body: dict[str, Any]) -> Optional[str]:
|
||||
|
||||
def validate_option_primary_start(body: dict[str, Any]) -> Optional[str]:
|
||||
market = body.get("market_order") in (True, 1, "1", "true", "yes", "on")
|
||||
exit_mode = str(body.get("exit_mode") or ("target" if not market else "profit")).strip().lower()
|
||||
if exit_mode not in ("profit", "target"):
|
||||
exit_mode = "profit" if market else "target"
|
||||
need = (
|
||||
"direction",
|
||||
"contracts",
|
||||
"opt_inst_id",
|
||||
"sheets",
|
||||
"exchange_symbol",
|
||||
"option_target_points",
|
||||
"perp_target_points",
|
||||
"option_perp_ratio",
|
||||
)
|
||||
if not market:
|
||||
need = need + ("premium_budget",)
|
||||
need = need + ("premium_budget", "option_target_points", "perp_target_points")
|
||||
for k in need:
|
||||
if body.get(k) in (None, ""):
|
||||
return f"缺少字段: {k}"
|
||||
@@ -371,8 +372,13 @@ def validate_option_primary_start(body: dict[str, Any]) -> Optional[str]:
|
||||
prem = _sf(body.get("premium_budget"))
|
||||
if not market and (prem is None or prem <= 0):
|
||||
return "权利金须大于 0"
|
||||
if float(body["option_target_points"]) <= 0 or float(body["perp_target_points"]) <= 0:
|
||||
return "目标位点数须大于 0"
|
||||
if exit_mode == "profit":
|
||||
pt = _sf(body.get("profit_target_usdt"))
|
||||
if pt is None or pt <= 0:
|
||||
return "盈利金额出场须填写目标盈利(USDT)"
|
||||
else:
|
||||
if float(body.get("option_target_points") or 0) <= 0 or float(body.get("perp_target_points") or 0) <= 0:
|
||||
return "目标位点数须大于 0"
|
||||
if float(body["option_perp_ratio"]) <= 0:
|
||||
return "期权永续比例须大于 0"
|
||||
except (TypeError, ValueError):
|
||||
|
||||
Reference in New Issue
Block a user