индикаток + советник

msalist

Новичок форума
Народ подскажите пожалуйста !

Каким образом ..можно брать переменные советником из индикатора ???
 

Чингачгук

Активный участник
Сделать в индикаторе нужные переменные глобальными. Смотрите раздел справки глобальные переменные!
 

Чингачгук

Активный участник
Да, единственный! Хотя если речь о линиях индикатора, т.е. тайм сериям индикатора, то есть стандартная функция iCustom для вызова пользовательских индикаторов.
 

ale002

::: __,,,^._.^,,,__ :::
Вообще-то можно извернуццо - у индикатора должны быть свободные буферы, в них он может писать значения переменных, советник читать через iCustom. Но штатными средствами оно конечно проще
 

msalist

Новичок форума
Вообще-то можно извернуццо - у индикатора должны быть свободные буферы, в них он может писать значения переменных, советник читать через iCustom. Но штатными средствами оно конечно проще

Так вот что то как то не понятно

Глобальную переменную эту тогда становится видно всем окнам с советниками к которым индикатор не был присоединен . как быть ..должно же быть какое то различие ..почему видно всем программам .?
 

Чингачгук

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

ale002

::: __,,,^._.^,,,__ :::
Не въехал - тогда, это когда? Когда через буфер или когда через глобальные переменные?

Если надо чтобы было видно только "нашим" - через глобальные это можно организовать давая переменным имена, содержащие название инструмента. Или в отдельную переменную помещать код инструмента. Если через буфер - при вызове iCustom можно передавать индикатору параметр, на который он будет отвечать (или нет) помещая (или нет) переменные в буфер
 

msalist

Новичок форума
Не въехал - тогда, это когда? Когда через буфер или когда через глобальные переменные?

Если надо чтобы было видно только "нашим" - через глобальные это можно организовать давая переменным имена, содержащие название инструмента. Или в отдельную переменную помещать код инструмента. Если через буфер - при вызове iCustom можно передавать индикатору параметр, на который он будет отвечать (или нет) помещая (или нет) переменные в буфер


Вот например

В индикаторе пишем

GlobalVariableSet("P_IND",666);

В советнике пишем

int p = GlobalVariableGet("P_IND"); Comment(p);

Открываем окно USD/EUR , тащим на него индикатор и советник , все отлично в окне появляется 666 комментарий.

Открываем окно EUR/USD тащим только советник ..все отлично в окне появляется 666 комментарий ... хотя индикатор не трогали
 

Чингачгук

Активный участник
Так они работают! Я писал, что они сохраняются даже после закрытия терминала, и будут сохраняться даже если убрать индикатор с графика. Для удаления глобальной переменной существует специальная функция. Можно организовать взаимодействие через файл, но эффект будет такой же, сколько советников не запусти, все будут иметь доступ к файлу.
 

msalist

Новичок форума
Так они работают! Я писал, что они сохраняются даже после закрытия терминала, и будут сохраняться даже если убрать индикатор с графика. Для удаления глобальной переменной существует специальная функция. Можно организовать взаимодействие через файл, но эффект будет такой же, сколько советников не запусти, все будут иметь доступ к файлу.


Хммм ..чета надо думать ..как то уникальность делать ..переменные отличать чтоли как то
 

Чингачгук

Активный участник
Здесь все просто добавить к имени переменной символ и таймфрейм. А в свойства советника добавить переменные для символа и таймфрейма.
 
Верх