From 766b52ca6167ca9c627b71746e3470ca132ec14e Mon Sep 17 00:00:00 2001 From: silencesdg Date: Fri, 15 May 2026 13:56:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9D=A0=E6=9D=86=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E7=BC=A9=E6=94=BE=E2=80=94=E2=80=94config%=E4=BB=A510?= =?UTF-8?q?0x=E4=B8=BA=E5=9F=BA=E5=87=86=EF=BC=8C=E8=87=AA=E5=8A=A8=C3=97(?= =?UTF-8?q?=E6=9D=A0=E6=9D=86/100)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 100x: SL-50%=23点, TP+100%=46点 - 2000x: SL-1000%=23点, TP+2000%=46点(美元风险完全一致) - 所有 margin% 参数(stop/profit/trailing/time_exit)全部自动缩放 --- .ea_pid | 2 +- core/risk/position.py | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.ea_pid b/.ea_pid index 9fc2d9c..2c7315d 100644 --- a/.ea_pid +++ b/.ea_pid @@ -1 +1 @@ -189862 \ No newline at end of file +269701 \ No newline at end of file diff --git a/core/risk/position.py b/core/risk/position.py index 7bb9297..4354a02 100644 --- a/core/risk/position.py +++ b/core/risk/position.py @@ -45,17 +45,22 @@ class PositionManager: # ★ 计算杠杆(仅影响%基准,不改实际杠杆) self.risk_leverage = risk.get("risk_leverage", 0) if self.risk_leverage <= 0: - # 未设置则从MT5读取实际杠杆 try: acct = self.data_provider.get_account_info() self.risk_leverage = acct.leverage if hasattr(acct, 'leverage') else acct.get('leverage', 2000) except Exception: self.risk_leverage = 2000 - # 资金管理 - self.initial_capital = INITIAL_CAPITAL - self.long_capital_pct = CAPITAL_ALLOCATION.get("long_pct", 0.5) - self.short_capital_pct = CAPITAL_ALLOCATION.get("short_pct", 0.5) + # ★ 杠杆自适应缩放:config 中的 % 以 100x 为基准 + # 2000x 时倍率 = 20,-50% → -1000% → 美元风险不变 + self._lev_ratio = self.risk_leverage / 100.0 + + # 风险管理参数(已缩放) + self.stop_loss_pct = risk.get("stop_loss_pct", -0.10) * self._lev_ratio + self.profit_retracement_pct = risk.get("profit_retracement_pct", 0.10) * self._lev_ratio + self.min_profit_for_trailing = risk.get("min_profit_for_trailing", 0.01) * self._lev_ratio + self.take_profit_pct = risk.get("take_profit_pct", 0.20) * self._lev_ratio + self.min_profit_for_time_exit = risk.get("min_profit_for_time_exit", 0.001) * self._lev_ratio # 持仓和交易记录 self.positions = []