Özel gösterge yaşam döngüsü
Örnek kod yapısı
Bu makale, kod yapısı hakkında size rehberlik edecek ve bir cTrader göstergesi için olayların ve yaşam döngüsünün arkasındaki mantığı açıklayacaktır. Özel göstergelere erişmek için Algo uygulamasındaki Yerel sekmesini açın.

Örnek olarak, kod düzenleyici penceresinde bulunan aşağıdaki örnek kodla "LifeCycle Test" adında yeni bir gösterge oluşturabilirsiniz.

Temel sürüme sıfırlamak için aşağıdaki kodu kopyalayın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | |
Bir bakışta, kod yapısı yalnızca iki yöntem içerir: Initialize() yöntemi ve Calculate() yöntemi. Bu göstergeyi test etmeye devam etmek için Oluştur'a tıklayın. Daha sonra OnDestroy() adlı ek bir yöntem ekleyeceğiz ve amacını açıklayacağız.
Başlatma olayı
Bir cTrader göstergesi ilk kez bir grafiğe eklendiğinde veya kullanıcı parametre ayarlarından herhangi birini değiştirdiğinde, bir gösterge örneği yeniden oluşturulur ve Initialize() yöntemi çağrılır. Göstergenizde kullanmayı planladığınız tüm değişkenleri başlatmak için kullanılır. Diğer göstergelerin formüllerini kullanarak tek bir gösterge oluşturmak için ilave göstergeler tanımlayabilir ve bunlara başvurabilirsiniz.
Varsayılan olarak, yeni kod şablonu "Hello world!" değerine sahip Message adlı bir parametre ayarı içerir.
1 2 | |
Initialize() yönteminde, bu mesajı günlüğe yazdırmak için bir kod satırı bulunur.
1 | |
Initialize() yöntemini göstermek için, Oluştur simgesinin yanındaki Artı simgesine tıklayarak ve bir sembol seçerek bir gösterge örneği ekleyin. Gösterge satırında Daha fazla'ya tıklayıp Örnek ekle'yi seçerseniz, s1 zaman aralığına sahip EURUSD sembolü otomatik olarak eklenecektir.

Not
cTrader Algo'da bir örnek eklemek, İşlem uygulamasında bir grafiğe gösterge eklemekle aynıdır.
Şimdi, grafiğin altındaki İşlem Gözlemi panelinde Günlük sekmesini açın. Gördüğünüz gibi, "Hello world" mesajı yazdırılmıştır.

Gösterge her grafiğe ilk eklendiğinde veya bir parametre değiştirildiğinde, grafik yenilenir ve Initialize() yöntemi tekrar çağrılır. Günlük girişinin buna göre güncellendiğini görmek için Parametreler bölümüne farklı bir mesaj yazın.

Gösterge çıktısını hesaplama
Calculate() yöntemi, geçmiş verilerin her indeksi için ve gelen her tick'te çağrılır. Örneğin, mevcut grafikte 1000 çubuk varsa, Calculate() yöntemi 0, 1, 2 ve bu şekilde maksimum 999'a kadar olan indeksler için çağrılacaktır.
1 | |
Calculate() yöntemi, yüksek volatilite dönemlerinde saniyede birden çok kez veya piyasa durgun olduğunda daha az kez çağrılabilir. Nasıl çalıştığını test etmek için, Calculate() yönteminin gövdesine, her yeni veri tick'i için yönteme iletilen indeks değerini yazdırmak üzere bir kod satırı ekleyebilirsiniz. Kod düzenleyici penceresinde değişiklikler ekledikten sonra her seferinde Oluştur'a tıklamayı unutmayın.
1 | |
Kod düzenleyici penceresinden grafiğe geçmek için eklenen gösterge örneğine tıklayın. İşlem Gözlemi panelinde Günlük sekmesini açarsanız, yönteme iletilen her indeks için yazdırılan değerleri göreceksiniz.

OnDestroy() yöntemi
OnDestroy() yöntemi, gösterge bir grafikten kaldırıldığında ve artık gerekmediğinde çağrılır. Yeni bir gösterge oluşturduğunuzda bu yöntem varsayılan olarak eklenmediği için onu uygulamanız gerekecektir.
1 2 3 4 | |
Bu yöntem, yönetilmeyen kaynakları serbest bırakmalarına ve sonlandırma görevlerini gerçekleştirmelerine olanak tanıdığı için programcılar için faydalıdır. Bellek sızıntılarını önlemeye yardımcı olur ve göstergenin kaldırıldıktan sonra kaynakları tutmamasını sağlar. Örnekler arasında harici veri akışlarına bağlantıların kapatılması, büyük veri nesnelerinin serbest bırakılması ve belleği boşaltan diğer işlemler yer alır.
Özet
Özetle, Initialize(), Calculate() ve OnDestroy() yöntemleri, özel gösterge yaşam döngüsünün farklı aşamalarını göstermektedir. Algo uygulamasındaki örnek kodu ayarlayarak, gösterge değişkenlerini nasıl başlatacağınıza, gösterge çıktısını nasıl hesaplayacağınıza ve sonlandırma görevlerini nasıl çalıştıracağınıza karar vermekte özgürsünüz.
