Скачать MetaTrader 5
Смотри, как быстро заказать торгового робота
Ознакомьтесь с правилами перед работой
Как заказать торгового робота и получить результат
Не теряй времени при создании робота
Пиши торговые операции просто
48
Заказчик 2016.11.21 13:50

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

 


#property description "Советник открывает позиции по сигналам стохастика"
//--------------------------------------------------------------------*/
extern int     KPeriod              = 5;
extern int     DPeriod              = 3;
extern int     Slowing              = 3;
extern int     LevelSell            = 75;
extern int     LevelBuy             = 25;
extern int     Stoploss             = 50;           //стоплосс
extern int     Takeprofit           = 50;           //тейкпрофит
extern int     TrailingStop         = 10;           //трейлингстоп, если 0, то нет трейлинга
extern double  Lot                  = 0.05;         //лот
extern int     slippage             = 5;            // проскальзывание
extern int     Magic                = 0;
//--------------------------------------------------------------------

//--------------------------------------------------------------------
double STOPLEVEL;

//-------------------------------------------------------------------
void OnTick()
{
   if (!IsTradeAllowed())
   {
      return;
   }
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   double OSL,OTP,OOP,StLo=0,SL=0,TP=0;
   int i,b=0,s=0,tip;
   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         {
            tip = OrderType();
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)            
            {  
               b++;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - Stoploss   * Point,Digits);
               }
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);
               }
               if (TrailingStop>=STOPLEVEL && TrailingStop!=0)
               {
                  StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits);
                  if (StLo >= OOP && StLo > OSL) SL = StLo;
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",(GetLastError()),">> ");
               }
            }                                        
            if (tip==OP_SELL)        
            {
               s++;
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP + Stoploss   * Point,Digits);
               }
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP - Takeprofit * Point,Digits);
               }
               if (TrailingStop>=STOPLEVEL && TrailingStop!=0)
               {
                  StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits);
                  if (StLo <= OOP && (StLo < OSL || OSL==0)) SL = StLo;
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",(GetLastError()),">> ");
               }
            }
         }
      }
   }
   //----------------------------------------------------------------

   double Stoch0 = iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_MAIN,0);
   double Signl0 = iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_SIGNAL,0);

   double Stoch1 = iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_MAIN,1);
   double Signl1 = iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_SIGNAL,1);

   //-----------------------------------------------------------------------
   if (Stoch0>Signl0 && Stoch1<Signl1 && Stoch0<LevelBuy)
   {
      if (b==0)
      {
         if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL,Magic,0,clrNONE)==-1) Print("Ошибка открытия ордера <<",(GetLastError()),">>  ");
      }
   }
   if (Stoch0<Signl0 && Stoch1>Signl1 && Stoch0>LevelSell)
   {
      if (s==0)
      {
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,0,0,NULL,Magic,0,clrNONE)==-1) Print("Ошибка открытия ордера <<",(GetLastError()),">>  ");
      }
   }
return;
}
//--------------------------------------------------------------------


Исполнитель 2016.11.21 14:38
Работы: 471 (53% персональные)
Арбитраж: 44 (завершённые в пользу исполнителя 13%, расторгнутые в пользу заказчика 68%)
Просрочено: 165 (35%)

Исполнитель 2016.11.30 16:01
Опубликовал 1 статью
Работы: 4 (25% персональные)
Арбитраж: 2 (завершённые в пользу исполнителя 0%, расторгнутые в пользу заказчика 100%)
Просрочено: 1 (25%)

Исполнитель 2016.11.21 14:20
Работы: 222 (51% персональные)
Арбитраж: 19 (завершённые в пользу исполнителя 5%, расторгнутые в пользу заказчика 52%)
Просрочено: 91 (40%)

Исполнитель 2016.11.21 15:14
Опубликовал 4 примера в Библиотеке
Работы: 98 (30% персональные)
Арбитраж: 4 (завершённые в пользу исполнителя 25%, расторгнутые в пользу заказчика 50%)
Просрочено: 26 (26%)

Исполнитель 2016.11.21 14:33
Опубликовал 2 примера в Библиотеке
Работы: 98 (70% персональные)
Арбитраж: 13 (завершённые в пользу исполнителя 23%, расторгнутые в пользу заказчика 15%)
Просрочено: 25 (25%)

Исполнитель 2016.11.21 13:53
Работы: 97 (39% персональные)
Арбитраж: 1 (завершённые в пользу исполнителя 100%, расторгнутые в пользу заказчика 0%)
Просрочено: 18 (18%)

Исполнитель 2016.11.21 13:52
Работы: 2 (50% персональные)
Просрочено: 0 (0%)

Исполнитель 2016.11.22 06:07
Работы: 0
Просрочено: 0 (0%)
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий