//+------------------------------------------------------------------+
//|                                              StrategyConfig.mqh  |
//+------------------------------------------------------------------+
#ifndef STRATEGYCONFIG_MQH
#define STRATEGYCONFIG_MQH

//+------------------------------------------------------------------+
//| Struct SStrategyConfig                                           |
//| Typed representation of the runtime-tunable strategy parameters  |
//+------------------------------------------------------------------+
struct SStrategyConfig
  {
   double            m_lot_size;
   double            m_stop_loss_pts;
   double            m_take_profit_pts;
   double            m_max_spread_pts;
   long              m_magic_number;
   string            m_comment;
   //--- methods
   static SStrategyConfig Default(void)
     {
      SStrategyConfig cfg;
      cfg.m_lot_size        = 0.01;
      cfg.m_stop_loss_pts   = 300.0;
      cfg.m_take_profit_pts = 600.0;
      cfg.m_max_spread_pts  = 20.0;
      cfg.m_magic_number    = 20260630;
      cfg.m_comment         = "ConfigLoaderDemo";
      return(cfg);
     }
   void              Print(void)
     {
      ::Print("--- SStrategyConfig ---");
      ::Print("m_lot_size        = ", ::DoubleToString(m_lot_size, 2));
      ::Print("m_stop_loss_pts   = ", ::DoubleToString(m_stop_loss_pts, 1));
      ::Print("m_take_profit_pts = ", ::DoubleToString(m_take_profit_pts, 1));
      ::Print("m_max_spread_pts  = ", ::DoubleToString(m_max_spread_pts, 1));
      ::Print("m_magic_number    = ", ::IntegerToString(m_magic_number));
      ::Print("m_comment         = ", m_comment);
     }
  };

#endif // STRATEGYCONFIG_MQH
//+------------------------------------------------------------------+