변수의 행동에 대한 오해 - 페이지 7

 

start() 없이 주말 테스트를 위해 Expert Advisor를 재설계했습니다.

1. 차트에 올려

2. 매개변수 변경

3. 로그에서 문자열(파란색)은 int(녹색)와 달리 외부 변수에서 잘못된 값을 가져오는 것을 볼 수 있습니다.

 extern string ValueString = "DDD" ;
extern int     ValueInt    = 10 ;  
     
string tempString= "val" ;
int     tempInt   = 0 ;

bool    firsttime= true ;
       
int init() {  
   if (firsttime) {     // значение присваевается тольо ОДИН раз   
       Print ( "иницилизация глобальных переменных" );
       Print ( "tempString = " ,tempString);
       Print ( "tempInt    = " ,tempInt);
      
       Print ( "однократное присваение внешних значений глобальным переменным" );
      tempString=ValueString; 
      tempInt   =ValueInt; 
      firsttime = false ; 
       Print ( "ValueString: " ,ValueString, " < >" , "  tempString: " ,  tempString);
       Print ( "ValueInt:     " ,ValueInt,   " < >" , "  tempInt:      " ,tempInt);
   } else {
       Print ( "меняем входные параметры" );
       Print ( "ValueString: " ,ValueString, " < >" , "  tempString: " ,  tempString);
       Print ( "ValueInt:     " ,ValueInt,   " < >" , "  tempInt:      " ,tempInt);
   }                          
}

int start() {}





파일:
testinit.mq4  1 kb
 
wlad :

start() 없이 주말 테스트를 위해 EA를 재설계했습니다.

1. 차트에 올려

2. 매개변수 변경

3. 로그에서 문자열(파란색)은 int(녹색)와 달리 외부 변수에서 잘못된 값을 가져옴이 분명합니다.





하지만 정말 말도 안 됩니다. 외부 수준에서 설정한 변수는 어드바이저가 다시 시작될 때 초기화되지 않지만 이전 다시 시작에서 약간의 쓰레기를 가져옵니다. Wlad, 특히 인내심에 감사드립니다)))))
 

그리고 여기에서도 주제에 ...

#property indicator_color1 빨간색
그리고

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3,아쿠아);

색상은 굵기에 빨간색으로 유지됩니다... 표시기를 강제로 제거하고 다시 시작할 때까지, 즉. 간단한 재컴파일은 도움이 되지 않습니다. 매개 변수가 일부 바닥 구멍에서 빠져 나온 것으로 나타났습니다 .... 물론 쓰레기이지만 wlad는 이것의 바닥에 도달했습니다))))

 
분명히 이것은 연결되어 있으며, 때로는 어드바이저 코드를 변경하고 컴파일하면 터미널을 다시 시작할 때까지 이전 코드 가 작동하는 것으로 나타났습니다. 어드바이저를 다시 시작해도 도움이 되지 않습니다. 하지만 항상 그런 것은 아니어서 침착하게 잼을 가져갔다. 그렇군요 그렇군요 ... 별로 지장이 없을 것 같습니다.
 

예,

개발자가 고칠 수 있으면 좋을텐데

아니면 여기에 글을 쓰고 즉시 헬프 데스크에 문의하는 것이 무의미합니까?

그나저나 어디로 갈 수 있어?

 
Sepulca :
어 ... 축하합니다 mnu, 나는 일종의 할아버지가되었지만 실제로는 아니지만 아이들은 인정했습니다 ......)))

축하합니다! 할아버지는 몇 살입니까?
 

말해봐 플리즈

지원팀에 연락하려면 어떻게 해야 하나요?

어디에서도 찾을 수 없는

 
wlad :

말해봐 플리즈

지원팀에 연락하려면 어떻게 해야 하나요?

어디에서도 찾을 수 없는

어떤 식 으로든 직접 네 번째 포럼에서. 아마도 다섯 번째부터. mql5.com 프로필의 "서비스 데스크" 링크를 참조하십시오(왼쪽의 프로필 서비스 목록이 있는 열).
 
MetaDriver :
어떤 식 으로든 직접 네 번째 포럼에서. 아마도 다섯 번째부터. mql5.com 프로필의 "서비스 데스크" 링크를 참조하십시오(왼쪽의 프로필 서비스 목록이 있는 열).
감사합니다 한번 볼게요
 
wlad :

start() 없이 주말 테스트를 위해 EA를 재설계했습니다.

1. 차트에 올려

2. 매개변수 변경

3. 로그에서 문자열(파란색)은 int(녹색)와 달리 외부 변수에서 잘못된 값을 가져옴이 분명합니다.



새 컴파일러 에서 재현할 수 없습니다. 오래된 것이 더 이상 지배하지 않을 것입니다.

extern string ValueString = "DDD" ;
extern int     ValueInt    = 10 ;  
     
string tempString= "val" ;
int     tempInt   = 0 ;

bool    firsttime= true ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   if (firsttime) 
     {     // значение присваевается тольо ОДИН раз   
       Print ( "иницилизация глобальных переменных" );
       Print ( "tempString = " ,tempString);
       Print ( "tempInt    = " ,tempInt);

       Print ( "однократное присваение внешних значений глобальным переменным" );
      tempString=ValueString;
      tempInt   =ValueInt;
      firsttime = false ;
       Print ( "ValueString: " ,ValueString, " < >" , "  tempString: " ,tempString);
       Print ( "ValueInt:     " ,ValueInt, " < >" , "  tempInt:      " ,tempInt);
        } else {
       Print ( "меняем входные параметры" );
       Print ( "ValueString: " ,ValueString, " < >" , "  tempString: " ,tempString);
       Print ( "ValueInt:     " ,ValueInt, " < >" , "  tempInt:      " ,tempInt);
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

  }
//+------------------------------------------------------------------+