Verwirrung über das Verhalten der Variablen - Seite 7

 

den Expert Advisor für den Wochenendtest ohne start()neu erstellt

1. zur Karte gehen

2. Parameter ändern

3. Das Protokoll zeigt, dass string (blau) im Gegensatz zu int (grün) fehlerhafte Werte von der externen Variablen erhält.

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() {}





Dateien:
testinit.mq4  1 kb
 
wlad:

den Expert Advisor für den Wochenendtest ohne start() neu erstellt

1. zur Karte gehen

2. Parameter ändern

3. das Protokoll zeigt, dass string (blau) im Gegensatz zu int (grün) fehlerhafte Werte von der externen Variablen erhält





Aber es ist wirklich ein Bug....Variablen, die auf der externen Ebene gesetzt werden, werden beim Neustart des EAs nicht ausgelöst, sondern übernehmen irgendeinen Schwachsinn von vorherigen Neustarts...Danke an Wlad für seine Geduld)))))
 

Und auch hier gibt es ein Thema... ein einfacher Indikator, bei dem es eine

#property indicator_color1 Rot
и

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,3,Aqua);

Die Farbe bleibt Rot mit seiner Dicke... Bis Sie den Indikator zwangsweise löschen und neu starten, d.h. eine einfache Neukompilierung hilft nicht. Es stellt sich heraus, dass die Parameter aus einigen Trunks gezogen werden.... Blödsinn, natürlich, aber Wlad hat es geschafft))))

 
Anscheinend hängt es damit zusammen, denn ich habe schon lange bemerkt, dass man manchmal den EA-Code ändert und kompiliert, aber der vorherige Code funktioniert, bis man das Terminal neu lädt. Auch ein Neustart des Expert Advisors hilft nicht. Aber das ist nicht immer der Fall, also lasse ich es ruhig angehen. Nun, es ist da... Das scheint mich nicht allzu sehr zu stören.
 

Ja, ja,

es wäre schön, wenn die Entwickler das Problem beheben könnten

oder ist es sinnlos, hier zu schreiben und sich direkt an den Helpdesk zu wenden?

Wo kann ich übrigens hingehen?

 
Sepulca:
Э... Gratulieren Sie mir, ich bin so etwas wie ein Großvater, nicht wirklich, aber die Kinder geben es zu......)))

Herzlichen Glückwunsch! Wie alt ist Opa?
 

Bitte beraten

Wie kontaktiere ich den Bremssattel?

kann es nirgendwo finden

 
wlad:

Bitte beraten

Wie kontaktiere ich den Bremssattel?

kann es nirgendwo finden

Sie können dies nicht direkt über das vierte Forum tun. Sie können aus dem fünften Forum. Siehe den Link "Service Desk" in Ihrem mql5.com-Profil (links in der Spalte mit der Liste der Profildienste).
 
MetaDriver:
Sie können dies nicht direkt über das vierte Forum tun. Sie können aus dem fünften Forum. Siehe den Link "Service Desk" in Ihrem mql5.com-Profil (links in der Spalte mit der Liste der Profildienste).
Danke, ich werde es mir ansehen.
 
wlad:

den Expert Advisor für den Wochenendtest ohne start() neu erstellt

1. zur Karte gehen

2. Parameter ändern

3. das Protokoll zeigt, dass string (blau) im Gegensatz zu int (grün) fehlerhafte Werte von einer externen Variablen erhält



Er ist imneuen Compiler nicht reproduzierbar. Niemand wird jemals die alte Version ändern.

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()
  {
//---

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