Предлагаю к обсуждению тему: адаптированный советник.

 

Идея возникла следующая:  адаптировать период индикатора,  который показывает лучшую прибыль.

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

(для простоты восприятия мой код, в котором заложен сам алгоритм: в ините и торговых условиях).

Сделки только на покупку, советник для тестов по ценам открытия. П‌од "виртуальными сделками" подразумеваются не настоящие сделки.

На картинке бектест EURUSD 4 часовой график. Мои вычислительные ресурсы ограничены так что,  пробуйте тестируйте, оптимизируйте. Выкладывайте сюда результаты тестов. Эксперт "MDI", индикатор "iMDI".

Торговый алгоритм частично заложен в «init» и разделе торговые условия.

«Init»:

ArrayInitialize(period,EMPTY_VALUE);
   ArrayResize(period,r);
   for(int x=0;x<r;x++)//цикл периодов с шагом 3 в количестве r итераций
     {
      e=e+3;
      period[x]=e;
     }

Тут все просто берем период начиная с 3 и шагом в 3 заполняем массив. Это и будут значения периодов,  которые советник будет перебирать, выбирая самый лучший.

Торговые условия:


if(Total==0 && Time[0]>b)//если ордеров нет и последняя сделка не на текущем баре
     {
     if (Time[300]> t)//делать расчет через каждые 300 баров(в основном это самая ресурсоемкая строка, если сделать значение меньше 300, то значительно 
//увеличивается время на обработку, больше,  сокращается)
     {
      for(int f=0;f<r;f++)//количество итерации(сколько разных периодов)
        {
         sP=0.0;
         sS=0.0;
         tiket=0;
         period_=period[f];//значение периода
         for(int y=q;y>=1;y--)//размер q истории по которой проводим анализ
           {

Далее сам алгоритм выбора лучшего периода:


for(int y=q;y>=1;y--)
           {
            if(tiket==0)//если нет виртуального «order»
              {
               m=iCustom(NULL,0,"MDI",period_,p,0,y);
               m1=iCustom(NULL,0,"MDI",period_,p,0,y+1);
               if(m1<0.0 && m>0.0)//произошло пересечение индикатором нулевой отметки
                 {
                  tiket=1;
                  order=Open[y-1];// запоминаем значение «виртуального ордера»
                 }
              }
            if(tiket==1)
              {
               profit=(High[y-1]-order)/point;
               stoploss=(order-Low[y-1])/point;
               if(profit>=TakeProfit){sP=sP+TakeProfit;tiket=0;}//ордер виртуально закрылся по тейку
               if(stoploss>=StopLoss){sS=sS+StopLoss;tiket=0;} ;//ордер виртуально закрылся по стопу
              }
           }
         M[f]=sP-sS;//суммы тейков минус суммы стопов
        }
      int    maxValueIdx=ArrayMaximum(M,WHOLE_ARRAY,0);//выбираем индекс где значение массива максимально
      Ap=period[maxValueIdx];//это и есть лучший период индикатора, который записывается в в глобальную переменную Ap
      t=Time[0];
      }
      R=iCustom(NULL,0,"MDI",Ap,p,0,1);
      R1=iCustom(NULL,0,"MDI",Ap,p,0,2);
      if(R1<0.0 && R>0.0)Opn_B=true;//реальный вход по пересечению с лучшим периодом индикатора
Файлы:
iMDI.mq4  4 kb
MDI.mq4  23 kb
 
forexman77:

Идея возникла следующая:  адаптировать период индикатора,  который показывает лучшую прибыль.

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

(для простоты восприятия мой код, в котором заложен сам алгоритм: в ините и торговых условиях).

Сделки только на покупку, советник для тестов по ценам открытия. П‌од "виртуальными сделками" подразумеваются не настоящие сделки.

На картинке бектест EURUSD 4 часовой график. Мои вычислительные ресурсы ограничены так что,  пробуйте тестируйте, оптимизируйте. Выкладывайте сюда результаты тестов. Эксперт "MDI", индикатор "iMDI".

Торговый алгоритм частично заложен в «init» и разделе торговые условия.

«Init»:

Тут все просто берем период начиная с 3 и шагом в 3 заполняем массив. Это и будут значения периодов,  которые советник будет перебирать, выбирая самый лучший.

Торговые условия:


Далее сам алгоритм выбора лучшего периода:


Спред, своп учитываеться? Стоимость Пункта?
 
Evgeny Belyaev:
Спред, своп учитываеться? Стоимость Пункта?

Нет. Советник толстокожий, по ценам открытия.
 
forexman77:

Нет. Советник толстокожий, по ценам открытия.

Как тогда ему доверять?
 
Evgeny Belyaev:

Как тогда ему доверять?

Ну, поставьте спред побольше. Разницы большой не будет. Тест на картинке с 4 часового графика, по ценам открытия, с такими условиями спред, свопы, коммисия мало отразятся на торговле.
 
forexman77:

Ну, поставьте спред побольше. Разницы большой не будет. Тест на картинке с 4 часового графика, по ценам открытия, с такими условиями спред, свопы, коммисия мало отразятся на торговле.
Это вам по молодости кажется. Спред есть главная причина отделяющая от миллиардов.
 
SidorOFF:
Это вам по молодости кажется. Спред есть главная причина отделяющая от миллиардов.


Если стратегия скальперская. Тут же совсем другое, рассчитано на более менее крупные движения.

Как думаете если стоп от 400, профит от 1000 пунктов на пятизнаке, то спред, как-то сильно повлияет?

 

Сложилось впечатление, что на форуме вообще нет трейдеров практиков-тестировщиков.

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

 
SidorOFF:
Это вам по молодости кажется. Спред есть главная причина отделяющая от миллиардов.

Есть такое)
 
Интересно, почему данная тема есть во "Все сообщения" у forexman77, но отсутствует у него в профиле?
 
forexman77:


Если стратегия скальперская. Тут же совсем другое, рассчитано на более менее крупные движения.

Как думаете если стоп от 400, профит от 1000 пунктов на пятизнаке, то спред, как-то сильно повлияет?

Скажу откровенно - точно также.  А если кто вам будет  впаривать что нет-  двиньте ему в пятак и передайте что от меня.