Normalize fullwidth punctuation to ASCII across codebase.

Add scripts/normalize_ambiguous_unicode.py; fix corrupted patch_instance_theme_templates.py. Preserves curly quotes in string literals; removes Git homoglyph warnings on .env.example.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-08 23:42:26 +08:00
parent aaa72c7961
commit b733e551a0
392 changed files with 71522 additions and 71369 deletions
+10 -10
View File
@@ -88,7 +88,7 @@ def precheck_risk(conn, symbol, direction):''',
return False, f"北京时间 {TRADING_DAY_RESET_HOUR}:00 前不允许持仓"
active_count = get_active_position_count(conn)
if active_count >= MAX_ACTIVE_POSITIONS:
return False, f"已达最大持仓数{active_count}/{MAX_ACTIVE_POSITIONS}"
return False, f"已达最大持仓数({active_count}/{MAX_ACTIVE_POSITIONS})"
if direction not in ("long", "short"):
return False, "方向必须为 long 或 short"
if symbol.upper().startswith("BTC") or symbol.upper().startswith("ETH"):
@@ -336,13 +336,13 @@ def cancel_okx_tpsl_slot(exchange_symbol, slot):
' f"周期 {KLINE_TIMEFRAME}|量能/突破/二确门控见箱体与收敛规则|"\n',
" can_trade = trading_day_reset_allows_new_open(now) and active_count < MAX_ACTIVE_POSITIONS\n"
" key_gate_rule_text = (\n"
' f"周期 {KLINE_TIMEFRAME}|确认K突破棒偏移 {KEY_CONFIRM_BREAKOUT_BAR}确认棒偏移 {KEY_CONFIRM_BAR}"\n'
' f"量能突破量 > 前{KEY_VOLUME_MA_BARS}均量×{KEY_VOLUME_RATIO_MIN}"\n',
' f"周期 {KLINE_TIMEFRAME}|确认K:突破棒偏移 {KEY_CONFIRM_BREAKOUT_BAR},确认棒偏移 {KEY_CONFIRM_BAR}"\n'
' f"量能:突破量 > 前{KEY_VOLUME_MA_BARS}均量×{KEY_VOLUME_RATIO_MIN}"\n',
)
text = text.replace(
' f"斐波添加后立即挂限价 @ E失效按标记价触达 H/L未成交撤单"\n',
' f"箱体/收敛可选 SL/TP 方案标准 / 箱体1R·止盈1.5H / 趋势单+自填止盈|移动保本默认关|"\n'
' f"斐波限价 @ ESL/TP 为 H/L),可选移动保本|趋势止损外侧 {KEY_TREND_STOP_OUTSIDE_PCT}%"\n',
' f"斐波:添加后立即挂限价 @ E,失效按标记价触达 H/L(未成交撤单)"\n',
' f"箱体/收敛可选 SL/TP 方案(标准 / 箱体1R·止盈1.5H / 趋势单+自填止盈)|移动保本默认关|"\n'
' f"斐波:限价 @ E(SL/TP 为 H/L),可选移动保本|趋势止损外侧 {KEY_TREND_STOP_OUTSIDE_PCT}%"\n',
)
text = text.replace(" total_capital=total_capital,\n", "")
text = text.replace(
@@ -465,7 +465,7 @@ def api_account_snapshot():
" if planned_rr_manual is None or planned_rr_manual < MANUAL_MIN_PLANNED_RR:\n"
" conn.close()\n"
" rr_txt = f\"{planned_rr_manual:.4f}\" if planned_rr_manual is not None else \"无法计算\"\n"
" flash(f\"风控拒绝下单计划盈亏比 {rr_txt}:1 低于最低要求 {MANUAL_MIN_PLANNED_RR}:1\")\n"
" flash(f\"风控拒绝下单:计划盈亏比 {rr_txt}:1 低于最低要求 {MANUAL_MIN_PLANNED_RR}:1\")\n"
" return redirect(\"/trade\")\n"
" risk_fraction = calc_risk_fraction",
)
@@ -473,12 +473,12 @@ def api_account_snapshot():
text = text.replace(
'if get_active_position_count(conn) > 0:\n'
' conn.close()\n'
' flash("当前已有持仓无法添加「箱体突破 / 收敛突破」请先平仓或使用阻力/支撑/斐波类型")',
' flash("当前已有持仓:无法添加「箱体突破 / 收敛突破」(请先平仓或使用阻力/支撑/斐波类型)")',
'occupied = get_active_position_count(conn)\n'
' if occupied >= MAX_ACTIVE_POSITIONS:\n'
' conn.close()\n'
' flash(\n'
' f"当前持仓已达上限{occupied}/{MAX_ACTIVE_POSITIONS}):无法添加「箱体突破 / 收敛突破」"\n'
' f"当前持仓已达上限({occupied}/{MAX_ACTIVE_POSITIONS}):无法添加「箱体突破 / 收敛突破」."\n'
' "请先平仓或使用阻力/支撑/斐波类型"\n'
' )',
)
@@ -530,7 +530,7 @@ def copy_env_example():
if marker not in okx:
okx += block
if "TOTAL_CAPITAL=100" in okx and "# TOTAL_CAPITAL" not in okx:
okx = okx.replace("TOTAL_CAPITAL=100", "# TOTAL_CAPITAL=100 # 已弃用资金展示读交易所")
okx = okx.replace("TOTAL_CAPITAL=100", "# TOTAL_CAPITAL=100 # 已弃用,资金展示读交易所")
okx_path.write_text(okx, encoding="utf-8")
print("updated .env.example")