初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1185

 
odyn:

鉴赏家们好!

以下是代码。

结构 STRUCT_POSITION {...\\}

STRUCT_POSITION SPosition[]。

问题。

什么是STRUCT_POSITION SPosition[]; ?如果是创建一个结构的实例,为什么是动态数组?真的有可能做到这一点吗?为什么?


我将非常感谢您的回答。

声明STRUCT_POSITION {...}结构是创建一个用户定义的数据类型。而STRUCT_POSITION SPosition[];是对用户类型变量的声明。变量是一个数组的事实由方括号[]表示,你可以像其他类型的变量一样声明几个自定义类型的变量。

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
在这个条目类型 中,变量数组
 
大家好,一天中的时间。
在我的一个安卓设备上,MT5停止工作了
它刚刚停止工作。没有改变任何东西,没有配置任何东西。
它看起来像截图。
我有互联网,其他东西都能用。
我只有模拟账户
如果我在错误的地方,很抱歉。
附加的文件:
 

是否有任何工具(如WatchDog)用于重新启动MT5。


假设MT5因某些错误而关闭。我怎样才能立即远程跟踪并重新启动MT5。

我在使用MT4bar,用于MT4。需要类似的东西,用于MT5。

 

下午好。

我想做一个通用的基类,以便总是定义和调用同一类别的对象。

而我正在为测试新闻做两个解决方案。我有一个基类CNewsFilter和两个继承的CNewsFilterLive和CNewsFilterTester。 我想在我的代码中定义一个CNewsFilter对象。而且它将根据运行的模式自动选择一个班级。但有些事情并不奏效。这里是一个基类,我只留下了Init()方法作为例子。

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilter
  {
protected:
   //---
public:
                     CNewsFilter(void);
                    ~CNewsFilter(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilter::Init(string symbol_name,int magic_number)
  {
   return true;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif

一个继承的类。

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilterTester : public CNewsFilter
  {
protected:
public:
                     CNewsFilterTester(void);
                    ~CNewsFilterTester(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::CNewsFilterTester() :  m_delimiter('\t')
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::~CNewsFilterTester(void)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilterTester::Init(string symbol_name,int magic_number)
  {
   // some code
   return true;
  }

然后我在我的EA代码中调用它。

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

调试时,它从未进入继承类CNewsFilterTester,根据基类指令,它应该进入,我在基类代码的末尾添加了这个指令。__MQL5__在此仅作为一个例子。如何用测试器来做是另一个问题。到目前为止,这个想法本身并不奏效--继承类的方法没有被调用。当Init()被调用时,它不会转到继承类的Init()--在这个例子中是CNewsFilterTester。请给予帮助。

#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif
 
leonerd:

下午好。

我想做一个通用的基类,以便总是定义和调用同一类别的对象。

而我正在为测试新闻做两个解决方案。我有一个基类CNewsFilter和两个继承的CNewsFilterLive和CNewsFilterTester。我想在我的代码中定义一个CNewsFilter对象。而且它将根据运行的模式自动选择一个班级。但有些事情并不奏效。这里是一个基类,我只留下了Init()方法作为例子。

一个继承的类。

然后我在我的EA代码中调用它。

调试时,它从未进入继承类CNewsFilterTester,根据基类指令,它应该进入,我在基类代码的末尾添加了这个指令。__MQL5__在这里只是作为一个例子。如何用测试器来做是另一个问题。 到目前为止,这个想法本身并不奏效--继承类的方法没有被调用。当Init()被调用时,它不会转到继承类的Init()--在这个例子中是CNewsFilterTester。请帮助。

这里

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

你创建一个基类对象。相应地--你到处都有一个基类。

 

如何正确地写一个条件:

像这样

if(((MASlowHandle - PBid) > 0.0002) && ((MASlowHandle - MAFastHandle) > 0.0002))

或像这样。

if((MASlowHandle - PBid) > 0.0002 && (MASlowHandle - MAFastHandle) > 0.0002)

??

 
odyn:

如何正确地写一个条件:

像这样

或像这样。

??

这其实并不重要。你甚至可以这样写。

if(MASlowHandle - PBid > 0.0002 && MASlowHandle - MAFastHandle > 0.0002)

算术运算优先于逻辑运算。

但如果条件中同时有&&和||,最好用括号把它们分开,以使其更容易理解。

 
Alexey Viktorov:

这不是一个原则问题。你甚至可以这样说

算术的优先级高于逻辑的优先级。

但如果条件中同时有&&和||,最好用圆括号来划分,这样更容易理解。

谢谢你的回答!

 

我不能发布代码的原因是什么?

我总是收到一个信息。

代码审查完成,有错误
代码验证期间检测到的错误 交易统计实时报告。
https://www.mql5.com/en/code/28074/230766

但我不明白代码发布错误的原因。

请回答我这个问题。

问题是什么,至少应该强调。

 
jaffer wilson:

我不能发布代码的原因是什么?

我总是收到一个信息。

代码检查完成,有错误
代码检查期间检测到的错误 交易统计实时报告。
https://www.mql5.com/en/code/28074/230766

但我不明白代码发布错误的原因。

请回答我这个问题。

问题是什么,至少应该强调。

问题在哪里?究竟是什么错误?对不起,所有的心灵感应者都在休假。

点击