feat: Implement Equity Curve Trading for automatic drawdown protection
NEW MODULE: equity_curve_trading.py - EquityCurveManager class for meta-strategy control - Tracks equity history after each trade - Calculates Moving Average over configurable period (default: 10 trades) - Soft Mode: Reduces lot size to 50% when equity < MA - Hard Mode: Completely stops trading when equity < MA - Recovery detection with buffer percentage - Persistent storage in equity_curve_history.json CONFIGURATION: - ma_period: 10 trades (Moving Average window) - min_trades_required: 5 (warmup period) - soft_mode: True (reduce lots instead of stopping) - soft_mode_multiplier: 0.5 (50% lots when under MA) - recovery_buffer_pct: 0.5% (buffer for recovery status) INTEGRATION: - Added to Cell 78 (Advanced Optimizations setup) - Integrated in enhanced_trading_check_wrapper (Cells 85, 90) - Added lot_multiplier parameter to execute_trade_v2_adaptive - Equity update after each successful trade EXAMPLE FLOW: 1. Before trade: Check should_trade() → returns (allowed, reason, lot_multiplier) 2. If equity < MA: lot_multiplier = 0.5 (or 0.0 in hard mode) 3. Position size adjusted: volume = volume * lot_multiplier 4. After trade: update_equity() called to track new equity BENEFITS: - Automatic protection during losing streaks - Reduces exposure when strategy underperforms - Capitalizes fully when strategy is working - No emotional decisions needed 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
96f259aed6
commit
c51862c4ec
5 files changed
+1828
-7
No files matched your search
@@ -66,6 +66,14 @@ def enhanced_trading_check_wrapper(symbol="XAUUSD", debug=False):
|
||||
|
||||
print(f"✅ Position-Check OK: {position_info['count']}/{max_positions}")
|
||||
|
||||
# SCHRITT 1.5: EQUITY CURVE CHECK
|
||||
ec_allowed, ec_reason, lot_multiplier = equity_curve_manager.should_trade()
|
||||
print(f"📈 Equity Curve: {ec_reason}")
|
||||
|
||||
if not ec_allowed:
|
||||
print(f"⛔ TRADE BLOCKIERT durch Equity Curve Filter")
|
||||
return None
|
||||
|
||||
# SCHRITT 2: Signal Analysis (wie vorher)
|
||||
signal_info = extended_top_down_v2_adaptive(symbol)
|
||||
if signal_info is None:
|
||||
@@ -127,9 +135,15 @@ def enhanced_trading_check_wrapper(symbol="XAUUSD", debug=False):
|
||||
result = execute_trade_v2_adaptive(
|
||||
symbol=symbol,
|
||||
signal_info_override=signal_info,
|
||||
confidence_override=final_confidence # ← Use hybrid score!
|
||||
confidence_override=final_confidence, # ← Use hybrid score!
|
||||
lot_multiplier=lot_multiplier # ← Equity Curve adjustment
|
||||
)
|
||||
|
||||
# Update Equity Curve nach Trade
|
||||
if result is not None:
|
||||
equity_curve_manager.update_equity()
|
||||
print(f"📈 Equity Curve updated")
|
||||
|
||||
return result
|
||||
else:
|
||||
print(f"\\n❌ Signal below threshold: {final_confidence:.1f}% < {adaptive_threshold:.1f}%")
|
||||
|
||||
Reference in new issue
Block a user