Andrey7
Андрей Аркадьевич

 
Уровень 1


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

Рейтинг 2092



РЕКОМЕНДУЮ




Лучшее от Andrey7



экспертиза советника Комментариев 16
2016-04-21 13:45:26Рейтинг 0

советник

  • 0
  • Просмотров: 2742
  • 22 апреля 2016, 13:23
  • Andrey7
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник по индикатору HMA на Т3
Следующая запись в группе  
Приложение для МТ4
22 апреля 2016
24 апреля 2016

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

+
0
Могу сделать чуть больше половины пунктов из ТЗ после выходных.
avatar

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

  • 22 апреля 2016, 17:02
+
+1
Мой вариант. Есть 1,2,3,4,5,6,8,12,13. Если необходимо все остальное могу добавить.
www.opentraders.ru/downloads/1157/

avatar

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

  • 24 апреля 2016, 12:32
+
0
С запуском советника проблема. Установил, он улыбается, но с существующими параметрами не запускается? Как его протестировать?
avatar

  1  Andrey7 Автор Сообщений: 12 - Андрей Аркадьевич

  • 25 апреля 2016, 16:36
+
0
Он ждет касания МА. В тестере еще гоняйте.
avatar

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

  • 25 апреля 2016, 16:39
+
0
Запустил этот код, настройки на скрине смотрите:




//+------------------------------------------------------------------+
//|                                                      TouchMA.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 Delta      = 0.0035;   // дельта
extern int StopLoss      = 1000;     // лось
extern int TakeProfit    = 1600;     // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 30;       // реквот
extern int Shift         = 0;        // на каком баре сигнал 
extern int Magic         = 123;      // магик

extern int MAPeriod      = 12;       // Период МА
extern int MAMethod      = 0;        // Метод МА
extern int MAPrice       = 0;        // Тип цены МА
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!IsTradeAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");

   if(!IsLibrariesAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних библиотек");

   if(!IsExpertEnabled())
      Alert("Отжата кнопка \"Разрешить запуск советников\"");

   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(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",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()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
   
   if((ma1-ma)<0 && MathAbs(ma1-ma)>Delta && Ask<ma)
     {
      PutOrder(0,Ask);
     }

   if((ma1-ma)>0 && MathAbs(ma1-ma)>Delta && Bid>ma)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
     
   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin))
     {
      OpenPos();
     }

   Comment("\n Delta: ",NormalizeDouble(ma1-ma,Digits),
   "\n МА: ",ma);
  }
//+------------------------------------------------------------------+

avatar

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

  • 25 апреля 2016, 17:08
+
0
прогнал на периоде больше двух месяцев.
разделы тестера пустые только в разделе «журнал» информация:
0 23:16:06.776 Expert TouchMA EURUSD_OP,M5: loaded successfully
0 23:16:06.776 Tester: template 'C:\Users\Кира\AppData\Roaming\MetaQuotes\Terminal\A372EB977CDE1787AD4FAA492F8665E0\templates\tester.tpl' applied
0 23:16:06.792 TestGenerator: current spread 0 used
1 23:16:08.831 TestGenerator: unmatched data error (high value 1.12684 at 2016.04.15 00:10 is not reached from the least timeframe, high price 1.12681 mismatches)
3 23:16:08.863 Tester: exchange rate cannot be calculated
2 23:16:08 2016.02.01 00:00 TouchMA inputs: Lots=0.1; KLot=2; MaxLot=5; Delta=0.0035; StopLoss=1000; TakeProfit=1600; BULevel=0; BUPoint=30; TrailingStop=0; StartHour=0; StartMin=30; EndHour=23; EndMin=30; Slip=30; Shift=0; CloseOn=0; Magic=123; MAPeriod=12; MAMethod=0; MAPrice=0;
0 23:16:14.081 EURUSD_OP,M5: 212316 tick events (3642 bars, 212416 bar states) processed in 0:00:05.218 (total time 0:00:07.297)

avatar

  1  Andrey7 Автор Сообщений: 12 - Андрей Аркадьевич

  • 25 апреля 2016, 17:22
+
0
Expert TouchMA EURUSD_OP,M5: loaded successfully

Вы его на опционах запустить пытаетесь?
avatar

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

  • 25 апреля 2016, 17:26
+
0
да
avatar

  1  Andrey7 Автор Сообщений: 12 - Андрей Аркадьевич

  • 25 апреля 2016, 17:30
+
0
Там есть различия в написании. Такие вещи сразу нужно говорить.
avatar

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

  • 25 апреля 2016, 17:34
+
0
Сделал чтобы советник торговал на опционах.




//+------------------------------------------------------------------+
//|                                                      TouchMA.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 Delta      = 0.0001;   // дельта
extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 0;        // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 30;       // реквот
extern int Shift         = 0;        // на каком баре сигнал 
extern int Magic         = 123;      // магик

extern int MAPeriod      = 12;       // Период МА
extern int MAMethod      = 0;        // Метод МА
extern int MAPrice       = 0;        // Тип цены МА

extern string Expiration = "5";      // истечение ордера
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!IsTradeAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");

   if(!IsLibrariesAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних библиотек");

   if(!IsExpertEnabled())
      Alert("Отжата кнопка \"Разрешить запуск советников\"");

   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(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   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()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
   
   if((ma1-ma)<0 && MathAbs(ma1-ma)>Delta && Ask<ma)
     {
      PutOrder(0,Ask);
     }

   if((ma1-ma)>0 && MathAbs(ma1-ma)>Delta && Bid>ma)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
     
   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin))
     {
      OpenPos();
     }

   Comment("\n Delta: ",NormalizeDouble(ma1-ma,Digits),"\n Lot: ",Lot());
  }
//+------------------------------------------------------------------+

avatar

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

  • 27 апреля 2016, 06:42

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