интересное явление с применением в советнике глобальных переменных

 
Как Вы думаете тестер связан с работой советников и индикаторов при одновременной работе??? ДА! в случае совпадения имен глобальных переменных. Я увидел как у меня начали открываться ордера на реале самопроизвольно при тестировании этого же советника который прикреплен к графику. Оказалось что советник применяет значения глобальных переменных тестера и соответственно открывает ордера. Так можно и депозит спустить ненароком. Хорошо что я заметил это и еще в советнике стоит ограничение на один ордер а так бы .......... Возможно эта информация кому то поможет.
 
-star- писал(а) >>
Как Вы думаете тестер связан с работой советников и индикаторов при одновременной работе??? ДА! в случае совпадения имен глобальных переменных. Я увидел как у меня начали открываться ордера на реале самопроизвольно при тестировании этого же советника который прикреплен к графику. Оказалось что советник применяет значения глобальных переменных тестера и соответственно открывает ордера. Так можно и депозит спустить ненароком. Хорошо что я заметил это и еще в советнике стоит ограничение на один ордер а так бы .......... Возможно эта информация кому то поможет.

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

 
FION >>:

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

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

 
-star- писал(а) >>
Как Вы думаете тестер связан с работой советников и индикаторов при одновременной работе??? ДА! в случае совпадения имен глобальных переменных. Я увидел как у меня начали открываться ордера на реале самопроизвольно при тестировании этого же советника который прикреплен к графику. Оказалось что советник применяет значения глобальных переменных тестера и соответственно открывает ордера. Так можно и депозит спустить ненароком. Хорошо что я заметил это и еще в советнике стоит ограничение на один ордер а так бы .......... Возможно эта информация кому то поможет.

В инит:

gvp=WindowExpertName()+"_"+Symbol()+"_"+Magic+"_";
   if(IsTesting())gvp=gvp+"t_";
   if(IsDemo())gvp=gvp+"d_";
   
      if(IsTesting()){
         for(int i=GlobalVariablesTotal()-1;i>=0;i--){
            if(StringFind(GlobalVariableName(i),gvp,0)==0){
               GlobalVariableDel(GlobalVariableName(i));
            }
         }
      }

в деинит:

      if(IsTesting()){
         for(int i=GlobalVariablesTotal()-1;i>=0;i--){
            if(StringFind(GlobalVariableName(i),gvp,0)==0){
               GlobalVariableDel(GlobalVariableName(i));
            }
         }
      }

Все имена глобальных переменных начинаются с переменной gvp:

GlobalVariableSet(gvp+"....");
 
Integer >>:

спасибо я понял!

 

я сделал так:

//------------------------------------------------------

int magic = 203050;

string test="test";

string optimiz="optimiz";

string demo="demo";

string name_GV="real";

//------------------------------------------------------
int init()
{
if(IsTesting())name_GV=test;
if(IsOptimization())name_GV=optimiz;
if(IsDemo())name_GV=demo;
}
//------------------------------------------------------

int start()

{

.

.

.

GlobalVariableSet(magic+"L1"+name_GV,L_1);
GlobalVariableSet(magic+"L2"+name_GV,L_2);

.

.

.

.

.


}

//------------------------------------------------------
Причина обращения: