Files
zhutoutoutousan 605faf5310 Prepare source-only public release for develop.
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>
2026-07-02 15:03:43 +02:00

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"),
}