Neden girdi parametrelerini bir yapıya koymuyorsunuz?

 

"Sınıfta danışman" yaklaşımından bahsediyorum. Giriş parametrelerinin , sınıfı ayrı bir .mqh dosyasında bulunan bir Expert Advisor'a iletilmesinde bir sorun var. iki yol kullanırım

  1. Giriş parametreleri, bir veya daha fazla başlatma işlevi tarafından EA sınıfının alanlarına kopyalanır. En evrensel yaklaşım, ancak çok sayıda değişken olması durumunda en çok zaman alan yaklaşımdır.
  2. Sınıf, girdi değişkenlerinden sonra tanımlanır, yani EA'dan görülebilirler. Dezavantajı, birden çok sınıf örneği kullanırken daha az esnekliktir. Artı - minimum yazı.

 input double LotSize = 0.1 ;
// другие input переменные...

#include <MyLib\MyClassEA.mqh>
CMyClassEA MyEA;

Peki ya MQL dilinin bir uzantısını yapıp girdi değişkenlerini bir yapıya yerleştirirsek? Aynı şekilde, işaretçilerin taklidi nedeniyle C++ ve C ile uyumlu değildir. Öyleyse neden daha ileri gitmiyorsun?

 struct InputVars
{
     input double Lot   = 0.1 ;
     input int     Magik = 100 ;
} ivars;

O zaman ivars değişkenini algoritma sınıfına geçirmek, kopyalamak vb.

Fikri beyin fırtınası düzeyinde ele alın))

 

Uzun zamandır birçok ayar ile çalışma ihtiyacı ile uğraşmak zorunda kaldım. Mümkün olduğunda, bu sorunu DLL üzerinden parametrelerin sekmelere ayrıldığı özel bir iletişim kutusu oluşturarak çözüyorum. Başlatma işleminden sonra bu pencere gizlenir ve ardından program her zamanki gibi çalışır.

Şimdi, büyük bir parametre listesinde gezinmemek için MQL'de benzer bir şey olsaydı. Teklifin kendisi, nasıl düzenleneceği ilginç. Yalnızca sözdizimi kendini biraz farklı gösteriyor:

 input struct VolumeParams                               // Здесь название вкладки
{
     // Содержимое вкладки
     double Lot1 = 0.01 ;
     double Lot2 = 0.02 ;
     double LotRatio = 1.5 ;
};
 
Ihor Herasko :

Uzun zamandır birçok ayar ile çalışma ihtiyacı ile uğraşmak zorunda kaldım. Mümkün olduğunda, bu sorunu DLL üzerinden parametrelerin sekmelere ayrıldığı özel bir iletişim kutusu oluşturarak çözüyorum. Başlatma işleminden sonra bu pencere gizlenir ve ardından program her zamanki gibi çalışır.

Şimdi, büyük bir parametre listesinde gezinmemek için MQL'de benzer bir şey olsaydı. Teklifin kendisi, nasıl düzenleneceği ilginç. Yalnızca sözdizimi kendini biraz farklı gösteriyor:


doğru, çok daha kısa) ama dll ile ne yazık ki Market'e gitmeyecek.

ve iletişim kutusunu kullanmak, test cihazındaki parametreleri optimize etmenize izin vermez

 

o zaman böylesi daha iyi:

 struct VolumeParams                              
{
     double lot;         //название параметра
     double LotRatio;     //название параметра
     int tp;             //название параметра
     int sl;             //название параметра
     int orders;         //название параметра
};
VolumeParams ParamBuf[ 5 ];

input ParamBuf[ 0 ];         // Здесь название вкладки
input ParamBuf[ 1 ];         // Здесь название вкладки
input ParamBuf[ 2 ];         // Здесь название вкладки
input ParamBuf[ 3 ];         // Здесь название вкладки
input ParamBuf[ 4 ];         // Здесь название вкладки
 

IMHO, mükemmel fikir, OOP kavramına karşılık gelir. Şimdiye kadar 2 seçenek görüyorum:

1) FrameInputs tarzında

parameters

[out] Parametre adları ve değerlerinin açıklamasını içeren dize dizisi

parametreler_sayısı

[out] Parametreler[] dizisindeki öğelerin sayısı .

2) MqlParams tarzında.

 

Ben her zaman ilk yaklaşımı kullanırım.

Bir Expert Advisor bir ticarete konulduğunda (en azından bir demoda, en azından gerçek bir tanesinde) - parametreler sabitlenir - ve Expert Advisor sınıfına sadece bir parametre iletilir - risk yüzdesi. Bununla birlikte, ayar parametreleri aynı yapıda yazılır ve Uzman Danışman içinde tanımlanır - ya yapıcıda ya da özel bir işlevde.

 
Alexey Volchanskiy :

"Sınıfta danışman" yaklaşımından bahsediyorum. Giriş parametrelerinin , sınıfı ayrı bir .mqh dosyasında bulunan bir Expert Advisor'a iletilmesinde bir sorun var.

Sorunu hissetmedim. Şablonu sınıf yapıcısına kaydedin ve hepsi bu.

 
fxsaber :

Sorunu hissetmedim. Şablonu sınıf yapıcısına kaydedin ve hepsi bu.


Müşterilerle iletişim kurmadınız)

...burada müşteri 10 giriş istiyor ve her adımın kendi tp / sl / lot / iz / giriş sinyali var

ve hepsinin test cihazında optimize edildiğini)

 
Taras Slobodyanik :

Müşterilerle iletişim kurmadınız)

...burada müşteri 10 giriş istiyor ve her adımın kendi tp / sl / lot / iz / giriş sinyali var

ve hepsinin test cihazında optimize edildiğini)

Peki bu, konunun konusuyla nasıl ilişkilidir?

 
fxsaber :

Peki bu, konunun konusuyla nasıl ilişkilidir?


Tartışmanın kendisi gerçekten de konu başlığından biraz sapmış. Şimdi TS gönderisinin ikinci kısmı daha fazla tartışılıyor:

Alexey Volchanskiy

Peki ya MQL dilinin bir uzantısını yapıp girdi değişkenlerini bir yapıya yerleştirirsek? Aynı şekilde, işaretçilerin taklidi nedeniyle C++ ve C ile uyumlu değildir. Öyleyse neden daha ileri gitmiyorsun?

O zaman ivars değişkenini algoritma sınıfına geçirmek, kopyalamak vb.

 
fxsaber :

Peki bu, konunun konusuyla nasıl ilişkilidir?


Bu doğrudur, tüm bu parametre yığınını yazmak için yapıyı tanımlamak ve giriş parametrelerinin içine koymak yeterli olacaktır.

Neden: