- Yerel Değişkenler
- Biçimsel Parametreler
- Statik Değişkenler
- Global Değişkenler
- Giriş Değişkenler
- Extern Değişkenler
- Değişkenlerin Başlatılması
- Değişkenlerin Görünürlük Alanları ve Ömürleri
- Nesnelerin Oluşturulması ve Silinmesi
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
|
Girdi değişkenleri, programın giriş parametrelerini belirlerler. Programın özellikler penceresinde yer alırlar.
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
|
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
|
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 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.
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ı"
|
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"
|
Giriş parametreleri bloğunun amaçlarına göre bölündüğü örnek bir Uzman Danışman:
input group "Signal"
|
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.
Ayrıca Bakınız