- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnCalculate
Fonksiyon, fiyat veri değişikliklerini işlemek için Calculate olayı oluştuğunda göstergelerde çağrılır. İki fonksiyon tipi vardır. Bir göstergede, sadece onlardan biri kullanılabilir.
Veri dizisine dayalı hesaplama
int OnCalculate(
|
Mevcut zaman aralığının zaman serilerine bağlı hesaplamalar
int OnCalculate(
|
Parametreler
rates_total
[in] Hesaplama için göstergeye uygun fiyat[] dizisi veya girdi serilerinin boyutu. İkinci fonksiyon tipinde; parametre değeri, çalıştığı grafikteki bar sayısına karşılık gelir.
prev_calculated
[in] Önceki çağrı sırasında, OnCalculate() fonksiyonu tarafından geri döndürülmüş değeri içerir. Bu durum, fonksiyonun önceki çalışmasından beri değişmemiş olan barların atlanması için tasarlanmıştır.
begin
[in] Anlamlı verilerin başladığı fiyat dizisi endeks değeri. Bu durum, doğru değeri olmayan kayıp veya başlangıç verilerini atlamanıza izin verir.
price[]
[in] hesaplama için değer dizisi. Fiyat zaman serilerinin biri veya bir hesaplanmış gösterge ara belleği, fiyat[] dizisi olarak geçirilebilir. Hesaplama için geçirilen veri türü _AppliedTo önceden tanımlanmış değişkeni kullanılarak tanımlanabilir.
time{}
[in] Bar açılış zaman değerlerini içeren dizi.
open[]
[in] Açılış(Open) fiyat değerlerini içeren dizi.
high[]
[in] Yüksek(High) fiyat değerlerini içeren dizi.
low[]
[in] Düşük(Low) fiyat değerlerini içeren dizi.
close[]
[in] Kapanış(Close) fiyat değerlerini içeren dizi.
tick_volume[]
[in] Tik hacim değerlerini içeren dizi.
volume[]
[in] Alım-satım hacim(Real volume) değerlerini içeren dizi.
spread[]
[in] Barların spread değerlerini içeren dizi.
Geri dönüş değeri
Bir sonraki fonksiyon çağrısı sırasında prev_calculated parametresi olarak geçirilecek int tip değeri.
Not
Eğer OnCalculate() fonksiyonu sıfıra eşitse, müşteri terminalinin DataWindow bölümünde hiçbir gösterge değeri gösterilmez.
Eğer fiyat verisi OnCalculate() fonksiyonunun son çağrısından beri değiştirilmişse (daha derin bir geçmiş yüklendi veya geçmişteki fiyat boşluğu doldu), prev_calculated girdi parametresinin değeri terminalin kendisi tarafından sıfıra ayarlanır.
time[], open[], high[], low[], close[], tick_volume[], volume[] ve spread[] dizileri arasında indeksleme yönünü belirlemek için, ArrayGetAsSeries() fonksiyonunu çağırın. Varsayılanlara bağlı olmamak için, ArraySetAsSeries() fonksiyonunu çalışılacak olan diziler için çağırın.
İlk fonksiyon tipinin kullanımında; gösterge çalıştırılırken parametre sekmesindeki -gerekli zaman serileri yada gösterge- ayarı, bir kullanıcı tarafından fiyat[] dizisi olarak seçilir. Bunu yapmak için, "Apply to" alanının açılır listesinde gerekli elemanları belirtin.
Diğer MQL5 programlarından özel gösterge değerlerini almak için, iCustom() fonksiyonu kullanılır. Sonraki operasyonlar için gösterge yönetimini geri döndürür. Ayrıca, gerekli fiyat [] dizisini veya farklı bir göstergenin yönetimini belirtmekte mümkündür. Bu parametre, bir özel göstergenin girdi değişkenleri listesinde en son geçmelidir.
OnCalculate() fonksiyonu tarafından ve prev_calculated ikinci girdi parametresi tarafından geri döndürülen değerler arasındaki bağlantıyı kullanmak gereklidir. Fonksiyonu çağırırken, prev_calculated parametresi bir önceki çağrı sırasında OnCalculate() fonksiyonu tarafından geri döndürülen değeri içerir. Bu durum, fonksiyonun bir önceki çalışmasından beri değişmemiş olan barlar için tekrarlayan hesaplamaları önlemek amacıyla, özel bir göstergenin hesaplanması adına kaynak koruyucu algoritmaların uygulanmasını mümkün kılar.
Örnek gösterge
//+------------------------------------------------------------------+
|
Ayrıca bakınız
ArrayGetAsSeries, ArraySetAsSeries, iCustom, Olay yönetimi fonksiyonları, Program yürütme, Müşteri terminali olayları, Zaman serilerine ve göstergelere eriş