Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй счет удобным способом. Здесь их 4!
FG-01
48
FG-01 2013.11.22 17:55 

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

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

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

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

Vadim Zhunko
5226
Vadim Zhunko 2013.11.22 19:51  
По системному дескриптору окна можно идентифицировать.
Dmitry Fedoseev
42887
Dmitry Fedoseev 2013.11.22 19:59  

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

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

Алексей Тарабанов
7190
Алексей Тарабанов 2013.11.22 20:14  
Integer:

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

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


Уверен?
Vadim Zhunko
5226
Vadim Zhunko 2013.11.22 20:18  
Integer:

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

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

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


А если поразмыслить?
Dmitry Fedoseev
42887
Dmitry Fedoseev 2013.11.22 20:38  
tara:

Уверен?


апсалютно
FG-01
48
FG-01 2013.11.22 21:49  
Integer:

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

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


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

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

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

Vitalie Postolache
12120
Vitalie Postolache 2013.11.22 21:55  
FG-01:


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

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

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


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

Dmitry Fedoseev
42887
Dmitry Fedoseev 2013.11.22 22:01  

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

FG-01
48
FG-01 2013.11.22 22:07  
Спасибо. скажите это надо делать в init() или не обязательно?
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий