Add one-expiry-per-day open rhythm gate (default on).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -225,6 +225,7 @@ export type PlanState = {
|
||||
rest_left_sec: number;
|
||||
rest_seconds: number;
|
||||
skip_weekends?: boolean;
|
||||
one_expiry_per_day?: boolean;
|
||||
exit_move_pct?: number;
|
||||
exit_mode: "fixed_usdt" | "premium_multiple";
|
||||
net_profit_target: number;
|
||||
@@ -315,6 +316,7 @@ export type StrategySettings = {
|
||||
rest_seconds: number;
|
||||
live_order_interval_sec?: number;
|
||||
skip_weekends?: boolean;
|
||||
one_expiry_per_day?: boolean;
|
||||
initial_equity?: number;
|
||||
leverage?: number;
|
||||
perp_margin_mode?: "cross" | "isolated";
|
||||
|
||||
@@ -298,6 +298,9 @@ export default function PlanPage() {
|
||||
{fmt(plan?.min_option_hours, 0)}h · 期权杠杆≥
|
||||
{fmt(plan?.min_option_leverage, 0)}x · {atmRule}
|
||||
{plan?.skip_weekends ? " · 周末跳过开仓" : ""}
|
||||
{plan?.one_expiry_per_day !== false
|
||||
? " · 同到期日一天只开一次"
|
||||
: ""}
|
||||
</p>
|
||||
<p>
|
||||
<span className="plan-rules-k">平仓</span>
|
||||
@@ -306,6 +309,9 @@ export default function PlanPage() {
|
||||
<p>
|
||||
<span className="plan-rules-k">节奏</span>
|
||||
组间休息 {plan?.rest_seconds ?? "—"}s · 可开判定看交易账户
|
||||
{plan?.one_expiry_per_day !== false
|
||||
? " · 同到期平仓后改开下一到期"
|
||||
: ""}
|
||||
</p>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
@@ -73,6 +73,7 @@ export default function SettingsPage() {
|
||||
const [rest, setRest] = useState(300);
|
||||
const [orderInterval, setOrderInterval] = useState(1);
|
||||
const [skipWeekends, setSkipWeekends] = useState(true);
|
||||
const [oneExpiryPerDay, setOneExpiryPerDay] = useState(true);
|
||||
const [leverage, setLeverage] = useState(3);
|
||||
const [perpMarginMode, setPerpMarginMode] = useState<"cross" | "isolated">(
|
||||
"cross",
|
||||
@@ -180,6 +181,7 @@ export default function SettingsPage() {
|
||||
setRest(s.rest_seconds);
|
||||
setOrderInterval(s.live_order_interval_sec ?? 1);
|
||||
setSkipWeekends(s.skip_weekends !== false);
|
||||
setOneExpiryPerDay(s.one_expiry_per_day !== false);
|
||||
setLeverage(s.leverage ?? 3);
|
||||
setPerpMarginMode(
|
||||
s.perp_margin_mode === "isolated" ? "isolated" : "cross",
|
||||
@@ -344,6 +346,7 @@ export default function SettingsPage() {
|
||||
rest_seconds: rest,
|
||||
live_order_interval_sec: orderInterval,
|
||||
skip_weekends: skipWeekends,
|
||||
one_expiry_per_day: oneExpiryPerDay,
|
||||
leverage,
|
||||
perp_margin_mode: perpMarginMode,
|
||||
min_option_hours: minHours,
|
||||
@@ -1167,6 +1170,25 @@ export default function SettingsPage() {
|
||||
<option value="0">关闭</option>
|
||||
</select>
|
||||
</div>
|
||||
<div className="field">
|
||||
<label htmlFor="oneExpDay">
|
||||
同到期日一天只开一次(节奏)
|
||||
</label>
|
||||
<select
|
||||
id="oneExpDay"
|
||||
className="mono"
|
||||
value={oneExpiryPerDay ? "1" : "0"}
|
||||
onChange={(e) =>
|
||||
setOneExpiryPerDay(e.target.value === "1")
|
||||
}
|
||||
>
|
||||
<option value="1">开启(推荐)</option>
|
||||
<option value="0">关闭</option>
|
||||
</select>
|
||||
<p className="hint" style={{ margin: "0.35rem 0 0" }}>
|
||||
开启后:当日已开过某到期日(如 0802)并平仓后,不能再开同到期,只能开下一到期(如 0803)。
|
||||
</p>
|
||||
</div>
|
||||
<div className="field">
|
||||
<label htmlFor="fee">手续费率</label>
|
||||
<input
|
||||
|
||||
Reference in New Issue
Block a user