edf4bb835d
Co-authored-by: Cursor <cursoragent@cursor.com>
112 lines
5.4 KiB
Python
112 lines
5.4 KiB
Python
"""补全 okx / binance 触价开仓:import、stats、background、add_key。"""
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
GATE = ROOT / "crypto_monitor_gate" / "app.py"
|
|
|
|
ADD_INSERT = GATE.read_text(encoding="utf-8").split(
|
|
" if is_trigger_entry_key_monitor_type(mt):"
|
|
)[1].split(" if is_false_breakout_key_monitor_type(mt):")[0]
|
|
|
|
TRIG_IMPORT = """from trigger_entry_key_monitor_lib import (
|
|
TRIGGER_ENTRY_CLOSE_EXCHANGE_FAILED,
|
|
TRIGGER_ENTRY_CLOSE_EXPIRED,
|
|
TRIGGER_ENTRY_CLOSE_FILLED,
|
|
TRIGGER_ENTRY_CLOSE_TP_INVALIDATE,
|
|
TRIGGER_ENTRY_MONITOR_TYPE,
|
|
TRIGGER_ENTRY_VALIDITY_HOURS,
|
|
check_trigger_entry_intent_limit,
|
|
count_pending_trigger_entries,
|
|
is_trigger_entry_expired,
|
|
is_trigger_entry_key_monitor_type,
|
|
trigger_entry_expires_at_text,
|
|
trigger_entry_gate_preview,
|
|
trigger_entry_invalidate_by_tp,
|
|
trigger_entry_reached,
|
|
validate_trigger_entry_geometry,
|
|
validate_trigger_entry_rr,
|
|
)
|
|
"""
|
|
|
|
def patch_okx():
|
|
p = ROOT / "crypto_monitor_okx" / "app.py"
|
|
t = p.read_text(encoding="utf-8")
|
|
if "trigger_entry_key_monitor_lib" not in t:
|
|
t = t.replace("from position_sizing_lib import (", TRIG_IMPORT + "from position_sizing_lib import (", 1)
|
|
if "OPEN_SOURCE_KEY_TRIGGER" not in t:
|
|
t = t.replace(
|
|
" OPEN_SOURCE_KEY_AUTO,\n OPEN_SOURCE_MANUAL,",
|
|
" OPEN_SOURCE_KEY_AUTO,\n OPEN_SOURCE_KEY_TRIGGER,\n OPEN_SOURCE_MANUAL,",
|
|
1,
|
|
)
|
|
if '"关键位触价开仓"' not in t:
|
|
t = t.replace(
|
|
' "关键位假突破",\n) + STRATEGY_ENTRY_REASON_OPTIONS',
|
|
' "关键位假突破",\n "关键位触价开仓",\n) + STRATEGY_ENTRY_REASON_OPTIONS',
|
|
1,
|
|
)
|
|
if "key_trigger" not in t:
|
|
t = t.replace(
|
|
' ("key_false_breakout", "关键位假突破", {"segment": "key_false_breakout"}),\n)',
|
|
' ("key_false_breakout", "关键位假突破", {"segment": "key_false_breakout"}),\n ("key_trigger", "关键位触价开仓", {"segment": "key_trigger"}),\n)',
|
|
1,
|
|
)
|
|
if "key_monitors ADD COLUMN session_date" not in t:
|
|
t = t.replace(
|
|
' "ALTER TABLE key_monitors ADD COLUMN last_rs_bar_ts INTEGER",\n ):',
|
|
' "ALTER TABLE key_monitors ADD COLUMN last_rs_bar_ts INTEGER",\n "ALTER TABLE key_monitors ADD COLUMN session_date TEXT",\n ):',
|
|
1,
|
|
)
|
|
if 'segment_key == "key_trigger"' not in t:
|
|
t = t.replace(
|
|
' if segment_key == "key_false_breakout":\n return kst == FALSE_BREAKOUT_MONITOR_TYPE\n return False',
|
|
' if segment_key == "key_false_breakout":\n return kst == FALSE_BREAKOUT_MONITOR_TYPE\n if segment_key == "key_trigger":\n return kst == TRIGGER_ENTRY_MONITOR_TYPE\n return False',
|
|
1,
|
|
)
|
|
if '"key_trigger":' not in t:
|
|
t = t.replace(
|
|
' "key_false_breakout": FALSE_BREAKOUT_MONITOR_TYPE,\n }',
|
|
' "key_false_breakout": FALSE_BREAKOUT_MONITOR_TYPE,\n "key_trigger": TRIGGER_ENTRY_MONITOR_TYPE,\n }',
|
|
1,
|
|
)
|
|
if "check_trigger_entry_key_monitors()" not in t:
|
|
t = t.replace(
|
|
" check_fib_key_monitors()\n _roll_cfg",
|
|
" check_fib_key_monitors()\n check_trigger_entry_key_monitors()\n _roll_cfg",
|
|
1,
|
|
)
|
|
if " + (TRIGGER_ENTRY_MONITOR_TYPE,)" not in t:
|
|
t = t.replace(
|
|
" + (FALSE_BREAKOUT_MONITOR_TYPE,)\n )",
|
|
" + (FALSE_BREAKOUT_MONITOR_TYPE,)\n + (TRIGGER_ENTRY_MONITOR_TYPE,)\n )",
|
|
1,
|
|
)
|
|
anchor = " be_flag = parse_breakeven_enabled_form(d.get(\"breakeven_enabled\"))\n if is_false_breakout_key_monitor_type(mt):"
|
|
if "is_trigger_entry_key_monitor_type(mt)" not in t:
|
|
t = t.replace(
|
|
anchor,
|
|
" be_flag = parse_breakeven_enabled_form(d.get(\"breakeven_enabled\"))\n tc_en = parse_time_close_enabled_form(d.get(\"time_close_enabled\"))\n tc_h = parse_time_close_hours_form(d.get(\"time_close_hours\")) if tc_en else None\n if tc_en and not tc_h:\n tc_en = 0\n if is_trigger_entry_key_monitor_type(mt):" + ADD_INSERT + " if is_false_breakout_key_monitor_type(mt):",
|
|
1,
|
|
)
|
|
p.write_text(t, encoding="utf-8")
|
|
print("okx done")
|
|
|
|
def patch_binance_add_key():
|
|
p = ROOT / "crypto_monitor_binance" / "app.py"
|
|
t = p.read_text(encoding="utf-8")
|
|
anchor = " be_flag = parse_breakeven_enabled_form(d.get(\"breakeven_enabled\"))\n if is_false_breakout_key_monitor_type(mt):"
|
|
if "is_trigger_entry_key_monitor_type(mt)" in t:
|
|
print("binance add_key skip")
|
|
return
|
|
t = t.replace(
|
|
anchor,
|
|
" be_flag = parse_breakeven_enabled_form(d.get(\"breakeven_enabled\"))\n tc_en = parse_time_close_enabled_form(d.get(\"time_close_enabled\"))\n tc_h = parse_time_close_hours_form(d.get(\"time_close_hours\")) if tc_en else None\n if tc_en and not tc_h:\n tc_en = 0\n if is_trigger_entry_key_monitor_type(mt):" + ADD_INSERT + " if is_false_breakout_key_monitor_type(mt):",
|
|
1,
|
|
)
|
|
p.write_text(t, encoding="utf-8")
|
|
print("binance add_key done")
|
|
|
|
if __name__ == "__main__":
|
|
patch_okx()
|
|
patch_binance_add_key()
|