Как создать глобальные переменные для каждого окна.

 

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

Если этот советник добавить еще в одно окно, то данные уже не корректны, так работа с одними и те ми же переменные.

Хотелось бы создавать глобальные переменные для каждого окна индивидуальные, а при выгрузке советника удалять.

Спасибо за помощь.

 
По системному дескриптору окна можно идентифицировать.
 

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

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

 
Integer:

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

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


Уверен?
 
Integer:

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

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

Каков вопрос - таков ответ. Написано же "удалять после выгрузки советника", "для окна советника". Стало быть, если форсмажор, то не важен дескриптор. Будет новый. Особенностей логики и кода нам не известны, чтобы предлагать что-нибудь более сложное.
 
Zhunko:
Каков вопрос - таков ответ. Написано же "удалять после выгрузки советника", "для окна советника". Стало быть, если форсмажор, то не важен дескриптор. Будет новый. Особенностей логики и кода нам не известны, чтобы предлагать что-нибудь более сложное.


А если поразмыслить?
 
tara:

Уверен?


апсалютно
 
Integer:

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

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


Спасибо большое. Извините за не корректно заданный вопрос, не судите строго, я только три дня занимаюсь.

Этот вариант я рассматривал, но не понял как можно к переменной идентификатор приписать, она же строковая. Ну в общем я не нашел. Если не затруднит. подскажите ...

И на тестере тоже. Сей час получается если запускаешь на тестере, то тот эксперт что на графике с ума сходит... :)

 
FG-01:


Спасибо большое. Извините за не корректно заданный вопрос, не судите строго, я только три дня занимаюсь.

Этот вариант я рассматривал, но не понял как можно к переменной идентификатор приписать, она же строковая. Ну в общем я не нашел. Если не затруднит. подскажите ...

И на тестере тоже. Сей час получается если запускаешь на тестере, то тот эксперт что на графике с ума сходит... :)


if(IsTesting()) string tst="test"; //формируем суффикс имени ГП чтобы можно было отличить тестерные от реальных
else tst="";
int value=Digits; //значение, передаваемое в глобальную переменную
string gvname=StringConcatenate(Symbol(),magik,TimeToStr(TimeCurrent()),tst); //формируем имя ГП из чего там нужно и не нужно, хотя время разное бывает...
GlobalVariableSet(gvname,value); //создаём саму переменную 

 

Не к переменной, а к имени переменной. Имя глабальной переменной это сторока, вот и формируем это имя как хотим.

 
Спасибо. скажите это надо делать в init() или не обязательно?