Add one-expiry-per-day open rhythm gate (default on).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-01 16:39:32 +08:00
parent 22c42a19a0
commit f1da2778ef
11 changed files with 166 additions and 2 deletions
+6
View File
@@ -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>
+22
View File
@@ -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