Files
MyProEA/Include/Config.mqh
T

127 lines
6.2 KiB
Plaintext

//+------------------------------------------------------------------+
//| Config.mqh - Global configuration and input parameters |
//| Central place for all EA settings |
//+------------------------------------------------------------------+
#ifndef __CONFIG_MQH__
#define __CONFIG_MQH__
// ==================== LOT SIZING ====================
enum E_LOT_MODE
{
LOT_MODE_FIXED = 0, // Use fixed lot size
LOT_MODE_RISK = 1 // Use risk percent method
};
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_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; // 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), 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
input int g_trailing_stop_points= 50; // Trailing Stop Distance
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 ====================
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
#endif //__CONFIG_MQH__