← К каталогу
Исходный код · ID 598

sergey_0.2.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Торговый советник для MetaTrader 4, основанный на модифицированной стратегии TrendScalper. Советник определяет торговые сигналы с помощью пользовательских индикаторов (ZigZag, Fractals, 3Line_Break) и выполняет открытие позиций в направлении обнаруженного сигнала. Перед открытием нового ордера сигнал подтверждается индикатором 3Line_Break, что служит дополнительной фильтрацией.

В советнике реализованы управление рисками и трейлинг-стоп. При активном режиме управления капиталом размер лота рассчитывается на основе баланса счёта и заданного коэффициента риска. Трейлинг-стоп корректирует уровень Stop Loss ордера на основе значения ATR, отслеживая движение цены в пользу позиции.

Советник также контролирует уже открытые ордера: при появлении сигнала на противоположную сторону он может закрыть имеющуюся позицию и открыть новую. Все торговые операции выполняются через стандартные функции MQL4, при этом советник отслеживает последний обработанный бар, чтобы избежать повторной обработки на каждом тике.

Настройки программы

НастройкаОписание
LotsIfNoMM Размер лота, используемый при отключённом управлении капиталом (MM_Mode = 0).
Stoploss Начальный уровень стоп-лосса в пунктах, задаваемый при открытии ордера.
Slip Допустимое проскальзывание в пунктах при выполнении торговых операций.
InitialTarget Начальная цель в пунктах, используемая как целевой уровень прибыли для контроля открытия позиции (применяется в зависимости от режима работы советника).
MM_Mode Режим управления капиталом: 0 — фиксированный размер лота, отрицательные значения — дробные лоты для мини-счётов, положительные значения — полные лоты с расчётом от баланса.
MM_Risk Коэффициент риска, определяющий увеличение размера лота в зависимости от баланса счёта при активном управлении капиталом.
Получить полный код

Поиск по коду файла

extern double    LotsIfNoMM=0.1;
extern int       Stoploss=200;
extern int       Slip=5;
extern int       InitialTarget=999;
extern int       MM_Mode=0;
extern int       MM_Risk=40;

double Opentrades,orders,first,mode,Ilo,sym,b;
double b4signal,Signal,Triggerline,b4Triggerline,Nowsignal,NowTriggerline,sl,LastOpByExpert,LastBarChecked;
int cnt,cnt2; 

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {

   return(0);
  }

int start()
  {
      // код доступен только после оплаты
   }

   Comment(" Trailingstop    ",  b, "\n","      Tick no. ", iVolume(NULL,0,0),
     "\n"," Lots    ",Ilo);

   /**********************************Money and Risk Management***************************************
   Changing the value of mm will give you several money management options
   mm = 0 : Single 1 lot orders.
   mm = -1 : Fractional lots/ balance X the risk factor.(use for Mini accts)
   mm = 1 : Full lots/ balance X the risk factor up to 100 lot orders.(use for Regular accounts)
   ***************************************************************************************************
   RISK FACTOR:
   risk can be anything from 1 up. 
   Factor of 5 adds a lot for every $20,000.00 added to the balance. 
   Factor of 10 adds a lot with every $10.000.00 added to the balance.
   The higher the risk,  the easier it is to blow your margin..
   **************************************************************************************************/

   if (MM_Mode < 0)  {
   Ilo = MathCeil(AccountBalance()*MM_Risk/10000)/10;
     if (Ilo > 100) {  
     Ilo = 100;  
     }
   } else {
   Ilo = LotsIfNoMM;
   }
   if (MM_Mode > 0)  
    {
   Ilo = MathCeil(AccountBalance()*MM_Risk/10000)/10;
    if (Ilo > 1)  
    {
    Ilo = MathCeil(Ilo);
    }
    if (Ilo < 1)  
    {
    Ilo = 1;
    }
    if (Ilo > 100)  
    {  
     Ilo = 100;  
     }
   }

/*
Print(iCustom(Symbol(),0,"Ind-Fractals-1",True,7,7));
Print(iCustom(Symbol(),0,"High_Low v2 (ZigZag)",300,6,0,19));
Print(iCustom(Symbol(),0,"3Line_Break",3,0,1));

*/

     if (LastBarChecked == Time[0]) 
         return(0); 
      else 
  	      {
  	      LastBarChecked = Time[0]; 

         Opentrades=0;
         for (cnt=0;cnt<OrdersTotal();cnt++) 
            {
            if ( OrderSelect (cnt, SELECT_BY_POS) == false )  continue;
            if ( OrderSymbol()==Symbol()) Opentrades=Opentrades+1;
            }

         if (Opentrades != 0)  

           {
            orders=0;
            sym=0;
            for (cnt=0;cnt<OrdersTotal();cnt++) 
               { 
               if ( OrderSelect (cnt, SELECT_BY_POS) == false )  continue;

               if ( OrderSymbol()==Symbol())
                  {
                  sym=cnt;
                  orders=1;
                  b=5*Point+iATR(NULL,0,3,1)*2;

                  }
               } 

            mode=OrderType();

            if (mode==OP_BUY)   
             {
             if (Bid-OrderOpenPrice()>b)
              {
              if (OrderStopLoss()<Bid-b) 
               {
               OrderModify(OrderTicket(),OrderOpenPrice(),Bid-b,OrderTakeProfit(),0,LimeGreen);
               LastOpByExpert=CurTime();

               } 
              }
             }  

             if (mode==OP_SELL) 
                 {
                  if (OrderOpenPrice()-Ask>(b)) 
                     {
                     if (OrderStopLoss()>(Ask+b)) 
                       {
                       OrderModify(OrderTicket(),OrderOpenPrice(),Ask+b,OrderTakeProfit(),0,HotPink);
                       LastOpByExpert=CurTime();

                       }
                     }
                  }
               }

  	      Signal = 0;
         for (cnt=1;cnt<=40;cnt++) 
            {    
            if (iCustom(Symbol(),0,"High_Low v2 (ZigZag)",300,6,0,cnt)<=Low[cnt])
               {
               for (cnt2=1;cnt2<=7;cnt2=cnt2+2)
                  {
                  if (iCustom(Symbol(),0,"Ind-Fractals-1",True,cnt2,cnt)!=0)
                     {
                     Signal = 1; //1=BUY, 2=SELL
                     break;
                     }
                  }
               if (Signal != 0) break;
               }

            if (iCustom(Symbol(),0,"High_Low v2 (ZigZag)",300,6,0,cnt)>=High[cnt])
               {
               for (cnt2=0;cnt2<=7;cnt2=cnt2+2)
                  {
                  if (iCustom(Symbol(),0,"Ind-Fractals-1",True,cnt2,cnt)!=0)
                     {
                     Signal = 2; //1=BUY, 2=SELL
                     break;
                     }
                  }
               if (Signal != 0) break;
               }
            }   

         if (Signal == 0) 
            {
            Print("No signal over 40 bars..."); //Highly unlikely, but interesting to check
            return(0);
            }
          else
            {

            if (Signal == 1 && iCustom(Symbol(),0,"3Line_Break",3,0,1) > iCustom(Symbol(),0,"

Показано первые 50% кода (символов: 7827)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
782,70₽ ≈ $9.57