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:
cbazzaandClaude Opus 4.5 committed 2026-01-26 10:54:29 +01:00
1 parent 96f259aed6
commit c51862c4ec
5 files changed
+1828 -7

No files matched your search

+15 -1
View File
@@ -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}%")