초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1320

 
pivomoe :

버전 2981로 업데이트한 후 다음 줄에 오류가 표시되기 시작했습니다.

이 줄을 교체하는 방법을 알려주세요.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql5 언어의 특징, 미묘함 및 작업 방법

일리아스 , 2021.05.28 18:18

"{ ... }" 초기화 시퀀스를 확장하고 있습니다. 다음 빌드에서는 상수 표현식뿐만 아니라 모든 표현식을 사용할 수 있습니다.

이 변경 대신 열거형에 대한 상수 사용에 대한 제한도 있습니다(정규 표현식의 경우). 상수가 열거형에 포함되지 않으면 적절한 오류가 생성됩니다.

기존 코드를 분석한 결과 0 하나의 시퀀스가 종종 잘못 사용되는 것으로 나타났습니다. "{0}"

예를 들면 다음과 같습니다.

 MqlTradeRequest request={ 0 };


이러한 레코드는 구조의 첫 번째 필드에 대해 값을 0으로 설정하고 나머지 필드를 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 :

거래 클래스를 연결하는 것 외에도 이 거래 클래스의 개체를 만든 다음 생성된 개체 를 통해 클래스 메서드에 액세스해야 합니다.

어드바이저와 스크립트에서 클래스 메소드의 사용에 대해 객체 생성은 말할 필요도 없습니다. 그러나 문제는 상속인의 클래스 내부에서 기본 클래스의 메소드를 사용하는 것에 관한 것입니다. 객체가 생성할 대상은 무엇입니까?

 
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 에서 클래스를 상속했습니다 .

실례지만, 어떤 방법을 예상하셨습니까?

여기에 동의합니다)), tupanul)), 이러한 모든 메서드의 기본 클래스는 상속인의 클래스 메서드를 사용하는 것을 가능하게 하지 않습니다)))

사유: