OOP, mql5'te şablonlar ve makrolar, incelikler ve kullanım teknikleri - sayfa 23

 
Igor Makanu :

böylece istediğini yapabilirsin


sihirli büyünün yardımıyla dün önerilen seçeneklerle ilgileniyor #defaine abracadabra ##_

UPD:

Vladimir Simakov tamam, anlamaya çalışacağım

Igor Makanu :

böylece istediğini yapabilirsin


sihirli büyünün yardımıyla dün önerilen seçeneklerle ilgileniyor #defaine abracadabra ##_

UPD:

Vladimir Simakov tamam, anlamaya çalışacağım

UPD:

HURRAH! KAZANDI! (İLE)


Teşekkür ederim! her şey planlandığı gibi gitti!


Not: Bu abrakadabraya __MQL5__ ve __MQL4__ makroları nasıl eklenir, ancak böylece fast_xxx() işlevleri MQL4 kodunda hiçbir zaman görünmez - ASLA kelimesinden

UPD:

HURRAH! KAZANDI! (İLE)


Teşekkür ederim! her şey planlandığı gibi gitti!


Not: Bu abrakadabraya __MQL5__ ve __MQL4__ makroları nasıl eklenir, ancak böylece fast_xxx() işlevleri MQL4 kodunda hiçbir zaman görünmez - ASLA kelimesinden

 #ifdef __MQL5__
   #ifdef USE_FAST
       #define CONNECT fast_connect
   #else
       #define CONNECT connect
   #endif
#else
   #define CONNECT connect
#endif
 

kodu hangi terminalin (MT4/MT5) çalıştırdığını nasıl öğrenebilirim?

bir doğru/yanlış değişkeni yeterlidir

 
Igor Makanu :

kodu hangi terminalin (MT4/MT5) çalıştırdığını nasıl öğrenebilirim?

bir doğru/yanlış değişkeni yeterlidir

 bool is_mt5=( TerminalInfoString ( TERMINAL_NAME )== "MetaTrader 5" );
 
Artyom Trishkin :

Tamam, ama makrolarda, büyük olasılıkla basit bir şey görmek istiyorum (ilkel olacak)

UPD:

 #ifdef __MQL5__
   #define mql5 true
#else
   #define mql5 false 
#endif

bool isMQL5 = mql5;
 
Igor Makanu :

Tamam, ama makrolarda, büyük olasılıkla basit bir şey görmek istiyorum (ilkel olacak)

UPD:

kutsal anlamı nedir?

 
Artyom Trishkin :

kutsal anlamı nedir?

derleyiciyi kontrol etmek, "doğru derleyici" ise, derleme aşamasında gereksiz her şeyi atmalıdır.

 #ifdef __MQL5__
   #define mql5 true
#else
   #define mql5 false 
#endif

const bool isMQL5 = mql5;

const string txt_1000symbols = "Язык MetaQuotes Language 5 (MQL5) является объектно-ориентированным языком программирования высокого уровня и предназначен для написания"
                               "автоматических торговых стратегий, пользовательских технических индикаторов для анализа разнообразных финансовых рынков. Он позволяет не только писать разнообразные"
                               "экспертные системы, предназначенные для работы в режиме реального времени, но и создавать собственные графические инструменты, помогающие принимать торговые решения."
                               "MQL5 основан на концепции широко распространенного языка программирования С++, по сравнению с MQL4 в нем добавлены перечисления, структуры, классы и обработка событий."
                               " Благодаря расширению числа встроенных основных типов, взаимодействие исполняемых программ на MQL5 с другими приложениями "
                               "посредством dll максимально облегчено. Синтаксис языка MQL5 подобен синтаксису С++, и это позволяет легко переносить на него программы из современных языков "
                               "программирования. Для целей изучения языка все темы сгруппированы по следующим разделам.\n" ;
//+------------------------------------------------------------------+
void OnStart ()
  {
   if (isMQL5) Print (txt_1000symbols);
   Print ( "end" );
  }
//+------------------------------------------------------------------+

derleyin ve .ex5 boyutunu görün ;)

Not: if() içinde isMQL5 , mql5 sağlayabilirsiniz, const değiştiricisini kaldırabilirsiniz - genel olarak doğru derleyici

 

bu kod var:

 #import "mydll.dll"
#import

mt4 nedense 2 EA'dan çağrılırsa bellekte yeni dll kopyaları oluşturmuyor, dll'nin kendisini düzenlemek istemiyorum (100'e uyuyor), mydll.dll dosyasını 5 kez kopyalamak daha kolay

bu şekilde almak için bir makro ayarı yapmanız gerekiyor

 #define dllnum 02

#import "mydll 02 .dll"
#import

ama makro, dllnum olup olmadığını kontrol etmek istiyorum, o zaman bu "mydll.dll" gibi olacak



UPD:

öyle karar verdi

 #define dllnum 2

#define DEF_QUOTES(arg) #arg

#ifdef dllnum
   #define DEF_DLL_NAME(a,b) DEF_QUOTES(a ## 0 ##b.dll)
#else
   #define DEF_DLL_NAME(a,b) DEF_QUOTES(a.dll)
#endif 

   
string s =  DEF_DLL_NAME(mydll,dllnum);


UPD2: karar vermedim (((

'mydll02.dll' - genel kapsamda ifadelere izin verilmez

 
Igor Makanu :

bu kod var:

mt4 nedense 2 EA'dan çağrılırsa bellekte yeni dll kopyaları oluşturmuyor, dll'nin kendisini düzenlemek istemiyorum (100'e uyuyor), mydll.dll dosyasını 5 kez kopyalamak daha kolay

bu şekilde almak için bir makro ayarı yapmanız gerekiyor

ama makro, dllnum olup olmadığını kontrol etmek istiyorum, o zaman bu "mydll.dll" gibi olacak



UPD:

öyle karar verdi


UPD2: karar vermedim (((

'mydll02.dll' - genel kapsamda ifadelere izin verilmez

Muhtemelen hiçbir şey işe yaramayacak.

DEF_QUOTES(a ## 0 ##b.dll)

burada geçerli bir jeton elde edilmez. Genel olarak, iyi bir şekilde, µl şunları yapabilmelidir:

 #import "jkjfkj" ".dll"

ama ne yazık ki, dedikleri gibi - burada ++ ile değilsiniz))

 
Vict :

Muhtemelen hiçbir şey işe yaramayacak.

burada geçerli bir jeton yok. Genel olarak, iyi bir şekilde, µl şunları yapabilmelidir:

ama ne yazık ki, dedikleri gibi - burada ++ ile değilsiniz))

evet

En azından eklentileri makro değiştirme yoluyla bağlamaya çalıştım .... yine bir şeyler ters gitti

 #define FNAME <mylib.mqh>

#include FNAME

'#include' - çift tırnak veya açılı ayraç < gereklidir

'#include' - genel kapsamda ifadelere izin verilmez


 
Igor Makanu :

Sadece anlamadım - hangi mumların yakıldığı uğruna? Bu muhtemelen işe yarayacaktır:

 #define LIB "kjkjkjk.dll"
#import LIB

Düzeltilen bazı yapılandırmaların yararlı olabileceğini kabul ediyorum.

Not: Hala gerçekten istiyorsanız, o zaman adı deneyin veya name_dll (nokta olmadan) verin, belki çıkar.