Передать одно значение из Custom индикатора в Советник. - страница 2

 
Так какое значение нужно? Индикатор его генерирует, или просто высчитывает по пяти буферам и рисует объекты?
 


Если в этом смысле, то я сам руками его задаю в коде индюка, например,

double myValue = 1;

и меняю это значение на другое. Считайте что это флаг на бай и селл :-))

 
Так если индюк Ваш, добавьте в него шестую линию (со значениями -1, 0 или 1), а в советнике проверяйте значение iCustom(....,5,0). Зачем в дебри лезть.
 
grell >>:
Зачем в дебри лезть.

а так намного интереснее жить. чтоб не скучно себе и другим. покой нам только снится

 
grell писал(а) >>
Так если индюк Ваш, добавьте в него шестую линию (со значениями -1, 0 или 1), а в советнике проверяйте значение iCustom(....,5,0). Зачем в дебри лезть.


Если правильно понял вашу идею, надо добавить в индюке SetIndexBuffer(5, myValue); и это myValue уже в Советнике считать через iCustom() ?

Например, так выглядит код Советника:

double myValue = iCustom( ..., mode, 0); где mode = 5 ? Правильно понял ?


С уважением, Алексей
 
Именно...
 
allon >>:

Привет...

1. Мне надо чтобы при возникновении сигнала в индюке, одно значение передавалось из индюка в советник и тот уже работал с ордерами.

2. На форумах почему-то обсуждается ситуация, когда советник вызывает индюк. А мне надо наоборот - при возникновении события в индюке передать значение в советник.

1. Сигналы индикатора, они же значения, они же - линии индикатора, хранятся в индикаторных буферах. Есть еще графические объекты, но их мы трогать не будем, это уже следующий уровень понимания. Индикатор ничего никуда не передает, он считает, заносит результаты в буферы и рисует линии по значениям буферов. Торговать индикатор не может.

Советник может торговать в паре с индикатором, используя его данные. Для этого советник может получить значения из любого индикаторного буфера с помощью функции iCustom и занести это значение в переменную советника соответствующего типа. Например: в переменной Var1 мы получим значение первого буфера индикатора Oracle.mq4 на нулевом баре.

double Var1=iCustom(NULL,0,"Oracle",period,maPeriod,shift,1,0);

Таким образом мы можем иметь в советнике "копии" всех восьми (0...7) буферов индикатора в соответствующих переменных.

2. Индикатор не вызывает советник. Это советник на каждом тике обновляет данные iCustom и значения переменных. То есть, в советнике всегда есть текущие данные буферов индикатора, и что-то специально вызывать или передавать нет необходимости.

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

P.S.

Извините за занудство, болею, скучно мне...

 
allon >>:

Пробовал использовать:
1. Глобальные переменные. Не работает. Не передают. Может спец. настройки какие-то нужно сделать ?

Чего-то ты неправильно делал с глобальными переменными. Они для того и существуют, чтоб между программами информацию передавать.
Никаких проблем с их использованием нет, если правильно использовать.
Что именно у тебя не получилось? Давай выкладывай кусок кода. Разберём. И всё получится.
 
MetaDriver писал(а) >>
Чего-то ты неправильно делал с глобальными переменными. Они для того и существуют, чтоб между программами информацию передавать.
Никаких проблем с их использованием нет, если правильно использовать.
Что именно у тебя не получилось? Давай выкладывай кусок кода. Разберём. И всё получится.


Код был очень и очень простой:

в индюке пишу: GlobalVariableSet("myValue", 1);

в Советнике пишу:

double myValue = GlobalVariableGet("myValue");
MessageBox("myValue="+myValue); //вывод для проверки

И тишина.....никаких месаг нету :))


 
allon >>:


Код был очень и очень простой:

в индюке пишу: GlobalVariableSet("myValue", 1);

в Советнике пишу:

double myValue = GlobalVariableGet("myValue");
MessageBox("myValue="+myValue); //вывод для проверки

И тишина.....никаких месаг нету :))


Без контекста трудно понять загвоздку.

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

Если МессаджБокс не вызывается - значит этот кусок кода вообще не выполняется.

А поширше кусок кода вырезать не слишком секретно будет? ;)

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