[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 282

 

Господа, научите взять из индикатора (FX5_Divergence_V2.1.mq4) в советник сигнал дивергенции.

Буферы 2 и 3 индикатора выдают EMPTY_VALUE.

 
А есть ли у кого сборщик тиков который сохраняет тиковую историю таким образом : время прихода тика, аск, бид? в кодбазе сборщик без аска есть только.
 
Sergey_Rogozin:

Господа, научите взять из индикатора (FX5_Divergence_V2.1.mq4) в советник сигнал дивергенции.

Буферы 2 и 3 индикатора выдают EMPTY_VALUE.

Я вам скрипт написал? В нём всё есть. Вместо вывода сообщения Alert`ом впишите свою обработку. Можете вместо шести знаков после запятой в DoubleToString() вписать восемь, если у вас он ноли выводит. В любом случае - сигналы есть и скрипт их считывает. Приложите немного ума и старания.
 
artmedia70:
Я вам скрипт написал? В нём всё есть. Вместо вывода сообщения Alert`ом впишите свою обработку. Можете вместо шести знаков после запятой в DoubleToString() вписать восемь, если у вас он ноли выводит. В любом случае - сигналы есть и скрипт их считывает. Приложите немного ума и старания.
От уж упрямый человек. Давай, я еще раз ему на пальцах объясню.
Пустые значения буферов со стрелками забиты вместо нулей значениями EMPTY_VALUE, численно равными 2147483647. Там, где стоят стрелки, значения другие, например, 0,000031.
Надо программно отфильтровать "пустые" значения, поскольку при сравнении они выглядят, как число 2147483647.
Например, я делаю так, работает. Кто поумней, может сделать красивее.

double buy=iCustom(NULL,0,"FX5_Divergence_V2.1",2,CountBar);
// отфильтровывает значения EMPTY_VALUE, заменяя их на 0 
if(buy==EMPTY_VALUE) buy=0.0;
// теперь значения buy могут быть либо 0, либо значением стрелки, например, 0,000032
 
granit77:
От уж упрямый человек. Давай, я еще раз ему на пальцах объясню.
Пустые значения буферов со стрелками забиты вместо нулей значениями EMPTY_VALUE, численно равными 2147483647. Там, где стоят стрелки, значения другие, например, 0,000031.
Надо программно отфильтровать "пустые" значения, поскольку при сравнении они выглядят, как число 2147483647.
Например, я делаю так, работает. Кто поумней, может сделать красивее.

Теперь человек будет писать, что буферы 2 и 3 выводят одни нули только :)))

Блин, такая простая логика: если значение буфера НЕ равно EMPTY_VALUE, значит на этом баре есть стрелка и, соответственно сигнал.
А уж как представить это пустое значение и с чем сравнивать - дело вкуса каждого.

 
artmedia70:

Всё-то, блин, у вас не слава Богу...


На остров!!! :)

а у меня интересно пишет те самые цифры (через советник), а через окно Данных показывает EMPTY_VALUE! Как то можно это исправить?


 
granit77:
От уж упрямый человек. Давай, я еще раз ему на пальцах объясню.
Пустые значения буферов со стрелками забиты вместо нулей значениями EMPTY_VALUE, численно равными 2147483647. Там, где стоят стрелки, значения другие, например, 0,000031.
Надо программно отфильтровать "пустые" значения, поскольку при сравнении они выглядят, как число 2147483647.
Например, я делаю так, работает. Кто поумней, может сделать красивее.



понял примерно

 

То artmedia70 .

Я, действительно, не смог воспользоваться скриптом. Пробовал делать почти так, как пишет granit77, и тоже не получилось.

if(buy==EMPTY_VALUE) buy=0.0; - в результате висит постоянно "0". От индикатора идут Aлерты, а подключенный к советнику Алерт не срабатывает.

Ладно, Спасибо, буду дальше "мучиться" ...)))

 
Sergey_Rogozin:

То artmedia70 .

Я, действительно, не смог воспользоваться скриптом. Пробовал делать почти так, как пишет granit77, и тоже не получилось.

if(buy==EMPTY_VALUE) buy=0.0; - в результате висит постоянно "0". От индикатора идут Aлерты, а подключенный к советнику Алерт не срабатывает.

Ладно, Спасибо, буду дальше "мучиться" ...)))

ты уже не один - мучаешься, я уже правлю индикатор:)))
 
todem:

а у меня интересно пишет те самые цифры (через советник), а через окно Данных показывает EMPTY_VALUE! Как то можно это исправить?

Вы когда выводите значения буферов на экран, чем это делаете? Всё-равно же выводятся числовые данные. Вот если вы захотите выводить пустую строку, либо надпись "Пустое значение" или "EMPTY_VALUE", то и выводите их как стринговые переменные.
Т.е. :
string val;
if (значение буфера==EMPTY_VALUE) val="EMPTY_VALUE";
Если же if (значение буфера!=EMPTY_VALUE) val=DoubleToString(значение буфера, 8);
и выводите на экран не значение буфера, а значение переменной val.
Например: Comment ("Значение = ", val);
Причина обращения: