lorik
Лариса

 
Уровень 19

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2088



РЕКОМЕНДУЮ



Внести изменения в советник на основе индикатора пробоя

Внести изменения в советник на основе индикатора пробоя


Большая просьба переделать советник по открытию ордеров.
Постоянные значения:
— Открытие ордеров (количество пунктов от мах и мin ограничения коробочки по горизонтали );
— Временные промежутки коробочки (время конца сессии и продолжительность ограничения коробочки по вертикали);
Переменые значения:
— Расстояние между мах и мin по горизонтали коробочки;
Для отрытия ордера вниз:
— Построение линий Фибоначчи вниз значение 100 от мах коробочки значение 50 мin коробочки по горизотали;
— Выставка Тейк Профита два значения это — 23.6 и 0 линии Фибоначчи (отнести к постоянным значениям);
— Втавка Стоп Лосса мах по горизонтали коробочки;
Для отрытия ордера вверх:
— Построение линий Фибоначчи вверх значение 100 от мin коробочки значение 50 мах коробочки по горизотали;
— Выставка Тейк Профита два значения это — 23.6 и 0 линии Фибоначчи (отнести к постоянным значениям);
— Втавка Стоп Лосса мin по горизонтали коробочки;

Заранее благодарна.
  • +2
  • Просмотров: 3163
  • 27 ноября 2014, 20:09
  • lorik
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Таймер
Следующая запись в группе  
советник по ТС от журнала ForTrader.ru
27 ноября 2014
27 ноября 2014

Комментарии (7)

+
0
Укажите пожалуйста на скрине условия входа на покупку и продажу по отдельности вместе с остальными параметрами как можно подробнее. Можно вот так примерно:

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 ноября 2014, 17:22
+
0
Задание на рис.
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 29 ноября 2014, 20:20
+
0
все понятно, кроме двух разных тейк профитов. будем выставлять 2 ордера или один на выбор тейк идет?
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 ноября 2014, 21:02
+
0
Вот советник выставляет ордера точно по ТЗ. Стоп ставит на границе канала, тейк на уровне 23.6 или 0.0 по фибе. тейк вычисляется программно, вручную вводим необходимый уровень 23.6 или 0.0

такая торговля на нынешнем рынке имеет место быть. см. картинку




//+------------------------------------------------------------------+
//|                                                        Lorik.mq4 |
//|                                            Copyright © 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Forex expert advisor"

//--- Inputs
extern double TakeProfit = 23.6; // тейк профит ордера(23.6 по фибе или 0.0)
extern int EndHour       = 11;   // час окончания торговой сессии
extern int CountHour     = 8;    // длительность торговой сессии
extern int Delta         = 100;  // расстояние от вершин
extern double Lots       = 0.1;  // объем позиции

//----
extern int MAGIC        = 333; // магик
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void PutOrder()
  {
   int    res,b,s;
//--- get Moving Average 
   double up=iHigh(Symbol(),0,iHighest(NULL,0,MODE_HIGH,CountHour,1));
   double dn=iLow(Symbol(),0,iLowest(NULL,0,MODE_LOW,CountHour,1));
   double delta=up-dn;
   double price,tp;
   Comment("\nHigh Price ",up,"\nLow Price  ",dn,"\nChannel Width  ",delta);
      
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)b++;
         if(OrderType()==OP_SELLSTOP)s++; 
        }
      }
    }            
   //--- sell 
   if(Hour()==EndHour && Bid>dn && s<1)
    {
     if(TakeProfit==23.6) 
      {
       tp=dn-delta/2;
      }
     else tp=dn-delta;
     price=dn-Delta*Point;
     res=OrderSend(Symbol(),OP_SELLSTOP,Lots,price,3,up,tp,"",MAGIC,0,Red);
     return;
    }    
   //--- buy
   if(Hour()==EndHour && Ask<up && b<1)
    {
     if(TakeProfit==23.6) 
      {
       tp=up+delta/2;
      }
     else tp=up+delta;    
     price=up+Delta*Point;
     res=OrderSend(Symbol(),OP_BUYSTOP,Lots,price,3,dn,up+delta,"",MAGIC,0,Blue);
     return;
    }             
  }
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del; 
   for (int i=OrdersTotal()-1; i>=0; i--) 
    {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
     if (OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket()); 
     if (OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());       
    }    
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
  }
//+------------------------------------------------------------------+

int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
          count++;
        }
      }
    }
    return(count);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
   if(NewBar()==true)
    {    
     if(CountTrades()<1)PutOrder();
     if(CountTrades()>0)DelOrder();
    }
//---
  }
//+------------------------------------------------------------------+


Редактирован: 29 ноября 2014, 23:23
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 ноября 2014, 23:22
+
0
Выставлять сразу два ордера вверх и вниз, в конце дня удалять не сработавшие отложенные ордера, если ордер предыдущего дня не закрыт, то отложки новой сессии не выставлять
Редактирован: 30 ноября 2014, 08:29
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 30 ноября 2014, 08:12
+
0
добавил параметр истечения ордера. если ордера не сработали они удаляются через Expiration часов.


//+------------------------------------------------------------------+
//|                                                        Lorik.mq4 |
//|                                            Copyright © 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Forex expert advisor"

//--- Inputs
extern double TakeProfit = 23.6; // тейк профит ордера(23.6 по фибе или 0.0)
extern int EndHour       = 11;   // час окончания торговой сессии
extern int CountHour     = 8;    // длительность торговой сессии
extern int Expiration    = 14;   // время истечения ордера
extern int Delta         = 100;  // расстояние от вершин
extern double Lots       = 0.1;  // объем позиции
extern int MAGIC         = 333;  // магик
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void PutOrder()
  {
   int    res,b,s;
   datetime expiration = TimeCurrent()+3600*Expiration;
   double up=iHigh(Symbol(),0,iHighest(NULL,0,MODE_HIGH,CountHour,1));
   double dn=iLow(Symbol(),0,iLowest(NULL,0,MODE_LOW,CountHour,1));
   double delta=up-dn;
   double price,tp;
   Comment("\nHigh Price ",up,"\nLow Price  ",dn,"\nChannel Width  ",delta);
      
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)b++;
         if(OrderType()==OP_SELLSTOP)s++; 
        }
      }
    }
    
   //--- buy
   if(Hour()==EndHour && Ask<up)
    {
     if(TakeProfit==23.6) 
      {
       tp=up+delta/2;
      }
     else tp=up+delta;    
     price=up+Delta*Point;
     res=OrderSend(Symbol(),OP_BUYSTOP,Lots,price,3,dn,tp,"",MAGIC,expiration,Blue);
    }             
                    
   //--- sell 
   if(Hour()==EndHour && Bid>dn)
    {
     if(TakeProfit==23.6) 
      {
       tp=dn-delta/2;
      }
     else tp=dn-delta;
     price=dn-Delta*Point;
     res=OrderSend(Symbol(),OP_SELLSTOP,Lots,price,3,up,tp,"",MAGIC,expiration,Red);
    }  
  }
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del; 
   for (int i=OrdersTotal()-1; i>=0; i--) 
    {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
     if (OrderType()==OP_BUYSTOP)  del=OrderDelete(OrderTicket()); 
     if (OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());       
    }    
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
  }
//+------------------------------------------------------------------+

int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY || OrderType()==OP_SELL)
          count++;
        }
      }
    }
    return(count);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
   if(NewBar()==true)
    {    
     if(CountTrades()<1)PutOrder();
     if(CountTrades()>0)DelOrder();
    }
//---
  }
//+------------------------------------------------------------------+


Редактирован: 30 ноября 2014, 15:34
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 30 ноября 2014, 15:33
+
0
Огромное спасибо!!!!!!*flirt* 
avatar

  19  lorik Автор Сообщений: 357 - Лариса

  • 30 ноября 2014, 17:51

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари