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

 
leonerd:

但是否有可能将一个类声明为基类,然后根据条件,将其覆盖为继承类之一?

任务是在代码中保持类的名称不变。

另外,请告诉我们应该用哪条指令来定义测试器。

有可能这样做吗?

#include <NewsFilter.mqh>
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
 
Artyom Trishkin:

谢谢你。是的,但这里的news_filter对象原来是未定义的。它必须在全局范围内声明,以便从代码的任何地方进行访问。该怎么做?

CNewsFilter       news_filter;
void OnInit()
  {
  }
 
leonerd:

谢谢你。是的,但这里的news_filter对象原来是未定义的。它必须在全局范围内声明,以便从代码的任何地方进行访问。该怎么做?

在什么情况下会不被定义?

 
Artyom Trishkin:

在哪些情况下,它将是不确定的?

#include <NewsFilter.mqh>

void OnInit()
  {
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
  }
void OnTick()
  {
   news_filter.Check()...
  }
 

请帮助我理解执行该语句背后的逻辑以及其条件的表达。


CTrade         m_trade;

CPositionInfo  m_position;

if(!m_trade.PositionClose(m_position.Ticket()))

如果它不关闭票据所定义的位置?

对吗?

 
odyn:

请帮助我理解执行该语句背后的逻辑以及其条件的表达。


如果它不关闭票据所定义的位置?

对吗?

-> 如果指定票据的位置被关闭,则返回true,否则返回false。

条件为:如果有指定票据的位置没有关闭...

 
Сергей Таболин:

-> 如果指定票据的位置被关闭,则返回真,否则返回假。

条件为:如果有指定票据的位置没有关闭...

问题是,程序到底是不是在试图平仓

 
odyn:

问题是,方案是否试图平仓

是的,确实如此。

 
Сергей Таболин:

是的,他是。

谢谢你的答复

 

请解释。

OnTradeTransaction 函数。

是否一定要在专家顾问中?

如果不是,在什么情况下应该包括在代码中? 以及为什么?