有的EA对运行周期有要求,更换周期会自动停止。
这个是控件的类 有问题或者说兼容性问题 ,一样的代码,在mt4里面 出现上面情况,在mt5里面就正常, 我研究很久 没找到解决办法,就不用他了 自己写把.
你这个是从MT5中拷贝过来的吧,MT4中没有这样的实例。
这个问题的原因是对象没有正确析构。
用指针就能解决。
解决办法:new个对话框的指针,在OnDeinit()中析构。
#include "ControlsDialog.mqh" //+------------------------------------------------------------------+ //| Global Variables | //+------------------------------------------------------------------+ CControlsDialog *ExtDialog; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ExtDialog = new CControlsDialog(); //--- create application dialog if(!ExtDialog.Create(0,"Controls",0,20,20,360,324)) return(INIT_FAILED); //--- run application ExtDialog.Run(); //--- succeed return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy dialog ExtDialog.Destroy(reason); delete ExtDialog; } //+------------------------------------------------------------------+ //| Expert chart event function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // event ID const long& lparam, // event parameter of the long type const double& dparam, // event parameter of the double type const string& sparam) // event parameter of the string type { ExtDialog.ChartEvent(id,lparam,dparam,sparam); } //+------------------------------------------------------------------+
Ziheng Zhuang:
太感谢你了,解决了,不过好像只要在OnInit 中加 ExtDialog
= new
CControlsDialog(); 就可以了 解决办法:new个对话框的指针,在OnDeinit()中析构。
在OnDeinit()中的delete ExtDialog; 可以不用添加也可以。
还有就是请问 CControlsDialog ExtDialog; 和 CControlsDialog *ExtDialog; 区别是什么,再次感谢
1. 如果没有delete ExtDialog ,会有内存泄漏
2. CControlsDialog ExtDialog 是类的实例, CControlsDialog *ExtDialog 是类的一个指针,具体参考C++语法。
Ziheng Zhuang:
非常感谢,学到了很多。请问就这些问题和关于类、库这方面的知识应该去哪里学?是哪方面的知识,如果是去网上学的话,关键词应该是什么
1. 如果没有delete ExtDialog ,会有内存泄漏
2. CControlsDialog ExtDialog 是类的实例, CControlsDialog *ExtDialog 是类的一个指针,具体参考C++语法。
z44677265:
非常感谢,学到了很多。请问就这些问题和关于类、库这方面的知识应该去哪里学?是哪方面的知识,如果是去网上学的话,关键词应该是什么
非常感谢,学到了很多。请问就这些问题和关于类、库这方面的知识应该去哪里学?是哪方面的知识,如果是去网上学的话,关键词应该是什么
C++入门之类的课程。
如图所示,开始的时候ea的控件正常(刚开始加载在M30),然后把周期换成H1就出现图2 的样子,这是为什么?