Add fixed-direction switch for perp/option open side.
When enabled, lock perp long→buy Put or short→buy Call with ITM/ATM only; off keeps ATM/ask rules. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -41,6 +41,8 @@ KEYS = (
|
||||
"min_option_leverage",
|
||||
"atm_open_offset_enabled",
|
||||
"max_atm_open_offset",
|
||||
"fixed_direction_enabled",
|
||||
"fixed_perp_side",
|
||||
"close_bid_mark_max_pct",
|
||||
"perp_qty_eth",
|
||||
"option_qty_eth",
|
||||
@@ -63,6 +65,8 @@ class StrategySettingsBody(BaseModel):
|
||||
min_option_leverage: float | None = Field(default=None, ge=1, le=10000)
|
||||
atm_open_offset_enabled: bool | None = None
|
||||
max_atm_open_offset: float | None = Field(default=None, ge=0, le=100)
|
||||
fixed_direction_enabled: bool | None = None
|
||||
fixed_perp_side: str | None = Field(default=None, pattern="^(long|short)$")
|
||||
close_bid_mark_max_pct: float | None = Field(default=None, ge=1, le=100)
|
||||
perp_qty_eth: float | None = Field(default=None, ge=0.01, le=100)
|
||||
option_qty_eth: float | None = Field(default=None, ge=0.01, le=100)
|
||||
@@ -131,6 +135,25 @@ def _read_settings() -> dict:
|
||||
db.get_setting("max_atm_open_offset", str(s.max_atm_open_offset))
|
||||
or s.max_atm_open_offset
|
||||
),
|
||||
"fixed_direction_enabled": _as_bool(
|
||||
db.get_setting(
|
||||
"fixed_direction_enabled", str(s.fixed_direction_enabled)
|
||||
),
|
||||
s.fixed_direction_enabled,
|
||||
),
|
||||
"fixed_perp_side": (
|
||||
side
|
||||
if (
|
||||
side := str(
|
||||
db.get_setting("fixed_perp_side", s.fixed_perp_side)
|
||||
or s.fixed_perp_side
|
||||
)
|
||||
.strip()
|
||||
.lower()
|
||||
)
|
||||
in ("long", "short")
|
||||
else "long"
|
||||
),
|
||||
"close_bid_mark_max_pct": float(
|
||||
db.get_setting("close_bid_mark_max_pct", str(s.close_bid_mark_max_pct))
|
||||
or s.close_bid_mark_max_pct
|
||||
|
||||
Reference in New Issue
Block a user