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

Рейтинг 2089



РЕКОМЕНДУЮ



Советник для торговли БО в терминале МТ4

Доброго времени суток Господа Програмисты. Прошу помощи в создании советника для БО на платформе МТ4

ТехЗадание
Советник для торговли БО в терминале МТ4 на индикаторе IINWMARROWS alert (индикатор прилагается) с мартингейлом под брокера GrandCapital.
Советник для торговли ВЫШЕ/НИЖЕ
В советнике должно быть реализовано:
Выбор лота
Выбор времени экспирации
Выбор множителя мартингейла
Время начала работы
Время окончания работы
Остановка работы после достижения профита
Magic
Условия входа, выхода и сопровождения сделки:
Советник открывает сделку по сигналу индикатора
Советник открывает сделки с открытием каждой следующей свечи
Если предыдущая свеча закрылась с минусом ( т.е. не в сторону указанную последним сигналом индикатора), следующая сделка открывается с мартингейлом
Мартингейл действует до момента закрытия свечи в плюс
Следующая сделка открывается с начальным лотом
Вроде ничего не забыл…
IINWMARROWS alert.ex4 (12 Kb)
IINWMARROWS alert.mq4 (4 Kb)
  • 0
  • Просмотров: 6208
  • 12 марта 2016, 15:24
  • vassek08
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Доработать советник HelloDual
Следующая запись в группе  
NonLagMA_v4VMN
11 марта 2016
12 марта 2016

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

+
0
Сначала делаю трейдерам от 3-го уровня, а затем если свободное время позволяет остальные смотрю, но сейчас заказов хватает.
avatar

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

  • 12 марта 2016, 21:29
+
0
Понял, спасибо, будем ждать.
А если при материальной поддержке?
avatar

  11  vassek08 Автор Сообщений: 42

  • 13 марта 2016, 13:21
+
0
Я платно не делаю.
avatar

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

  • 13 марта 2016, 16:01
+
0
Ясно, тогда будем ждать.
avatar

  11  vassek08 Автор Сообщений: 42

  • 13 марта 2016, 16:13
+
+1
Сделаю платно и быстро. Если актуально пишите dken@bk.ru
avatar

  2  DKeN Сообщений: 38 - Александр Гаврилин

  • 13 марта 2016, 20:34
+
0
Забыли добавить — «дорого и код под сомнением» <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' :D '>&nbsp; 
P.S. «Стол заказов» создан не для того, чтобы вы здесь себя рекламировали. Для этого можете писать у себя в блоге.
Редактирован: 13 марта 2016, 20:39
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 13 марта 2016, 20:37
+
0
Идея интересная. Прогнал в тестере, может быть 9 проигрышей подряд. Но можно отрегулировать параметры индикатора, там основа машки, а лучше сразу заменить и проще будет подбирать параметры и снимать сигнал. Также в тестере можно подсчитывать профит по бо если добавить необходимые функции.




//+------------------------------------------------------------------+
//|                                                      Binarik.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int TimeFrame     = 60;       // период графика
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик
extern string Expiration = "5";      // истечение ордера
extern string IndName    = "IINWMARROWS alert";

int UP=0,DN=0;
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
  {
   datetime db, de;           // Время начала и окончания работы
   int      hc;               // Часы текущего времени торгового сервера

   db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
   de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
   hc=TimeHour(TimeCurrent());

   if(db>=de)
     {
      if(hc>=he) de+=24*60*60; else db-=24*60*60;
     }

   if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
   else return(False);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,Expiration,Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {     
   if(UP>0)
     {
      PutOrder(0,Ask);
      t=TimeCurrent();
     }

   if(DN>0)
     {
      PutOrder(1,Bid);
      t=TimeCurrent();
     }     
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<0)
        {
         lot=OrderLots()*KLot;
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   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)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==OP_SELL)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up = iCustom(NULL,0,IndName,0,Shift);
   double dn = iCustom(NULL,0,IndName,1,Shift);

   if(up<1000)
     {
      UP=1;
      DN=0;
     }

   if(dn<1000)
     {
      DN=1;
      UP=0;
     }

   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin))
     {
      OpenPos();
     }
/*

   //if(TimeCurrent()-t>TimeFrame*60) CloseAll();
   Comment("\n up: ",up,
           "\n dn: ",dn,
           "\n UP: ",UP,
           "\n DN: ",DN,
           "\n t: ",t);
*/
  }
//+------------------------------------------------------------------+

avatar

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

  • 15 марта 2016, 21:10
+
0
Добавил функцию расчета профита и ставки и вывел их на экран. В тестере видно, что даже при таком простом входе профит постоянно увеличивается, если WIN Loss равны, если соотношение меньше 0.9 начинается слив при данной стратегии.
www.opentraders.ru/downloads/1098/


//+------------------------------------------------------------------+
//|                                                      Binarik.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern double Win        = 0.7;      // прибыль со ставки
extern int StopLoss      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int TimeFrame     = 60;       // период графика
extern int Slip          = 30;       // реквот
extern int Stavka        = 1;        // ставка
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Magic         = 123;      // магик
extern string Expiration = "5";      // истечение ордера
extern string IndName    = "IINWMARROWS alert";

double pr=0,st=Stavka;
int UP=0,DN=0;
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
  {
   datetime db, de;           // Время начала и окончания работы
   int      hc;               // Часы текущего времени торгового сервера

   db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
   de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
   hc=TimeHour(TimeCurrent());

   if(db>=de)
     {
      if(hc>=he) de+=24*60*60; else db-=24*60*60;
     }

   if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
   else return(False);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,Expiration,Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   if(UP>0)
     {
      PutOrder(0,Ask);
      t=TimeCurrent();
     }

   if(DN>0)
     {
      PutOrder(1,Bid);
      t=TimeCurrent();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<0)
        {
         lot=OrderLots()*KLot;
         pr-=st;
         st*=KLot;        
        }
      if(OrderProfit()>0)
        {
         pr+=st*Win;
         st=Stavka;        
        }        
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   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)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==OP_SELL)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up = iCustom(NULL,0,IndName,0,Shift);
   double dn = iCustom(NULL,0,IndName,1,Shift);

   if(up<1000)
     {
      UP=1;
      DN=0;
     }

   if(dn<1000)
     {
      DN=1;
      UP=0;
     }

   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin))
     {
      OpenPos();
     }
/**///

   if(TimeCurrent()-t>TimeFrame*60) CloseAll();
   Comment("\n up: ",up,
           "\n dn: ",dn,
           "\n UP: ",UP,
           "\n DN: ",DN,
           "\n t: ",t,
           "\n Profit: ",pr,
           "\n Stavka: ",st);

  }
//+------------------------------------------------------------------+


Редактирован: 15 марта 2016, 22:22
avatar

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

  • 15 марта 2016, 21:57
+
0
Ура! До меня добрались.Спасибо.Завтра будем поглядеть.
Я закладывался на 10-12 лосей подряд.
avatar

  11  vassek08 Автор Сообщений: 42

  • 15 марта 2016, 22:59
+
0
А индикатор можно этот прицепить, «i_ozymandias_lite» он и на истории не рисует, и флэт хоть как-то фильтрует. Я по нему сейчас ручками торгую.
yadi.sk/d/MhRxydw_qDSUs
Чет не смог файл прицепить, только ссылку.
И если можно, настройки индюка в советник внедрить.
avatar

  11  vassek08 Автор Сообщений: 42

  • 16 марта 2016, 00:05
+
0
Здесь мне было интересно проверить идею. Все остальное уже не ко мне :) 
avatar

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

  • 16 марта 2016, 10:11
+
0
Вот отлаженная версия уже для торговли: www.opentraders.ru/downloads/1099/

avatar

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

  • 16 марта 2016, 20:08
+
0
Огромное спасибо, будем пытать.
avatar

  11  vassek08 Автор Сообщений: 42

  • 16 марта 2016, 22:37

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