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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от axe44



Крутые памм-счета Комментариев 6
2017-10-24 11:58:58Рейтинг 0

БКС Комментариев 8
2017-08-11 02:57:12Рейтинг 0

торги
2017-01-26 00:01:37Рейтинг 0

HelloDual v3.0 Комментариев 3
2017-11-19 02:21:03Рейтинг 0

Создание советников бесплатно Комментариев 2
2017-07-16 22:54:20Рейтинг 0

Negk./\ Блин... Туплю. Нужна помощь.

Здравствуйте.

Захотел проверить одну идею на индикаторе Зиг-зага. Ну как всегда пятницу отметил. В субботу проснулся думаю начертаю по быстрому код и на оптимизацию. Ну, а пока оптимизируется, зарегистрируюсь к Герчику на 12 сентября в живые торги.

Вот тут и началось…

Скажу прямо. Перед тем как написать статью я два часа тупо смотрел в одну точку и потом, когда отошёл из астрала, ещё час лазил по интернету пытаясь хоть что-то найти из простого кода Зиг-зага которое можно вставить в советник…

Ну короче по-порядку. Ну как всем известно индикатор этот лежит в общей папке и не составляет труда его посмотреть. Для наглядности простоты скажу, что зиг-заг, по моему искреннему мнению, строится на двух логиках или одной: первая — пробой минимума или максимума канала из Н-свечей каналом за ИКС-свечей, вторая — просто пробитие канала из Н-свечей. Думаю, что большинство то же в этом уверены.
Что мы видим при открытии стандартного индикатора? Правильно — Три параметра. Как позже разобрался это длинна канала, отклонение за пять свечей и отклонение за три свечки. Зачем отклонение спросите вы? Вот… И я задумался, оказывается это ищутся максимум и минимум за 3 свечки и 5 свечек. Зачем тогда период 12? Не знаю.
Смотрю код:
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const <u>datetime &time</u>[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const <u>long& tick_volume</u>[],
                const <u>long& volume</u>[],
                const <u>int& spread</u>[])

Зачем подчёркнутое в этом индикаторе я не знаю. Наверно, что бы расслаблялся. Вот… Особенно задумался над параметром ТикВолюм ( тиковый объём ) и Волюм ( реальный объём ). Учитывая что объёма нету в мт4, ну или это просто срывают разработчики, меня тут и накрыло на значении Спред… Нехилый такой вот Зиг-заг.

Как организовать простой код в советнике уже не знаю.

Нашёл небольшой очерк тут www.mql5.com/ru/code/21452 но там под мт5 и честно ничего не понял.

Ещё небольшой код с перебором который дважды вешает систему в первый раз когда считает индикатор пересчитывая свечи, а второй раз советник:
int GetSignal()
{
   int Sig = 0;
   
   double zz_dn, zz_up;
   for (i = SignalBar; i<Bars; i++) 
     {
     zz_dn = iCustom(Symbol(), Period(), "ZigZag_Pointer", ZZ_ExtDepth, ZZ_ExtDeviation, ZZ_ExtBackstep, 0, i);
     zz_up = iCustom(Symbol(), Period(), "ZigZag_Pointer", ZZ_ExtDepth, ZZ_ExtDeviation, ZZ_ExtBackstep, 1, i);
     
     if (zz_dn > 0 && zz_up == 0)
       { 
       Sig = 1;
       break;
       }

     if (zz_dn == 0 && zz_up > 0)
       { 
       Sig = -1;
       break;
       }
       
     break;  
     }
   
           
   return (Sig);
}  
 


Индикатора на руках нету.

Надеюсь поможете.
  • 0
  • Просмотров: 1613
  • 7 сентября 2019, 09:07
  • axe44
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

Брокер для ваших роботов, 15 лет на рынке

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

+
0
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 7 сентября 2019, 14:22
+
0
То есть из всего выше сказанного нужно определить обновление максимума и минимума… *think* 
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 7 сентября 2019, 14:29
+
0
Говорите, советуйте.
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 7 сентября 2019, 14:29
+
0
нарисуй на скринах чего хотишь? :) 
avatar

  35  AM2 Сообщений: 16285 - Андрей

  • 7 сентября 2019, 14:32
+
0
Привет. До хочу типа этого
double val; 
//--- расчет максимального значения цены на 20 последовательных барах 
//--- с индекса 4 по индекс 23 включительно на текущем графике 
   int val_index=iHighest(NULL,0,MODE_HIGH,20,4); 
   if(val_index!=-1) val=High[val_index]; 
   else PrintFormat("Ошибка вызова iHighest. Код ошибки=%d",GetLastError());

Как по учебнику.
Зигзаг обновляется при обновлении максимума или минимума за определённый период. У тебя это выглядит так.
double ZZPrice(int ne=0)
  {
   double zz;
   int ke=0;

   for(int i=0;i<Bars;i++)
     {
      zz=iCustom(NULL,0,"ZigZag",Depth,Dev,Back,0,i);
      if(zz!=0)
        {
         ke++;
         if(ke>ne) return(zz);
        }
     }
   Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
   return(0);
  }

Но такой код вешает систему на минуту. При прогоне на оптимизацию может повесить систему на 160 часов с дополнительными параметрами

Вот и ищу простой код на 5 строчек, что бы обновление минимума и максимума искалось миллисекунду. Что бы была бомба.
Как то так.

На на картинке Вселенский Коллапс не помещается )
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 7 сентября 2019, 15:19
+
0
До хочу типа этого

делаю сейчас подобную штуку так примерно:


   double lo=Low[iLowest(NULL,0,MODE_LOW,Count,Shift)];
   double hi=High[iHighest(NULL,0,MODE_HIGH,Count,Shift)];
avatar

  35  AM2 Сообщений: 16285 - Андрей

  • 7 сентября 2019, 15:58
+
0
Супер
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 7 сентября 2019, 19:29
+
+1
Добавил возможность Быстрого Теста по ценам открытия.

   if (IsTesting()&&FastTest==true)
   {
   rm1 = Low[iLowest(NULL,TF2,MODE_OPEN,MA1,1)];
   pm1 = High[iHighest(NULL,TF2,MODE_OPEN,MA1,1)]; 
   
   rm2 = Low[iLowest(NULL,TF2,MODE_OPEN,MA1,2)];
   pm2 = High[iHighest(NULL,TF2,MODE_OPEN,MA1,2)];
   }
   else
   {
   rm1 = Low[iLowest(NULL,TF2,MODE_LOW,MA1,1)];
   pm1 = High[iHighest(NULL,TF2,MODE_HIGH,MA1,1)]; 
   
   rm2 = Low[iLowest(NULL,TF2,MODE_LOW,MA1,2)];
   pm2 = High[iHighest(NULL,TF2,MODE_HIGH,MA1,2)];
   }
  

Если есть ошибка, говори.
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 7 сентября 2019, 20:33

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