对变量的行为感到困惑 - 页 7

 

为周末测试重新制作了专家顾问,没有start()。

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()。

1.转到图表

2.改变参数

3.日志显示,字符串(蓝色)从外部变量接收错误的值,与int(绿色)不同。





而且确实有一个bug....,在外部层面上设置的变量在EA重启时并不启动,而是从以前的重启中获取一些垃圾......感谢Wlad的耐心指导)))))。
 

这里也有一个主题...一个简单的指标,其中有

#property indicator_color1 Red
и

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

颜色仍然是红色的,其厚度也是红色的。直到你强行删除指标并重新启动它,也就是说,简单的重新编译并没有帮助。事实证明,这些参数是从一些trunks....。废话,当然,但弗拉德得到了它))))

 
显然这是有关系的,我已经注意到很长时间了,有时你改变了EA代码,编译后,以前的代码 却能工作,直到你重新加载终端。即使重新启动专家顾问也没有帮助。但情况并非总是如此,所以我放轻松。嗯,它就在那里...似乎并没有对我造成太大的困扰。
 

是的。

如果开发者能解决这个问题就好了

还是在这里写信没有意义,直接去找服务台?

顺便问一下,我可以去哪里?

 
Sepulca:
Э...祝贺我,我有点像个祖父,不是真的,但孩子们承认......))

祝贺你!爷爷今年多大了?
 

请告知

我如何联系卡钳?

到处都找不到

 
wlad:

请告知

我如何联系卡钳?

到处都找不到

你不能直接从第四个论坛上做这件事。 你可以从第五论坛。 在你的mql5.com个人资料中,请看 "服务台 "链接(在左边,有个人资料服务列表的那一栏中)。
 
MetaDriver:
你不能直接从第四个论坛上做这件事。 你可以从第五论坛。 在你的mql5.com个人资料中,请看 "服务台 "链接(在左边,有个人资料服务列表的那一栏中)。
谢谢你,我会去看看的。
 
wlad:

为周末测试重新制作了专家顾问,没有start()。

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

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