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

 

Привет.

Ситуация - есть кастомный индюк. Есть его коды-исходники на mql. Известно, что ордера нельзя выставлять в индюках.
Мне надо чтобы при возникновении сигнала в индюке, одно значение передавалось из индюка в советник и тот уже работал с ордерами.

Мне НЕ надо писать советник и индюк. Мне НАДО понять идею механизма передачи данных между двумя разными модулями - индюком и советником.

Пробовал использовать:

1. Глобальные переменные. Не работает. Не передают. Может спец. настройки какие-то нужно сделать ?
2. Функцию iCustom(...). Мне не подходит так как индюк сложный и понять что за значения возвращаются непонятно. Если кто подскажет как указать в индюке возвращаемое значение через эту функцию, то велком и спасибо.
3. Также не надо вставлять код индюка в код советника.

Осталось попробовать всякие WinAPI, писать-читать файл и прочее...Но не хочется.

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

Задачка в общем-то простая, но с первого пинка не решилась. Что меня удивило.

С уважением, Алексей.

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

Судя по ответам, возможности что-то типа дернуть функцию, которая в модуле Советника из модуля Индюк нету.

Максимально простой пример я уже приводил выше. Вот еще раз:

Есть индюк, который делает вычисления и отрисовывает линии. В момент определенной отрисовки линии мне надо переслать значение типа string (int, double или любое другое) в функцию Советника для выставления ордера.

Это фсё. Куда уж проще и подробнее.

 
И это не ответ. Неужели нет ни одного буфера в индюку, по какой-то же логике он линии чертит. Исходник индюка есть?
 
allon >>:

Судя по ответам, возможности что-то типа дернуть функцию, которая в модуле Советника из модуля Индюк нету.

Максимально простой пример я уже приводил выше. Вот еще раз:

Есть индюк, который делает вычисления и отрисовывает линии. В момент определенной отрисовки линии мне надо переслать значение типа string (int, double или любое другое) в функцию Советника для выставления ордера.

файлы (если у вас только стринги из индюка). и вы про это знаете. зачем чего же тогда спрашиваете?

а советник зацикленный на ожидание появления файла.

 
allon,
вообще-то глобальные должны работать, думаю, вы что-то все же упустили. Есть еще простой способ, непосредственно через оперативную память, я его описывал в статейке пару месяцев назад https://www.mql5.com/ru/articles/19
 
grell писал(а) >>
И это не ответ. Неужели нет ни одного буфера в индюку, по какой-то же логике он линии чертит. Исходник индюка есть?


Работа с буферами конечно есть:

SetIndexBuffer(0, upOsMA);
SetIndexBuffer(1, downOsMA);
SetIndexBuffer(2, val1);
SetIndexBuffer(3, val2);
SetIndexBuffer(4, val3);


но мне то не их значения надо добыть в Советнике :-)) А одно единственное.

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

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

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


С уважением, Алексей

 
alsu писал(а) >>
allon,
вообще-то глобальные должны работать, думаю, вы что-то все же упустили. Есть еще простой способ, непосредственно через оперативную память, я его описывал в статейке пару месяцев назад https://www.mql5.com/ru/articles/19


Очень хорошая статья. Но хотелось бы обойтись без экстрима с компиляцией под С++. Хотелось бы только на MQL делать :-))
 
allon >>:

но мне то не их значения надо добыть в Советнике :-)) А одно единственное.

Какое?

 
allon >>:


Очень хорошая статья. Но хотелось бы обойтись без экстрима с компиляцией под С++. Хотелось бы только на MQL делать :-))

там в прикрепленном файле mql4.zip все уже вложено в откомпилированном виде. И посчитайте комментарии, там люди дельные вещи говорили

 
grell писал(а) >>

Какое?



Работа с буферами конечно есть:

SetIndexBuffer(0, upOsMA);
SetIndexBuffer(1, downOsMA);
SetIndexBuffer(2, val1);
SetIndexBuffer(3, val2);
SetIndexBuffer(4, val3);


но мне то не их значения надо добыть в Советнике :-)) А одно единственное.

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

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

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


С уважением, Алексей