Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1320

 
pivomoe :

2981 sürümüne güncelledikten sonra satırda bir hata görünmeye başladı

Lütfen bana bu satırı nasıl değiştireceğimi söyle.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

İlyas , 2021.05.28 18:18

"{ ... }" başlatma dizilerini genişletiyoruz, bir sonraki derlemede sadece sabit bir ifadeyi değil, herhangi bir ifadeyi kullanmasına izin verilecek.

Bu değişiklik yerine, numaralandırmalar için sabitlerin kullanımı konusunda da bir kısıtlama olacaktır (düzenli bir ifadede olduğu gibi): sabit numaralandırmaya dahil edilmemişse, uygun bir hata üretilecektir.

Mevcut kodların analizi, bir sıfır dizisinin genellikle yanlış kullanıldığını gösterdi - "{0}"

Örneğin şöyle:

 MqlTradeRequest request={ 0 };


Böyle bir kayıt, yapının ilk alanı için değeri sıfıra ayarlamak ve geri kalan alanları sıfıra ayarlamak anlamına gelir.

Yukarıdaki kod satırı için yeni kurallara göre bir hata üretilecektir, çünkü ilk alan türdedir ENUM_TRADE_REQUEST_ACTIONS , "0" değeri eksik bir numaralandırma

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


Şu şekilde doğru olacaktır:

 MqlTradeRequest request={};

 
Teşekkür ederim.
 
Kira27 :

Bu yüzden yazıyorum - bu yöntemleri standart kitaplıklarından kullanmak için sınıfınızı hangi sınıftan devralacaksınız?

Peki sorumun nesi var?

 

İşte kod, sorun ne?

 //+------------------------------------------------------------------+
//|                                            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 не высвечивается как подключеный
}
//+------------------------------------------------------------------+

sınıf şunları içerir:


Test_Nasledovania sınıfının kendisi: public CObject, tüm standart kitaplığın CObject temel sınıfının mirasçısıdır. Amaç ne??? Lütfen bana söyle)

 
Kira27 :

İşte kod, sorun ne?

sınıf şunları içerir:


Test_Nasledovania sınıfının kendisi: public CObject, tüm standart kitaplığın CObject temel sınıfının mirasçısıdır. Amaç ne??? Lütfen bana söyle)

Bir ticaret sınıfını bağlamanın yanı sıra, bu ticaret sınıfının bir nesnesini oluşturmanız ve ardından oluşturulan nesne aracılığıyla sınıf yöntemlerine erişmeniz gerekir.

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

Peki sorumun nesi var?

Çünkü yardımda tüm bu sınıfların tüm mirası siyah beyaz olarak yazılmıştır.

 
Vladimir Karputov :

Bir ticaret sınıfını bağlamanın yanı sıra, bu ticaret sınıfının bir nesnesini oluşturmanız ve ardından oluşturulan nesne aracılığıyla sınıf yöntemlerine erişmeniz gerekir.

Danışmanlarda ve komut dosyalarında sınıf yöntemlerinin kullanımı hakkında, nesnelerin oluşturulması hakkında hiçbir şey söylemeye gerek yok. Ancak soru, varisin sınıfı içinde temel sınıfın yöntemlerini kullanmakla ilgilidir. Orada nesneler oluşturmak için ne var?

 
Kira27 :

Danışmanlarda ve komut dosyalarında sınıf yöntemlerinin kullanımı hakkında, nesnelerin oluşturulması hakkında hiçbir şey söylemeye gerek yok. Ancak soru, varisin sınıfı içinde temel sınıfın yöntemlerini kullanmakla ilgilidir. Orada nesneler oluşturmak için ne var?

Sınıfınızı CObject öğesinden devraldınız :

 class Test_Nasledovania : public CObject

Affedersiniz ama hangi yöntemleri görmeyi bekliyordunuz?

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

İşte bir mirasçı içinde bir nesne kullanmadan temel sınıf yöntemlerini kullanmanın bir örneği

 #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
}
//+------------------------------------------------------------------+

Dahil edilen tüm yöntemleri kullanmak istiyorum

Tüm bu sınıfların yöntemlerini kullanmak için kendi sınıfınızı hangi sınıftan miras alacaksınız? Bu mümkünse?

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

Sınıfınızı CObject öğesinden devraldınız :

Affedersiniz ama hangi yöntemleri görmeyi bekliyordunuz?

Burada katılıyorum))), tupanul))), tüm bu yöntemlerin temel sınıfı, varislerinin sınıflarının yöntemlerini kullanmayı mümkün kılmaz)))

Neden: