Вопрос по mql4

sergh67

Активный участник
Надеюсь сильно не кто не обижен на меня, - если вдруг что?
Вопрос такой.
Допустим я поучил из некоего индикатора iCUSTOM.
PHP:
A=iCustom(NULL,1440,"RTM",0,0,0,i);

Далее я получаю визуальный сигнал:
PHP:
if(A > A+1){SIG1440_direct="l";SIG1440_colordirect=Lime;}
       if(A > A+1){SIG1440_text="D1";SIG1440_colortext=DarkGoldenrod;}
Как видите это не работает хотя светится.
Если бы я сделал запись такого вида, то все прекрасно.
PHP:
A[i]=iCustom(NULL,1440,"RTM",0,0,0,i);

PHP:
if(A [0]> A[]0+1){SIG1440_direct="l";SIG1440_colordirect=Lime;}
       if(A [0]> A[]0+1){SIG1440_text="D1";SIG1440_colortext=DarkGoldenrod;}

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

Ugar

Гуру форума
Выражение if(A > A+1) всегда ложно, ибо в данном случае А+1 всегда больше А на еденицу.
Наверно хочешь сравнить индикатор на соседних барах? Вот так можно.
A=iCustom(NULL,1440,"RTM",0,0,0,0);
A1=iCustom(NULL,1440,"RTM",0,0,0,1);
if(A > A1)
А если надо много сравнений используй массивы, не обязательно они должны быть буферами. Это буферов в индюке может быть не более 8, а массивов можно сколько хочешь объявить. А можно двухмерный массив использовать
А [10][20]; вот например массив с 10 ячейками в ряду и 20 рядами.
 

sergh67

Активный участник
Массивы для меня к сожалению закрытая тема. Я еще не разу с ними дела не имел.
Вот еще вариант пробовал.
Брал основную линию и раскраску + 2 и сравнивал их.
В первом сравнении должен был высветиться зеленый, во втором случае красный. Но тоже путем сравнения нечего не получается. Хотя бы на основную линию, но нужно ставить буфер.
Вообщем видимо так и придется как есть 10 индюков друг на друга накладывать, потому как с массивом я пока слаб разобраться.
 

sergh67

Активный участник
Кстати у вас нет никакого шаблона с массивами похожими на мой случай? Потому как с нуля в этом лесу дремучем мне трудно будет разобраться, что делать и как применить массивы в моем случае. У меня раскладка по tf если что. 21-28 буферов надо вывести.
 

sergh67

Активный участник
Выражение if(A > A+1) всегда ложно, ибо в данном случае А+1 всегда больше А на еденицу.
Наверно хочешь сравнить индикатор на соседних барах? Вот так можно.
A=iCustom(NULL,1440,"RTM",0,0,0,0);
A1=iCustom(NULL,1440,"RTM",0,0,0,1);
if(A > A1)
А если надо много сравнений используй массивы, не обязательно они должны быть буферами. Это буферов в индюке может быть не более 8, а массивов можно сколько хочешь объявить. А можно двухмерный массив использовать
А [10][20]; вот например массив с 10 ячейками в ряду и 20 рядами.

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

sergh67

Активный участник
Не знаю точно, но поковырявшись, у меня что-то вроде бы стало получаться с массивами! Попробую дальше.
 

sergh67

Активный участник
Я не пойму что же все таки получится? Я могу вызвать через iCUSNOM хоть сто переменных.
PHP:
A=iCustom(NULL,1440,"RTM",0,0,0,i);
A_red=iCustom(NULL,1440,"RTM",0,0,1,i);
A_lime=iCustom(NULL,1440,"RTM",0,0,2,i);
Я могу их разбить по цветовому сигналу
PHP:
if(A== A_red){SIG1440_direct="l";SIG1440_colordirect=Lime;}
       if(A == A_lime){SIG1440_text="D1";SIG1440_colortext=DarkGoldenrod;}
Все работает , но в пределе того TF на котором я нахожусь, но стоит мне изменить TF как идет сбой сигналов. Что делать?

Через массив я могу создать те же переменные которые могу вызвать через iCUSTOM. Но на переменной не работает TF. Что надо сделать чтобы сбоев на TF не было?
 
Последнее редактирование:

sergh67

Активный участник
А куда делись бывалые программисты? Где передовое красное знамя Vik со своим мучебником? Уважаемые знатоки - Вы где?
 

sergh67

Активный участник
Господа программисты не напрягайтесь. Переменные прекрасно выводя сигнал. Я просто допустил ошибку. Хороших вам выходных. Отдыхайте спокойно и расслабляйтесь.
 
Верх