Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 13
- Derecelendirme:
- Yayınlandı:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Bu kütüphane, giriş parametreleri ile çalışırken rutin işlemleri azaltır.
OOP.
Bir kullanım örneği olarak, bir ticaret danışmanını ele alalım. Ticaret mantığı yazarken OOP yaklaşımını kullanmak mantıklıdır, çünkü EA'yı daha karmaşık sistemlere yerleştirmeyi kolaylaştırır.
Mimari olarak, Test Cihazı için OOP-danışmanı şöyle görünür.
class SYSTEM { public: virtual void OnTick() {} // Giriş verisi bir dize olarak çıkarılır. virtual string ToString( void ) const = NULL; // Giriş verileri bir dize ile belirtilir. virtual int FromString( const string Str ) = NULL; }; SYSTEM* System = NULL; void OnInit() { System = new SYSTEM; } void OnTick() { System.OnTick(); } void OnDeinit( const int ) { delete System; }
Bu EA hiçbir şey yapmaz. Ancak ticaret mantığı değil, yalnızca giriş parametreleriyle çalışmak söz konusu olduğunda, kod ciddi şekilde büyür, bu da okunabilirliği kötüleştirir ve hata olasılığını artırır. Aslında, hoş olmayan rutin işler yapmanız gerekir.
Tüm giriş parametreleri bir dize olarak.
.
Biraz da kodda vurgulanan satırlara yönelelim.
Ticari uygulamalar, giriş parametrelerini dize biçiminde kaydetmenin/okumanın uygun olduğunu gösterir, böylece ilgilendiğiniz (bulunan) giriş parametreleri kümelerini hızlı ve net bir şekilde görebilirsiniz.
Amount = 1, Count = 2, Period = 3, Koef = 4.5, Log = 6.7, Flag = true Amount = 2, Count = 3, Period = 4, Koef = 4.56, Log = 7.89, Flag = false
Örneğin, yukarıdaki metinde iki giriş parametresi kümesi vardır.
Giriş parametreleriyle çalışmanın OOP klasikleri.
input int inAmount = 1; input int inCount = 2; input int inPeriod = 3; input double inKoef = 4.56; input double inLog = 7.89; input bool inFlag = true; struct INPUT_STRUCT { int Amount; int Count; int Period; double Koef; double Log; bool Flag; string ToString( void ) const { string Str = NULL; #define TOSTRING(A) Str += (::StringLen(Str) ? ", " : NULL ) + #A + " = " + (string)(this.A); TOSTRING(Amount); TOSTRING(Count); TOSTRING(Period); TOSTRING(Koef); TOSTRING(Log); TOSTRING(Flag); #undef TOSTRING return(Str); } // Yazmaya başlamadım. int FromString( const string Str ) { return(0); } } inInputs = {inAmount, inCount, inPeriod, inKoef, inLog, inFlag}; #include <fxsaber\Input_Struct\Example_OnTick.mqh> void EXAMPLE::OnTick( void ) { // Sistem Kodu... // this.Inputs giriş parametrelerini içerir. }
Yukarıdaki hantal kod aynı boş EA'dır, ancak yalnızca giriş parametreleriyle çalışma eklenmiştir (vurgulanan metin). Kod, önemli INPUT_STRUCT::FromString yönteminin uygulanması olmadan bile hoş değildir.
Bir girdi parametresi eklemek/kaldırmak isterseniz, bu kodun beş yerinde ilgili değişiklikleri yapmanız gerekecektir. Ve bu her zaman böyledir!
Giriş parametreleri ile çalışmanın OOP alternatifi.
.
#include <fxsaber\Input_Struct\Input_Struct.mqh> // Giriş parametrelerinin yapısı. INPUT_STRUCT inInputs; MACROS_INPUT(int, Amount, 1); MACROS_INPUT(int, Count, 2); MACROS_INPUT(int, Period, 3); MACROS_INPUT(double, Koef, 4.56); MACROS_INPUT(double, Log, 7.89); MACROS_INPUT(bool, Flag, true); #include <fxsaber\Input_Struct\Example_OnTick.mqh> void EXAMPLE::OnTick( void ) { // Sistem Kodu... // this.Inputs giriş parametrelerini içerir. }
Gözle görülür şekilde daha az vurgulanmış metin vardır. Aynı zamanda tüm yöntemler uygulanmaktadır.

Kullanım senaryoları.
- Bir dizi girdi parametresini değiştirirken minimum zaman ve hata olasılığı.
- Teknik özelliklerden ziyade ticaret mantığına daha fazla zaman ayrılması.
- Dize aracılığıyla giriş parametre setlerini kaydetme/okuma.
- Karmaşık sistemler (portföyler, vb.) yazmanın önemli ölçüde basitleştirilmesi.
- Özel optimizasyon algoritmalarının kolay bağlantısı.
OOP yaklaşımıyla, yukarıdaki her iki örnekte de yapıldığı gibi, mqh dosyalarında çok sayıda tekrarlayan metnin gizlenebileceğini unutmayın. OOP aynı zamanda özlü de olabilir.
Özellikler.
- Önerilen girdi parametresi yapısı basittir ve bu da uygulanabilirliği büyük ölçüde artırır.
- "Değiştirilmiş" yapılar atama operatörü aracılığıyla birbirlerine aktarılabilir. Ve her zaman aynı boyuta sahiptir.
- Kütüphane çapraz platformdur.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/47932
Sec-WebSocket-Key Generator
Sec-WebSocket-Anahtar Oluşturucu
RSI HTF
Gösterge zaman çerçevesini grafik zaman çerçevesinden farklı bir değere sabitleyerek bulunabilen RSI teknik göstergesinin klasik bir çeşidi
ExtObjects
Dedicated functions to read and write object properties.
Momentum Color Fill
The Momentum Technical Indicator measures the change of price of a financial instrument over a given time span.