Скачать MetaTrader 5

Как, гарантировано, получить сигнал от рисующего индикатора?

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

Здравствуйте. Индикатор может перерисовывать больше шести баров.

Изменяться цвет линии может на третьем или на пятом баре, нестабильный он.

Как узнать, что сейчас цвет изменился, неважно на каком баре?

      sell_1=NormalizeDouble(iCustom(Symbol(),0,"mymy",1,1),Digits);
      sell_2=NormalizeDouble(iCustom(Symbol(),0,"mymy",1,2),Digits);
      if(sell_1!=0.0 && sell_1_2==0.0)
      {
       open_pos(magic);
      }
Vitalii Ananev
12021
Vitalii Ananev  
lil_lil:

Здравствуйте. Индикатор может перерисовывать больше шести баров.

Изменяться цвет линии может на третьем или на пятом баре, нестабильный он.

Как узнать, что сейчас цвет изменился, неважно на каком баре?

В вашем кусочке кода слишком мало информации, что бы понять логику работы индикатора.

lil_lil
184
lil_lil  
Vitalii Ananev:

В вашем кусочке кода слишком мало информации, что бы понять логику работы индикатора.

Кода индикатора нет. Этот кусочек - вызов индикатора и открытие позиции по сигналу на первом баре. Позиции открываются, но бывает, проверялось на визуализации, что линия индикатора зелёная на первом баре, цена, быстро вниз и красной становится линия на 3, 4 или 6 баров назад, разумеется такую перемену цвета мой код пропускает. Как, в текущий момент, узнать что цвет изменился?

Sergey Savinkin
1810
Sergey Savinkin  
lil_lil:

Кода индикатора нет. Этот кусочек - вызов индикатора и открытие позиции по сигналу на первом баре. Позиции открываются, но бывает, проверялось на визуализации, что линия индикатора зелёная на первом баре, цена, быстро вниз и красной становится линия на 3, 4 или 6 баров назад, разумеется такую перемену цвета мой код пропускает. Как, в текущий момент, узнать что цвет изменился?

Нужно знать, какой буфер у индикатора отвечает за цвет. Просто вызовите советником побольше буферов. Поставьте вывод сообщений и отследите, как смена цвета повлияла на смену значения какого буфера.

Vitalii Ananev
12021
Vitalii Ananev  
lil_lil:

Кода индикатора нет. Этот кусочек - вызов индикатора и открытие позиции по сигналу на первом баре. Позиции открываются, но бывает, проверялось на визуализации, что линия индикатора зелёная на первом баре, цена, быстро вниз и красной становится линия на 3, 4 или 6 баров назад, разумеется такую перемену цвета мой код пропускает. Как, в текущий момент, узнать что цвет изменился?

Попробуйте проанализировать показания индикатора. Запустите этот индикатор в тестере стратегий в режиме визуализации и метод моделирования  "По ценам открытия ..."  Откройте "окно данных" (Ctrl+D) и в этом окне можно увидеть какие данные выдают все индикаторные буферы. В этом же окне можно узнать кол-во индикаторных буферов. Установите тестер на паузу и по шагам  (клавиша F12) смотрите как меняются значения буферов этого индикатора и следите за сменой цвета. 

...

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

Igor Makanu
5356
Igor Makanu  
lil_lil:

Как узнать, что сейчас цвет изменился, неважно на каком баре?

примерно так должно быть:

static double last_ind[8,100];
//+------------------------------------------------------------------+
void OnTick()
  {
   double ind[8,100];
   for(int j=0;j<100;j++)
     {
      for(int i=0;i<8;i++)
        {
         ind[i,1]=GetIndBuffer(i,j);
        }
     }
   if(ArrayCompare(last_ind,ind)==0) Print("Нет изменений в индикаторе!!!");
   else
     {
      ArrayCopy(last_ind,ind);
      Print("Индикатор перерисовался!!!");
     }
  }
//+------------------------------------------------------------------+
double GetIndBuffer(int nbuff_,int nbar_)
  {
   return(iCustom(NULL,PERIOD_CURRENT,"name",nbuff_,nbar_));
  }  
//+------------------------------------------------------------------+

но нужно проверять, не люблю встроенные функции mql при работе с массивами, всякое может быть (я про ArrayCompare() и  ArrayCopy()) я бы их переписал бы для этого случая

lil_lil
184
lil_lil  
Vitalii Ananev:

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

Да, изменить цвет может  на шестом баре, но сигнал получить нужно.

Sergey Savinkin:

Нужно знать, какой буфер у индикатора отвечает за цвет.

Буфер с индексом 1 - красный цвет вот это условие из приведённого кода: если на первом баре красный есть и на втором красного нет

if(sell_1!=0.0 && sell_1_2==0.0)

продаю. Как сказал раньше, бывает цвет меняется сразу на 5 баров.

Чтобы открыть позицию по такому сигналу нужно записать условие: если на пятом баре красный есть на шестом нет, продаю. Но это не правильно, на ближних барах цвет тоже мог меняться

lil_lil
184
lil_lil  
Igor Makanu:

примерно так должно быть:

но нужно проверять, не люблю встроенные функции mql при работе с массивами, всякое может быть (я про ArrayCompare() и  ArrayCopy()) я бы их переписал бы для этого случая

Print на каждом тике: "Индикатор перерисовался!!!"

Igor Makanu
5356
Igor Makanu  
lil_lil:

Print на каждом тике: "Индикатор перерисовался!!!"

наверное нужно контроль открытия нового бара сделать - или не копировать нулевой бар

Alexander Ivanov
18251
Alexander Ivanov  

Привет!

Тема пахнет троллингом .

"КАК ГАРАНТИРОВАННО .... " и дальше уже можно забить на эту тему , гы гы гы...

типа код поменял и вот вам грааль, который даст "гарантированные" сигналы.... 



а некоторые даже пытаются ему советовать ... гы гы гы ..

lil_lil
184
lil_lil  
Vitalii Ananev:смотрите как меняются значения буферов этого индикатора и следите за сменой цвета. 

Линия красная,буфер №1 на каждом баре заполнен. Цена, быстро вверх, на пяти барах стал пустой буфер. Цвет, на пяти барах стал зелёный. Не обязательно 5. Бывает разное количество баров. Как только эти буферы стали пустыми  нужен сигнал. Как его получить?

Igor Makanu:

наверное нужно контроль открытия нового бара сделать - или не копировать нулевой бар

Сделал пересчёт на новом баре, не копирую нулевой бар. Тот же принт на каждом баре, хотя цвет не измиеялся Линия постоянно движется, но значение в первом буфере не изменяется, либо нуль либо цена. Цена в буфере, когда линия красная.

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