Продолжая тему, начатую в разделе "Торговые стратегии", выкладываю код эксперта соснованный на простом методе "мертингейла". Советник взят с сайта разработчика платформы MetaTrader. Подробнее о самой стратегии можно прочитать здесь.

//+------------------------------------------------------------------+
//|                                                       martin.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int distance=30;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   MathSrand(LocalTime());
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

int err = 0;
double Lot = 0.1;
double Ballance=0.0;
int start()
  {
//----
   if (OrdersTotal()==0&&err==0)
     {
       if (Ballance!=0.0)
         {
           if (Ballance>AccountBalance())
             Lot=2*Lot;
           else
             Lot=0.1;
         }
       Ballance=AccountBalance();
         
       int order;
       if (MathRand()%2==0)
         order=OrderSend(Symbol(),OP_BUY,Lot,Ask,5*Point,Bid-distance*Point,Ask+distance*Point);
       else
         order=OrderSend(Symbol(),OP_SELL,Lot,Bid,5*Point,Ask+distance*Point,Bid-distance*Point);
         

       
       if(order<0)
         {
           if (GetLastError()==134)
             {
               err=1;
               Print("NOT ENOGUGHT MONEY!!");
             }
           return (-1);
         }
       //n++;
       
     }
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+