605faf5310
Add cluster audit pipeline, united EA updates, brochure generators, and publication hygiene (gitignore, MT5 path desensitization, pre-upload scan). Remove tracked reports, models, and binary artifacts from the repo. Co-authored-by: Cursor <cursoragent@cursor.com>
135 lines
8.8 KiB
Python
135 lines
8.8 KiB
Python
"""All SuperEA robot instances with defaults and optimization ranges."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import MetaTrader5 as mt5
|
|
|
|
TF = {
|
|
"M10": mt5.TIMEFRAME_M10,
|
|
"M15": mt5.TIMEFRAME_M15,
|
|
"M20": mt5.TIMEFRAME_M20,
|
|
"M30": mt5.TIMEFRAME_M30,
|
|
"H1": mt5.TIMEFRAME_H1,
|
|
"H4": mt5.TIMEFRAME_H4,
|
|
}
|
|
|
|
STRATEGIES: list[dict] = [
|
|
{"id": "darvas_xau", "engine": "darvas", "symbol": "XAUUSD", "tf": "M15", "lot": 0.07,
|
|
"defaults": {"box_period": 24, "box_deviation": 80000, "ma_period": 60,
|
|
"trend_threshold": 1.2, "volume_threshold": 0,
|
|
"stop_loss_pts": 450, "take_profit_pts": 650},
|
|
"opt": {"box_period": (12, 48, 4), "box_deviation": (40000, 150000, 5000),
|
|
"trend_threshold": (0.3, 5.0, 0.3), "stop_loss_pts": (250, 900, 50),
|
|
"take_profit_pts": (350, 1200, 50), "ma_period": (30, 120, 15)}},
|
|
{"id": "ema_slope_unit", "engine": "ema_slope", "symbol": "XAUUSD", "tf": "H1", "lot": 0.07,
|
|
"defaults": {"ema_period": 85, "price_threshold_pips": 350, "slope_threshold_pips": 22.5,
|
|
"monitor_timeout_sec": 340, "max_trades_per_crossover": 12, "use_trailing_stop": False,
|
|
"trailing_stop_pips": 74, "max_loss_atr": 1.8, "use_bar_data": True,
|
|
"close_unprofitable_trades": True, "profit_check_bars": 36,
|
|
"use_weekly_adx_filter": True, "weekly_adx_period": 28,
|
|
"weekly_adx_min": 25, "weekly_adx_bar_shift": 8, "weekly_adx_use_direction": True},
|
|
"opt": {"ema_period": (50, 120, 5), "price_threshold_pips": (150, 500, 50),
|
|
"slope_threshold_pips": (10, 50, 5), "max_loss_atr": (1.2, 3.0, 0.3),
|
|
"profit_check_bars": (18, 60, 6), "max_trades_per_crossover": (3, 20, 3)}},
|
|
{"id": "ema_slope_trail", "engine": "ema_slope", "symbol": "XAUUSD", "tf": "H1", "lot": 0.07,
|
|
"defaults": {"ema_period": 50, "price_threshold_pips": 700, "slope_threshold_pips": 25,
|
|
"monitor_timeout_sec": 340, "max_trades_per_crossover": 3, "use_trailing_stop": True,
|
|
"trailing_stop_pips": 370, "max_loss_atr": 2.0, "use_bar_data": True,
|
|
"close_unprofitable_trades": True, "profit_check_bars": 11,
|
|
"use_weekly_adx_filter": True, "weekly_adx_period": 15,
|
|
"weekly_adx_min": 40, "weekly_adx_bar_shift": 2, "weekly_adx_use_direction": True},
|
|
"opt": {"ema_period": (30, 90, 5), "trailing_stop_pips": (150, 450, 50),
|
|
"max_loss_atr": (1.2, 3.5, 0.3), "weekly_adx_min": (25, 50, 5)}},
|
|
{"id": "mean_rev_btc", "engine": "mean_reversion", "symbol": "BTCUSD", "tf": "M15", "lot": 0.01,
|
|
"defaults": {"ema_period": 80, "min_ema_distance_pts": 300, "rsi_period": 14,
|
|
"rsi_oversold": 40, "rsi_overbought": 70, "adx_period": 14,
|
|
"adx_max_for_entry": 30, "adx_escape": 40, "use_rsi_cross": True,
|
|
"use_hard_sltp": False, "sl_points": 1300, "tp_points": 13400},
|
|
"opt": {"rsi_oversold": (30, 50, 5), "rsi_overbought": (60, 80, 5),
|
|
"min_ema_distance_pts": (100, 1500, 100), "adx_max_for_entry": (22, 40, 3),
|
|
"ema_period": (40, 120, 20)}},
|
|
{"id": "rsi_cross_xau", "engine": "rsi_crossover", "symbol": "XAUUSD", "tf": "H1", "lot": 0.01,
|
|
"defaults": {"rsi_period": 19, "overbought_level": 93, "oversold_level": 22, "ema_period": 140,
|
|
"ema_slope_threshold": 105, "ema_distance_threshold": 165, "exit_buy_rsi": 86,
|
|
"exit_sell_rsi": 10, "trailing_stop_pts": 295, "cooldown_seconds": 209,
|
|
"tuesday": True, "wednesday": True, "thursday": True,
|
|
"trading_hour_one_begin": 0, "trading_hour_one_end": 22,
|
|
"trading_hour_two_begin": 6, "trading_hour_two_end": 19},
|
|
"opt": {"overbought_level": (65, 95, 5), "oversold_level": (10, 45, 5),
|
|
"ema_slope_threshold": (20, 200, 20), "ema_distance_threshold": (40, 300, 20)}},
|
|
{"id": "rsi_asian_eur", "engine": "rsi_asian", "symbol": "EURUSD", "tf": "M15", "lot": 0.1,
|
|
"defaults": {"rsi_period": 28, "overbought_level": 60, "oversold_level": 8,
|
|
"asian_session_start": 0, "asian_session_end": 8, "use_rsi_exit": True, "rsi_exit_level": 55},
|
|
"opt": {"overbought_level": (50, 80, 5), "oversold_level": (5, 40, 5)}},
|
|
{"id": "rsi_asian_aud", "engine": "rsi_asian", "symbol": "AUDUSD", "tf": "M15", "lot": 0.1,
|
|
"defaults": {"rsi_period": 28, "overbought_level": 68, "oversold_level": 30,
|
|
"asian_session_start": 0, "asian_session_end": 8, "use_rsi_exit": True, "rsi_exit_level": 55},
|
|
"opt": {"overbought_level": (55, 80, 5), "oversold_level": (15, 45, 5)}},
|
|
{"id": "rsi_asian_gbp", "engine": "rsi_asian", "symbol": "GBPUSD", "tf": "M15", "lot": 0.1,
|
|
"defaults": {"rsi_period": 28, "overbought_level": 80, "oversold_level": 37,
|
|
"asian_session_start": 0, "asian_session_end": 8, "use_rsi_exit": True, "rsi_exit_level": 55},
|
|
"opt": {"overbought_level": (60, 85, 5), "oversold_level": (20, 50, 5)}},
|
|
{"id": "rsi_secret_xau", "engine": "rsi_secret", "symbol": "XAUUSD", "tf": "M30", "lot": 0.01,
|
|
"defaults": {"rsi_period": 16, "rsi_overbought": 72.5, "rsi_oversold": 32.5,
|
|
"stop_loss_atr": 2.75, "take_profit_atr": 5.0, "min_bars_between_trades": 7},
|
|
"opt": {"rsi_overbought": (60, 80, 2), "rsi_oversold": (25, 45, 2), "stop_loss_atr": (1.5, 4, 0.5)}},
|
|
]
|
|
|
|
_RSI_SCALPS = [
|
|
("rsi_scalp_appl_unit", "AAPL", "M10", 25.0, {"rsi_period": 14, "rsi_overbought": 80, "rsi_oversold": 78,
|
|
"rsi_target_buy": 94, "rsi_target_sell": 44, "bars_to_wait": 7, "use_trailing": False}),
|
|
("rsi_scalp_appl_trail", "AAPL", "H1", 25.0, {"rsi_period": 8, "rsi_overbought": 62, "rsi_oversold": 32,
|
|
"rsi_target_buy": 67, "rsi_target_sell": 2, "bars_to_wait": 5, "use_trailing": True,
|
|
"trail_distance_pts": 50, "trail_activation_pts": 39}),
|
|
("rsi_scalp_adbe_trail", "ADBE", "H1", 5.0, {"rsi_period": 15, "rsi_overbought": 16, "rsi_oversold": 42,
|
|
"rsi_target_buy": 67, "rsi_target_sell": 62, "bars_to_wait": 8, "use_trailing": True,
|
|
"trail_distance_pts": 425, "trail_activation_pts": 18.5}),
|
|
("rsi_scalp_btc_unit", "BTCUSD", "H1", 0.1, {"rsi_period": 14, "rsi_overbought": 90, "rsi_oversold": 73,
|
|
"rsi_target_buy": 88, "rsi_target_sell": 48, "bars_to_wait": 6, "use_trailing": False}),
|
|
("rsi_scalp_btc_trail", "BTCUSD", "H1", 0.1, {"rsi_period": 14, "rsi_overbought": 90, "rsi_oversold": 73,
|
|
"rsi_target_buy": 88, "rsi_target_sell": 48, "bars_to_wait": 6, "use_trailing": True,
|
|
"trail_distance_pts": 120, "trail_activation_pts": 0}),
|
|
("rsi_scalp_mu", "MU", "H1", 25.0, {"rsi_period": 14, "rsi_overbought": 32, "rsi_oversold": 86,
|
|
"rsi_target_buy": 100, "rsi_target_sell": 24, "bars_to_wait": 34, "use_trailing": False}),
|
|
("rsi_scalp_nvda_unit", "NVDA", "H1", 25.0, {"rsi_period": 14, "rsi_overbought": 6, "rsi_oversold": 66,
|
|
"rsi_target_buy": 98, "rsi_target_sell": 52, "bars_to_wait": 12, "use_trailing": False}),
|
|
("rsi_scalp_nvda_trail", "NVDA", "M15", 50.0, {"rsi_period": 8, "rsi_overbought": 36, "rsi_oversold": 38,
|
|
"rsi_target_buy": 90, "rsi_target_sell": 70, "bars_to_wait": 5, "use_trailing": True,
|
|
"trail_distance_pts": 375, "trail_activation_pts": 75}),
|
|
("rsi_scalp_nvda_trail_v2", "NVDA", "M15", 50.0, {"rsi_period": 8, "rsi_overbought": 36, "rsi_oversold": 38,
|
|
"rsi_target_buy": 90, "rsi_target_sell": 70, "bars_to_wait": 5, "use_trailing": True,
|
|
"trail_distance_pts": 375, "trail_activation_pts": 75}),
|
|
("rsi_scalp_tsla_unit", "TSLA", "H1", 25.0, {"rsi_period": 14, "rsi_overbought": 32, "rsi_oversold": 86,
|
|
"rsi_target_buy": 100, "rsi_target_sell": 24, "bars_to_wait": 34, "use_trailing": False}),
|
|
("rsi_scalp_tsla_trail", "TSLA", "H1", 5.0, {"rsi_period": 14, "rsi_overbought": 54, "rsi_oversold": 73,
|
|
"rsi_target_buy": 87, "rsi_target_sell": 33, "bars_to_wait": 1, "use_trailing": True,
|
|
"trail_distance_pts": 900, "trail_activation_pts": 950}),
|
|
("rsi_scalp_xau_trail", "XAUUSD", "H1", 0.1, {"rsi_period": 14, "rsi_overbought": 71, "rsi_oversold": 57,
|
|
"rsi_target_buy": 80, "rsi_target_sell": 57, "bars_to_wait": 1, "use_trailing": True,
|
|
"trail_distance_pts": 71, "trail_activation_pts": 41}),
|
|
]
|
|
|
|
for sid, sym, tf, lot, defaults in _RSI_SCALPS:
|
|
STRATEGIES.append({
|
|
"id": sid,
|
|
"engine": "rsi_scalp",
|
|
"symbol": sym,
|
|
"tf": tf,
|
|
"lot": lot,
|
|
"defaults": {**defaults, "tf": tf},
|
|
"opt": {
|
|
"rsi_period": (6, 21, 1),
|
|
"rsi_overbought": (50, 90, 3),
|
|
"rsi_oversold": (10, 70, 3),
|
|
"rsi_target_buy": (60, 95, 3),
|
|
"rsi_target_sell": (5, 70, 3),
|
|
"bars_to_wait": (1, 8, 1),
|
|
"trail_distance_pts": (20, 400, 20),
|
|
},
|
|
})
|
|
|
|
PERIODS = {
|
|
"2021-2026": ("2021-01-01", "2026-06-01"),
|
|
"2024-2026": ("2024-01-01", "2026-06-01"),
|
|
}
|