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

 
pivomoe:

升级到2981版本后,开始出现一个错误,在行中

请告知如何替换这条线路。

关于交易、自动交易系统和交易策略测试的论坛

mql5的特殊性,技巧和窍门

伊利亚斯, 2021.05.28 18:18

我们正在扩大我们的初始化序列"{ ...在下一个版本中,我们将允许使用任何表达式,而不仅仅是常量。

取而代之的是,在为枚举使用常量时将有一个限制(就像对普通表达式一样):如果常量不属于枚举,将产生相应的错误。

对现有代码的分析表明,单零序列"{0}"经常被错误地使用。

例如,像这样。

MqlTradeRequest request={0};


这样的符号意味着为结构的第一个字段设置零值,并将其余的字段置零。

对于上述代码行,根据新的规则,会有一个错误,因为第一个字段的类型是 ENUM_TRADE_REQUEST_ACTIONS,这个枚举缺乏值 "0"。

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


正确的方法应该是。

MqlTradeRequest request={};

 
谢谢你。
 
Kira27:

所以我在写 -- 我应该从哪个类继承我的类来 使用他们标准库中的这些方法?

我的问题有什么问题?))))

 

这是代码,有什么问题吗?

//+------------------------------------------------------------------+
//|                                            Test_Nasledovania.mqh |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Object.mqh>
#include <Trade\Trade.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Test_Nasledovania : public CObject
  {
private:

public:
                     Test_Nasledovania();
                    ~Test_Nasledovania();

   void              test();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::Test_Nasledovania()
  {

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::~Test_Nasledovania()
  {
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void      Test_Nasledovania::test()
{
Buy  -- Метод Buy не высвечивается как подключеный
}
//+------------------------------------------------------------------+

该课程包括


Test_Nasledovania : public CObject类本身就是整个标准库的基类CObject 的继承者)。

 
Kira27:

这是代码,有什么问题吗?

该课程包括


Test_Nasledovania : public CObject类本身是整个标准库的CObject 基类的继承者)。

除了连接交易类之外,你还需要创建一个交易类的对象,然后通过创建的对象 来引用该类的方法

***
#include <Trade\Trade.mqh>
//---
CTrade         m_trade;                      // object of CTrade class
***
void OnTick()
  {
   m_trade.Buy(***
  }
 
Kira27:

我的问题有什么问题?))))

因为帮助中白纸黑字地写着所有这些类的整个继承关系。

 
Vladimir Karputov:

除了连接一个交易类,你还需要创建这个交易类的一个对象,然后通过创建的对象 引用该类的方法。

关于在Expert Advisors和脚本中使用类方法的问题,当然是创建对象。 但问题是关于在子类中使用基类的方法,。为什么我们需要在那里创建对象?

 
Kira27:

关于使用类的方法,在Expert Advisors和脚本中,不言而喻,我们会创建对象。 但问题是关于在一个子类中使用基类的方法。为什么你需要在那里创建对象?

你已经CObject 继承了你的类。

class Test_Nasledovania : public CObject

对不起,但你期望看到的是什么方法?

Документация по MQL5: Стандартная библиотека / Базовый класс CObject
Документация по MQL5: Стандартная библиотека / Базовый класс CObject
  • www.mql5.com
Базовый класс CObject - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

下面是一个如何在继承类中使用基类的方法而不使用对象的例子

#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

//#include <Object.mqh>
#include <Trade\Trade.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Test_Nasledovania : public CTrade
  {
private:

public:
                     Test_Nasledovania();
                    ~Test_Nasledovania();

   void              test();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::Test_Nasledovania()
  {

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
Test_Nasledovania::~Test_Nasledovania()
  {
  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void      Test_Nasledovania::test()
{
Buy
}
//+------------------------------------------------------------------+

我想使用所有的方法,包括在

我应该从哪个班级继承我的班级,这样我就可以在我的班级里使用所有这些班级的方法,而不需要创建对象。 如果有可能的话)))。

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Artyom Trishkin:

CObject 继承了你的类。

对不起,你希望看到的是什么方法?

我同意))),我太傻了)),所有这些方法的基类,不允许使用其子类的方法)))。