Girdi Değişkenleri

input bellek sınıfı dışsal değişkenleri tanımlar. Veri tipinden önce input şekillendiricisi belirtilir. Bu şekillendiriciye sahip olan değişkenler salt okunur durumdadırlar ve MQL5 programlarının içinde değiştirilemezler. Girdi değişkenlerinin değerleri sadece kullanıcı tarafından, program özellikleri penceresinde değiştirilebilir. OnInıt() çağrısından hemen önce başlatılırlar.

Girdi değişkeni adlarının maksimum uzunluğu 63 karakterdir. string tipinde girdi parametresi için maksimum değer uzunluğu (dizge uzunluğu) 191 ila 253 karakter arasında olabilir (Nota bakın). Minimum uzunluk 0 karakterdir (değer ayarlanmamıştır).

Örnek:

//--- giriş parametreleri
input int            MA_Period=13;
input int            MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMMA;

Girdi değişkenleri, programın giriş parametrelerini belirlerler. Programın özellikler penceresinde yer alırlar.

Giriş parametreleri için değer ayarla

 

Parametre isimlerinin veriler sekmesindeki görünümünü farklı şekilde ayarlamak mümkündür. Bunu yapmak için yorumlar kullanılır. Metin, giriş parametresinin tarifinden sonra aynı satırda yer almalıdır. Bu şekilde giriş parametreleri için daha anlaşılır isimler oluşturulabilir.

Örnek:

//--- giriş parametreleri
input int            InpMAPeriod=13;         // Düzleştirme periyodu
input int            InpMAShift=0;           // Yatay çizgi kaydırma
input ENUM_MA_METHOD InpMAMethod=MODE_SMMA;  // Düzleştirme yöntemi

Giriş parametrelerinin gösterilmesinin mantıklı yolu

Not: Karmaşık tipli diziler ve değişkenler, giriş parametresi görevi üstlenemezler.

Not: Yorum dizgisinin boyutu 63 karakteri geçemez.

Not: string tipinde giriş değişkenleri için, değer uzunluğunun (dizge uzunluğu) sınırlaması aşağıdaki koşullar tarafından belirlenir:

  • parametre değeri "parameter_name=parameter_value" dizgesi ile temsil edilir ('=' dikkate alınır),
  • maksimum gösterim uzunluğu 255 karakterdir (total_length_max=255 veya '=' hariç 254 karakter),
  • parameter_name_length dizge parametresinin maksimum uzunluğu 63 karakterdir.

Bu nedenle, bir dizge parametresi için maksimum dizge boyutu aşağıdaki denklem kullanılarak hesaplanır:

parameter_value_length=total_length_max-parameter_name_length=254-parameter_name_length

Bu, 191'den (parametre_name_length=63) 253 karaktere (parameter_name_length=1) kadar maksimum dizge boyutunu sağlar.

 

Parametrelerin, Özel Göstergeler MQL5 Programlarından Çağrıldığı Sırada Geçirilmesi #

Özel göstergeler iCustom() fonksiyonu kullanılarak çağrılırlar. Özel göstergenin isminden sonra gelen parametreler, göstergenin girdi değişkenleriyle örtüşmelidir. Eğer belirtilen parametreler, çağrılan özel göstergedeki girdi değişkenlerden az ise, boş bırakılan parametreler, değişkenlerin bildirimi sırasında belirtilen değerler ile doldurulur.

Eğer özel gösterge, OnCalculate fonksiyonunun ilk tipini kullanıyorsa (gösterge aynı veri dizisi ile hesaplanıyorsa), göstergenin çağrılırken, son parametre olarak, ENUM_APPLIED_PRICE değerleri veya başka bir göstergenin tanıtıcı değeri kullanılmalıdır. Girdi değişkenlerine karşılık gelen tüm parametreler açıkça belirtilmelidir.

Giriş parametresi Şeklinde Sayımlar

MQL5 dilinde sadece yerleşik (gömülü) sayımlar değil, aynı zamanda kullanıcı tanımlı sayımlar da girdi değişkenleri (MQL5 programları için giriş parametreleri) olarak tanımlanabilir. Örneğin, haftanın günlerini tarif eden 'dayOfWeek' sayımını oluşturabiliriz ve bunu haftanın özel bir gününü belirleyecek bir girdi değişkeni şeklinde kullanabiliriz (bir sayı olarak değil, daha genel bir şekilde).

Örnek:

#property script_show_inputs
//--- haftanın günleri
enum dayOfWeek 
  {
   S=0,     // Sunday
   M=1,     // Monday
   T=2,     // Tuesday
   W=3,     // Wednesday
   Th=4,    // Thursday
   Fr=5,    // Friday,
   St=6,    // Saturday
  };
//--- giriş parametreleri
input dayOfWeek swapday=W;

Betiğin başlatılması sırasında, kullanıcının gerekli değeri seçebilmesini sağlamak için, #property script_show_inputs önişlemci komutunu kullanırız. Betiği başlatırız ve listeden dayOfWeek sayımının değerlerinden birini seçebiliriz. 'EnumInInput' betiğini başlatırız ve veriler sekmesine gideriz. Varsayılan olarak, swap gününün değeri (üçlü swap günü) Çarşambadır (W = 3) ama başka bir değer belirleyebilir ve bu değeri program işlemini değiştirmek için kullanabiliriz.

Bir giriş parametresi olarak, bir sayım örneği

Bir sayımın muhtemel değerlerinin sayısı sınırlıdır. Bir giriş değeri seçmek için çekme-liste kullanılır. listede gösterilen değerler için anımsatıcı isimler kullanılır. Örnekte görüldüğü gibi, herhangi bir yorum bu anımsatıcı isimle ilişkilendirilmişse, yorum içeriği anımsatıcı ismin yerine kullanılır.

'dayOfWeek' sayımının her bir değeri 0 ile altı arasında bir numaraya sahiptir ama parametre listesinde her bir değer için belirlenmiş yorumlar gözükür. Bu şekilde, programların giriş parametrelerinin açık tarifler ile yazılması için fazladan esneklik sağlanır.

 

sinput Şekillendiricili Değişkenler #

input şekillendiricili değişkenler sadece program çalıştırıldığı zaman dışsal değişkenlerin ayarlanmasını sağlamaz, aynı zamanda Strateji Sınayıcıdaki alım-satım stratejilerinin optimizasyonu sırasında da gereklidirler. Her girdi değişkeni (string tipli olanlar hariç) optimizasyonda kullanılabilir.

Bazen, bazı dışsal parametrelerin, sınayıcıdaki tüm geçişlerden çıkarılması gerekebilir. sinput bellek şekillendirici bu gibi durumlar için düşünülmüştür. sinput, statik dışsal değişken bildirimini simgeler (sinput = statik girdi). Yani, Uzman Danışman içindeki şu bildirimin

sinput       int layers=6;   // Katmanların sayısı

bütün bildirime eş değer olduğu anlamına gelir.

static input int layers=6;   // Katmanların sayısı

sinput şekillendiricisi ile bildirilen değişkenler MQL5 programının giriş parametreleridir. Bunların değerleri programın çalıştırılması sırasında değiştirilebilir. Ama ilgili değişkenler giriş parametrelerinin optimizasyonunda kullanılmaz. Başka bir deyişle, belli bir duruma uyan en iyi parametre kümesini ararken, bu değişkenin değerleri araştırılmaz.

Strateji Sınama Aracındaki sinput parametresi

Yukarıda gözüken Uzman Danışmanın 5 dışsal değişkeni bulunmaktadır. "Number of layers" parametresi sinput olarak bildirilmiştir ve 6'ya eşittir. Bu parametre, bir alım-satım stratejisi optimizasyonu sırasında değiştirilemez. Bunun için ileride kullanılacak gerekli değeri belirleyebiliriz. Başla, Adım ve Dur alanları bu tür değişkenler için mevcut değildir.

Bu yüzden, değişken için sinput şekillendiricisini belirlediğimizde, kullanıcılar bu parametreyi optimize edemeyecektir. Yani kullanıcılar, optimizasyon sırasında, belirlenen kapsamda otomatik numaralandırma için, strateji sınayıcı içinde başlangıç ve son değerleri belirleyemezler.

Ama bu kurala bir istisna bulunmaktadır: ParameterSetRange() fonksiyonu kullanılarak, sinput değişkenler üzerinde oynanabilir. Bu fonksiyon, statik girdi (sinput) şeklinde bildirilenler de dahil olmak üzere, herhangi bir giriş değişkeni için ayarlanan mevcut değerlerin program kontrolü için özellikle getirilmiştir. ParameterGetRange() fonksiyonu, optimizasyon başladığında, (OnTesterInit() işleyicisi içinde) girdi değişkenlerinin değerlerinin alınmasını sağlar. Ayrıca optimize edilmiş parametre değerlerinin numaralanacağı kapsamın ve değişim adımı değerinin sıfırlanmasına da izin verir.

Bu şekilde, giriş parametreleriyle çalışan iki fonksiyon ile sinput şekillendiricisini birleştirilir ve giriş parametrelerinin optimizasyon aralıklarının diğer giriş parametrelerinin değerlerine bağlı olarak ayarlandığı bir esneklik oluşturulması sağlanır.

 

Giriş parametrelerinin düzenlenmesi #

MQL5 programlarıyla çalışırken kolaylık için, giriş parametreleri group anahtar sözcüğü kullanılarak adlandırılmış bloklara bölünebilir. Bu, bazı parametrelere gömülü mantığa dayanarak diğerlerinden görsel olarak ayrılmasını sağlar.

input group           "Grup adı"
input int             variable1 = ...
input double          variable2 = ...
input double          variable3= ...

Böyle bir bildirimden sonra; tüm girdi parametreleri, bir uygulama grafikte veya strateji sınayıcısında başlatılırken parametre konfigürasyonunu MQL5 kullanıcıları için basitleştiren belirli bir gruba görsel olarak birleştirilir.  Her bir grup yeni bir grup bildirimi gelene kadar geçerlidir:

input group           "Grup adı #1"
input int             group1_var1 = ...
input double          group1_var2 = ...
input double          group1_var3 = ...
 
input group           "Grup adı #2
input int             group2_var1 = ...
input double          group2_var2 = ...
input double          group2_var3 = ...

Giriş parametreleri bloğunun amaçlarına göre bölündüğü örnek bir Uzman Danışman:

input group           "Signal"
input int             ExtBBPeriod   = 20;       // Bollinger Bantları periyodu
input double          ExtBBDeviation2.0;      // sapma
input ENUM_TIMEFRAMES ExtSignalTF=PERIOD_M15;   // BB zaman aralığı
 
input group           "Trend"
input int             ExtMAPeriod   = 13;       // Hareketli Ortalama (MA) periyodu
input ENUM_TIMEFRAMES ExtTrendTF=PERIOD_M15;    // MA zaman aralığı
 
input group           "ExitRules"
input bool            ExtUseSL      = true;     // Zararı Durdur (SL) kullan
input int             Ext_SL_Points = 50;       // puan cinsinden SL
input bool            ExtUseTP      = false;    // Kar Al (TP) kullan
input int             Ext_TP_Points = 100;      // puan cinsinden TP
input bool            ExtUseTS      = true;     // Takip Eden Zarar Durdurucu kullan
input int             Ext_TS_Points = 30;       // puan cinsinden Takip Eden Zarar Durdurucu
 
input group           "MoneyManagement"
sinput double         ExtInitialLot = 0.1;      // başlangıç lot değeri
input bool            ExtUseAutoLot = true;     // otomatik lot hesaplama
 
input group           "Auxiliary"
sinput int            ExtMagicNumber = 123456;  // Uzman Danışman Sihirli Sayısı
sinput bool           ExtDebugMessagetrue;    // hata ayıklama iletilerini yazdır

Strateji sınayıcısında bu gibi bir Uzman Danışmanı başlatırken, giriş parametreleri bloğunu daraltmak/genişletmek için bir grup adına çift tıklayabilir, ayrıca optimizasyon için grubun tüm parametrelerini seçmek üzere grup onay kutusuna tıklayabilirsiniz.

Strateji sınayıcısında Uzman Danışman giriş parametrelerinin düzenlenmesi

 

Ayrıca Bakınız

iCustom, Sayımlar, Programların özellikleri