Как сравнить цену закрытия бара со значением индикатора

 

Не могу понять, почему не отрабатывает условие(выделено желтым)

Функция должна выполнять следующее:

если есть сигнал на покупку - зеленая линия (условно) и цена закрылась ниже уровня сигнальной линии - покупать..

цена закрытия сравнивается со значением индикатора. Индикатор семафор (2-х цветная линия), 2 индикаторных буфера, 1 графическое построение.

bool BuySignal()

  {
   double   close = iClose(NULL,PERIOD_CURRENT,1);
   double Sig_Up[];                 // динамический массив для хранения значений индикатора на покупку для каждого бара
   double Sig_Down[];               // динамический массив для хранения значений индикатора на продажу для каждого бара
   ArraySetAsSeries (Sig_Up,true);   
   ArraySetAsSeries (Sig_Down,true); 
   ResetLastError();
      
   if(CopyBuffer(Handle,0,1,2,Sig_Up)==2 && CopyBuffer(Handle,1,1,2,Sig_Down)==2 )
     {
        return((Sig_Up[1] < Sig_Down[1] && Sig_Up[0] > Sig_Down[0]) &&(close < Sig_Up[1]) );  // это условие не отрабатывает..
     } 
   else
     {
      Print(__FUNCTION__, ": Ошибка копирования буферов индикатора. Код ошибки#", GetLastError());
     }
   return(false);
  }
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Объект динамического массива - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Файлы:
Screenshot_2.jpg  132 kb
 
Распечатайте значения Sig_Up и Sig_Down, все сразу станет понятно. Скорее всего в Sig_Up и Sig_Down одновременно валидные значения бывают только при смене цвета линии, а во всех остальных случаях только один буфер валидный, другой - невалидный (там 0 или EMPTY_VALUE, нужно смотреть код индикатора). Поэтому не выполняется совершенно другое условие, а не то, на которое Вы грешите.
 
Ihor Herasko:
Распечатайте значения Sig_Up и Sig_Down, все сразу станет понятно. Скорее всего в Sig_Up и Sig_Down одновременно валидные значения бывают только при смене цвета линии, а во всех остальных случаях только один буфер валидный, другой - невалидный (там 0 или EMPTY_VALUE, нужно смотреть код индикатора). Поэтому не выполняется совершенно другое условие, а не то, на которое Вы грешите.

Распринтовку сделал. 

1

Первая часть условия отдельно от второй работает, вместе - нет.

Такие данные по второму условию, что не так - не пойму.. 

2

 
{ "results": [ {"date":"1609145638","module":"mql5.com.ru.articles","id":"2_8807","info":{"url":"https://www.mql5.com/ru/articles/8807","author_name":"Maxim Romanov","author_login":"223231","title":"Самоадаптирующийся алгоритм (Часть III): Отказываемся от оптимизации","avatar60x60":"https://c.mql5.com/2/41/50_percents__3.png","platform":"MetaTrader 5","category":"Трейдинг"},"text":"Введение Перед началом изучения данной статьи рекомендую ознакомиться со второй статьей серии ' Разработка самоадаптирующегося алгоритма (Часть II): Повышение эффективности '. Методика из текущей статьи будет существенно отличаться от всего рассмотренного ранее, но для понимания проблемы знакомство с предыдущими статьями серии будет полезным. Анализ недостатков Как и в прошлый раз, начну с анализа недостатков предыдущей успешной версии. В процессе анализа были выявлены следующие недостатки: Сигнал на открытие и закрытие позиций генерируется на основе анализа свечей. Свечи имеют нестабильный размер, некоторые свечи большие, а некоторые маленькие. Часто возникают ситуации, когда позиции открылись на основании перевеса падающих или растущих свечей, затем падающих и растущих свечей стало поровну, но прибыль по открытым позициям все еще отрицательная. Возникает вопрос: закрывать позиции или ждать, пока будет получена прибыль. Если закрывать, то весь смысл торговли сводится на нет,..."}, {"date":"1520527948","module":"mql5.com.ru.forum","id":"3_221552_6756067","info":{"url":"https://www.mql5.com/ru/forum/221552/6756067#comment_6756067","author_name":"Yuriy Asaulenko","author_login":"YUBA","title":"От теории к практике","avatar60x60":"https://c.mql5.com/avatar/2018/3/5AB0EFAF-DA65.png"},"text":"Это я все понимаю. Понять, что делает А, можно только на размеченном индикаторами графике. На мой взгляд - чушь несусветная, но статистически, наверное, как-то работать будет. У А сама идея нормальная и далеко не новая, которую он, кстати, подцепил на форуме. Но вот реализация оставляет желать лучшего. Вообще-то, я бы предпочел, чтобы А вообще не было - оч. много говорит."}, {"date":"1427367292","module":"mql5.com.ru.forum","id":"3_38821_1459807","info":{"url":"https://www.mql5.com/ru/forum/38821/1459807#comment_1459807","author_name":"Anatoli Kazharski","author_login":"tol64","title":"FOREX - Тенденции, прогнозы и следствия 2015","avatar60x60":"https://c.mql5.com/avatar/2018/5/5AE98DBA-93EB.png"},"text":"Ну так постигай же, кто тебе не даёт? По крайней мере направление уже дали. Этого уже много. )) Если думаешь, что в любом другом деле всё иначе, то попробуй заняться чем-то другим и сам всё увидишь. Везде нужно очень много работать, чтобы получить достойный результат. И никто нигде ничего на блюдечке не подносит. //--- Кстати, вопрос который ты задал на другом форуме лишь ещё раз показывает насколько ты ленив. )) Почитай ветку и подобные ветки там же. Там столько всего изложено по этой теме, что даже не знаю, что ещё можно добавить. Там конечно нет результатов исследований, которые есть у меня, но уж извините. )))"} ], "error":"ok" }
Причина обращения: