Finalize EA architecture before strategy development
This commit is contained in:
+86
-20
@@ -13,23 +13,43 @@ enum E_LOT_MODE
|
||||
LOT_MODE_RISK = 1 // Use risk percent method
|
||||
};
|
||||
|
||||
input E_LOT_MODE g_lot_mode = LOT_MODE_FIXED; // Lot Sizing Mode
|
||||
enum E_TREND_BREAK_MODE
|
||||
{
|
||||
BREAK_MODE_CANDLE_CLOSE = 0,
|
||||
BREAK_MODE_BID_ASK_TOUCH = 1
|
||||
};
|
||||
|
||||
enum E_STOP_LOSS_MODE
|
||||
{
|
||||
STOP_LOSS_STRUCTURE = 0,
|
||||
STOP_LOSS_POINTS = 1,
|
||||
STOP_LOSS_PERCENT = 2
|
||||
};
|
||||
|
||||
enum E_TAKE_PROFIT_MODE
|
||||
{
|
||||
TAKE_PROFIT_POINTS = 1,
|
||||
TAKE_PROFIT_PERCENT = 2,
|
||||
TAKE_PROFIT_RISK_REWARD = 3
|
||||
};
|
||||
|
||||
input E_LOT_MODE g_lot_mode = LOT_MODE_RISK; // Lot Sizing Mode
|
||||
input double g_fixed_lot = 0.1; // Fixed Lot Size (if LOT_MODE_FIXED)
|
||||
input double g_risk_percent = 2.0; // Risk Percent (if LOT_MODE_RISK)
|
||||
input double g_max_lot = 10.0; // Maximum Lot Size
|
||||
input double g_min_lot = 0.01; // Minimum Lot Size
|
||||
|
||||
// ==================== TRADE MANAGEMENT ====================
|
||||
input int g_magic_number = 12345; // Magic Number for trades
|
||||
input int g_stop_loss_points = 100; // Stop Loss in points
|
||||
input int g_take_profit_points = 200; // Take Profit in points
|
||||
input int g_stop_loss_points = 100; // Deprecated: strategy owns initial SL
|
||||
input int g_take_profit_points = 200; // Deprecated: strategy owns initial TP
|
||||
input int g_max_spread_points = 100; // Max Spread in points (1.00 USD for XAUUSD)
|
||||
input int g_max_positions = 1; // Max positions at once
|
||||
|
||||
// ==================== TRADING HOURS ====================
|
||||
input bool g_use_trading_hours = false; // Enable trading hour filter
|
||||
input int g_trade_start_hour = 8; // Trading Start Hour (0-23)
|
||||
input int g_trade_end_hour = 20; // Trading End Hour (0-23)
|
||||
input int g_trade_start_hour = 8; // Trading Start Hour (0-23), based on broker server time
|
||||
input int g_trade_end_hour = 20; // Trading End Hour (0-23), based on broker server time
|
||||
input string g_trading_hours_note = "Broker server time is used; adjust start/end hours for your broker timezone and session preferences"; // informational only
|
||||
|
||||
// ==================== TRAILING STOP ====================
|
||||
input bool g_use_trailing_stop = true; // Use Trailing Stop
|
||||
@@ -38,21 +58,67 @@ input bool g_use_break_even = true; // Use Break Even
|
||||
input int g_break_even_profit = 10; // Break Even Trigger profit
|
||||
input int g_break_even_sl = 2; // Break Even SL distance
|
||||
|
||||
// Enhanced break-even / trailing parameters (ATR-aware)
|
||||
input bool g_use_break_even_atr = true; // Use ATR-based break-even behavior
|
||||
input double g_break_even_trigger_r = 1.0; // Break-even trigger as multiple of initial risk (ATR or fixed)
|
||||
input int g_break_even_buffer_points = 20; // Buffer to apply when moving to break-even (points)
|
||||
|
||||
input bool g_use_trailing_stop_atr = true; // Use ATR-based trailing stop
|
||||
input double g_trail_start_r = 1.5; // Start trailing after this multiple of initial risk
|
||||
input double g_trail_distance_atr_multiplier = 1.0; // Trailing distance = ATR * this multiplier
|
||||
|
||||
// ==================== STRATEGY EVALUATION ====================
|
||||
input bool g_evaluate_on_new_bar = true; // Evaluate strategy on entry timeframe new bar
|
||||
input bool g_evaluate_every_tick = false; // Evaluate strategy every tick when true
|
||||
|
||||
// ==================== STRATEGY PARAMETERS ====================
|
||||
// XAUUSD M15 EMA Pullback Continuation Strategy
|
||||
input ENUM_TIMEFRAMES g_strategy_entry_timeframe = PERIOD_M15; // Entry signal timeframe
|
||||
input ENUM_TIMEFRAMES g_strategy_trend_timeframe = PERIOD_H1; // Trend filter timeframe
|
||||
input int g_trend_fast_ema_period = 50; // H1 EMA fast period
|
||||
input int g_trend_slow_ema_period = 200; // H1 EMA slow period
|
||||
input int g_entry_fast_ema_period = 20; // M15 EMA for entry confirmation
|
||||
input int g_entry_pullback_ema_period = 50; // M15 EMA for pullback touch
|
||||
input int g_rsi_period = 14; // RSI period on M15
|
||||
input int g_rsi_buy_threshold = 50; // RSI buy threshold
|
||||
input int g_rsi_sell_threshold = 50; // RSI sell threshold
|
||||
input int g_atr_period = 14; // ATR period on M15
|
||||
input double g_atr_sl_multiplier = 1.5; // ATR multiplier for SL (future use)
|
||||
input double g_atr_tp_multiplier = 2.0; // ATR multiplier for TP (future use)
|
||||
input bool g_use_atr_stops = false; // Use ATR-based SL/TP if supported
|
||||
input ENUM_TIMEFRAMES g_strategy_entry_timeframe = PERIOD_M15; // Signal/entry timeframe
|
||||
input ENUM_TIMEFRAMES g_strategy_trend_timeframe = PERIOD_H1; // Filter/trend timeframe
|
||||
|
||||
input int g_signal_swing_depth = 3;
|
||||
input int g_filter_swing_depth = 5;
|
||||
input int g_signal_trend_confirm_count = 1;
|
||||
input int g_filter_trend_confirm_count = 2;
|
||||
|
||||
input bool g_use_atr_filter = true;
|
||||
input int g_atr_period = 14;
|
||||
input double g_min_swing_atr_multiplier = 0.5;
|
||||
|
||||
input bool g_use_breakout_entry = true;
|
||||
input int g_entry_buffer_points = 10;
|
||||
input int g_signal_expiration_bars = 3;
|
||||
|
||||
input E_TREND_BREAK_MODE g_trend_break_mode = BREAK_MODE_CANDLE_CLOSE;
|
||||
input int g_break_buffer_points = 0;
|
||||
input int g_cooldown_bars_after_trend_break = 1;
|
||||
|
||||
input E_STOP_LOSS_MODE g_stop_loss_mode = STOP_LOSS_STRUCTURE;
|
||||
input int g_sl_points = 50;
|
||||
input double g_sl_percent = 0.5;
|
||||
input int g_sl_buffer_points = 50;
|
||||
|
||||
input E_TAKE_PROFIT_MODE g_take_profit_mode = TAKE_PROFIT_RISK_REWARD;
|
||||
input int g_tp_points = 100;
|
||||
input double g_tp_percent = 1.0;
|
||||
input double g_risk_reward_ratio = 2.0;
|
||||
|
||||
input int g_max_trades_per_filter_trend = 1;
|
||||
input int g_strategy_max_open_positions = 1;
|
||||
|
||||
input int g_strategy_max_spread_points = 30;
|
||||
|
||||
input bool g_show_signal_swings = true;
|
||||
input bool g_show_filter_swings = true;
|
||||
input bool g_show_swing_level_lines = true;
|
||||
input bool g_show_trend_lines = true;
|
||||
input bool g_show_setup_trigger_lines = true;
|
||||
input bool g_show_trend_rectangles = false;
|
||||
|
||||
// TP-less trades are intentionally not supported yet. Add an explicit
|
||||
// allowNoTakeProfit field to TradeSetup before allowing takeProfit = 0.
|
||||
|
||||
input double g_risk_percent = 1.0; // Risk percent per trade
|
||||
input double g_max_risk_percent = 2.0; // Maximum allowed risk percent
|
||||
|
||||
// ==================== DEBUG ====================
|
||||
input bool g_debug_mode = true; // Enable Debug Logging
|
||||
|
||||
Reference in New Issue
Block a user