Скачать MetaTrader 5

Проблема использования глобальной переменной терминала.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью. Получи вознаграждение!
khorosh
8192
khorosh 2015.06.01 16:50 

В эксперте используется глобальная переменная терминала. Эксперт стоит на реальном счёте. Имеется необходимость в периодической оптимизации и тестирования эксперта в тестере без остановки его работы на реальном счёт. Как можно избежать неприятные последствия связанные с изменением значения такой переменной в процессе оптимизации или тестирования, так как такое изменение обязательно сказывается на работе эксперта  на реальном счёте. Какие могут быть варианты?

Сам пока придумал такой вариант: - использовать при работе на реале и при тестировании/оптимизации 2 переменных с разными названиями. Может есть более простые варианты? 

TarasBY
1739
TarasBY 2015.06.01 17:15  
khorosh:
В эксперте используется глобальная переменная терминала. Эксперт стоит на реальном счёте. Имеется необходимость в периодической оптимизации и тестирования эксперта в тестере без остановки его работы на реальном счёт. Как можно избежать неприятные последствия связанные с изменением значения такой переменной в процессе оптимизации или тестирования, так как такое изменение обязательно сказывается на работе эксперта  на реальном счёте. Какие могут быть варианты?
Имя переменной должно содержать префикс. В моём случае: в тестере test_Имя (определяется при инициализации советника), в on-line только Имя. Я ещё в deinit удаляю все временные (тестерные) переменные.
khorosh
8192
khorosh 2015.06.01 17:26  
TarasBY:
Имя переменной должно содержать префикс. В моём случае: в тестере test_Имя (определяется при инициализации советника), в on-line только Имя. Я ещё в deinit удаляю все временные (тестерные) переменные.
Спасибо. Значит if(IsTesting() || IsOptimization()) - задаём одно имя, в противном случае другое, правильно я понял?
TarasBY
1739
TarasBY 2015.06.01 17:37  
khorosh:
Спасибо. Значит if(isTesting() || isOptimization()) - задаём одно имя, в противном случае другое, правильно я понял?
Да.
elmucon
637
elmucon 2015.06.01 18:07  

у меня так 

LLSell и LLBuy  имена глобальных переменных
int init(){
   Copyright();
   l_digits = Digits;                            l_lotsize = MarketInfo(Symbol(), MODE_LOTSIZE);
   l_minlot = MarketInfo(Symbol(), MODE_MINLOT); l_point   = MarketInfo(Symbol(), MODE_POINT);  
   l_maxlot = MarketInfo(Symbol(), MODE_MAXLOT); l_lotstep = MarketInfo(Symbol(), MODE_LOTSTEP); 
   if(l_minlot >= 1)   {LotDigits = 0;} if(l_minlot == 0.1)  {LotDigits = 1;}
   if(l_minlot == 0.01){LotDigits = 2;} if(l_minlot == 0.001){LotDigits = 3;}
   if(l_digits == 3 || l_digits == 5) 
     {l_MaxSpread = MaxSpread*10;  l_Step = Step*10;  l_SlipPage = SlipPage*10; } 
 else{l_MaxSpread = MaxSpread;     l_Step = Step;     l_SlipPage = SlipPage;    }
   if(IsTesting() || IsOptimization())
     {LLSell = l_name+ ".Optim." + DoubleToString(SellMagic,0);              LLBuy  = l_name+ ".Optim."  + DoubleToString(BuyMagic,0);} 
 else{LLSell = l_name+ "." + Symbol() + "." +DoubleToString(SellMagic,0);    LLBuy  = l_name+ "." + Symbol() + "." +DoubleToString(BuyMagic,0);}
return(INIT_SUCCEEDED);
khorosh
8192
khorosh 2015.06.01 18:36  
elmucon:

у меня так 

Спасибо. Уже сделал.
Mislaid
621
Mislaid 2015.06.01 18:39  
khorosh:

В эксперте используется глобальная переменная терминала. Эксперт стоит на реальном счёте. Имеется необходимость в периодической оптимизации и тестирования эксперта в тестере без остановки его работы на реальном счёт. Как можно избежать неприятные последствия связанные с изменением значения такой переменной в процессе оптимизации или тестирования, так как такое изменение обязательно сказывается на работе эксперта  на реальном счёте. Какие могут быть варианты?

Сам пока придумал такой вариант: - использовать при работе на реале и при тестировании/оптимизации 2 переменных с разными названиями. Может есть более простые варианты? 

Запустить два терминала на одном счете из разных папок с ключем /portable. Естественно, убрав эксперта из терминала, где проводится тестирование.
khorosh
8192
khorosh 2015.06.01 19:00  
Mislaid:
Запустить два терминала на одном счете из разных папок с ключем /portable. Естественно, убрав эксперта из терминала, где проводится тестирование.
Ну это понятно. Не хотелось перегружать нетбук, оперативка маленькая, а программ разных итак много загружено. Есть хороший стационарный комп, но работаю в основном с нетбуком полулёжа. За стационарным компом надо сидеть, а у меня спина болит, когда долго сижу - старость не радость.)
Mislaid
621
Mislaid 2015.06.02 03:46  
khorosh:
Ну это понятно. Не хотелось перегружать нетбук, оперативка маленькая, а программ разных итак много загружено. Есть хороший стационарный комп, но работаю в основном с нетбуком полулёжа. За стационарным компом надо сидеть, а у меня спина болит, когда долго сижу - старость не радость.)

Понимаю. Я себе организовал лежбище со стационарным компом. Разобрал барный шкаф от стенки.  Одну секцию положил перед собой. Две, за спинкой кровати. Получился угловой стол. Высотой , примерно, на 10 см выше матраса кровати.

Сзади поместились аквариум, настольная лампа и принтер. Передо мной монитор и мышь. Клавиатура лежит на системном блоке и достается только при необходимости. Системный блок внутри секции. Часть задней стенки отпилена для вентиляции и доступа. Жена сначала критиковала, но потом втянулась. Второй комп, за которым нужно сидеть, уже три года никто не включал. 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий