Ребят, кому не трудно подскажите по советнику.

 

Как сравнить высоту свечей на графике (предыдущую с последней)?

Буду очень благодарен за помощь!

 

Свечи в МТ4 перечисляются в обратном порядке - текущая 0, предыдущая 1 и т.д. Так как значения текущей свечи неопределённые пока она не закрылась, надо начинать смотреть с предыдущей.

Код примерно такой:

if(High[2]>High[1] && Low[2]>Low[1] && Open[2]>Open[1] && Close[2]<Close[1] && (High[2]-Low[2]>High[1]-Low[1]))
 Alert("Свеча 2 больше свечи 1");
 
evillive:

Свеча 1 не "больше" свечи 2, все её значения больше аналогичных у свечи 2, а так она только выше.

Код примерно такой:

Вставил Ваш код выдаёт ошибку - 'n' variable not definet?
 
Исправил, см. выше. N используется в цикле и естественно переменную надо сначала инициализировать, это само собой разумеется и должно быть уже на уровне подсознательного.
 
evillive:
Исправил, см. выше. N используется в цикле и естественно переменную надо сначала инициализировать, это само собой разумеется и должно быть уже на уровне подсознательного.


Спасибо большое, но тут маленький нюанс) переменные я назвал (int A = 1; и int B = 2;) но эта функция не работает, попробую предположить, что эти переменные не обозначены как "свечи".

Как этот нюанс исправить.)

 
А что за переменные и куда они приспособлены? Код в сюда...
 
Vizi_Den:


Спасибо большое, но тут маленький нюанс) переменные я назвал (int A = 1; и int B = 2;) но эта функция не работает, попробую предположить, что эти переменные не обозначены как "свечи".

Как этот нюанс исправить.)

Так подставьте свои А и В вместо 1 и 2, и будут они сидеть на свече, только каждая на своей, комфортно! Только зачем это?
 
borilunad:
Так подставьте свои А и В вместо 1 и 2, и будут они сидеть на свече, только каждая на своей, комфортно! Только зачем это?

Поставил, сразу как только написал переменные, но не стабильно определяет высоту свечи!
 
evillive:

Свечи в МТ4 перечисляются в обратном порядке - текущая 0, предыдущая 1 и т.д. Так как значения текущей свечи неопределённые пока она не закрылась, надо начинать смотреть с предыдущей.

Код примерно такой:


Ещё лучше будет если Вы расшифруете этот код, обучаюсь 3-ий день языку MQL4 пока всё это сложно понять.

if(High[2]>High[1] && Low[2]>Low[1] && Open[2]>Open[1] && Close[2]<Close[1] && (High[2]-Low[2]>High[1]-Low[1]))

 
Vizi_Den:


Ещё лучше будет если Вы расшифруете этот код, обучаюсь 3-ий день языку MQL4 пока всё это сложно понять.

if(High[2]>High[1] && Low[2]>Low[1] && Open[2]>Open[1] && Close[2]<Close[1] && (High[2]-Low[2]>High[1]-Low[1]))


Всё просто: сравниваются все значения предыдущей (1) и пред-предыдущей (2) свеч, а также их высота (High[2]-Low[2]>High[1]-Low[1]). Если у свечи (2) все значения больше чем у свечи (1) то выполняется действие дальше по коду (в данном случае алерт), если нет - действие игнорируем и выполняем код расположенный ниже.

на картинке нумерация свечей для наглядности. №0 - самая свежая.

 
evillive:

Всё просто: сравниваются все значения предыдущей (1) и пред-предыдущей (2) свеч, а также их высота (High[2]-Low[2]>High[1]-Low[1]). Если у свечи (2) все значения больше чем у свечи (1) то выполняется действие дальше по коду (в данном случае алерт), если нет - действие игнорируем и выполняем код расположенный ниже.

на картинке нумерация свечей для наглядности. №0 - самая свежая.

Я поставил значение 0 для последней свечи и 1 для предыдущей, естественно занёс это в переменные, всё в коде подправил и вот как он считает (не определённо) - получается если свеча 1 выше свечи 0, то выдаёт сообщение (1>0), и если свеча 0 ещё ниже опустится, то выдаёт что показано на скрине почему он путается?. Я так думаю он сравнивает высоту именно 2 свечей, а это совсем не то что нужно. Надо чтобы 2 свечи сравнивались по месту нахождения на графике.



Причина обращения: