cTrader'da teknik gösterge oluşturun
Bu makale, cTrader'da algoritmik işlem yapma veya manuel eylemler için araçlar dahil olmak üzere özel teknik göstergeler oluşturma adımlarını özetlemektedir.
İpucu
Adım adım bir kılavuzda bir video izleyerek teknik göstergeler oluşturmayı öğrenin.
Algo uygulamasının Göstergeler sekmesinde, algoritma oluşturma sihirbazını açmak için Yeni düğmesine tıklayın.
Göstergeniz için bir ad girin, ardından C# ve Python arasında bir programlama dili seçin.
Bir oluşturma yöntemi seçin:
-
Sıfırdan – yeni gösterge yalnızca temel bir şablon içerecektir.
-
Şablon kullanarak – çok çeşitli gösterge türlerini, teknik analiz araçlarını ve daha fazlasını kapsayan Python# veya C# şablonları listesinden önceden hazırlanmış bir algoritma seçebileceksiniz.
Not
Önceden hazırlanmış algoritmalar, hesaplamalar ve özelleştirilebilir parametreler için zaten mantık içerir. Bu tür göstergeler, kaydedip oluşturduktan sonra grafiklerde görüntülenmeye hazırdır.
Oluştur'a tıkladıktan sonra, kod düzenleyici açılır ve gösterge kodunu düzenlemeye başlayabilirsiniz.
Kodu düzenle
Oluşturma yönteminize bağlı olarak, gösterge kodu örneği aşağıdaki öğelerden bir veya daha fazlasını içermelidir:
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 27 28 | |
Indicator özniteliği, TimeZone ve AccessRights gibi isteğe bağlı özellikleri ile birlikte, gösterge sınıfı (SimpleIndicator) bildiriminden önce gelir.
Bu yöntemler her göstergeye varsayılan olarak dahildir:
Initialize()yöntemi, göstergeniz başladığında bir kez çağrılır. Genellikle değişkenleri, iç içe göstergeleri ve başlangıçtan itibaren hazır olması gereken serileri ayarlamak için kullanılır.Calculate()yöntemi, her geçmiş çubukta otomatik olarak ve her yeni tick'te gerçek zamanlı olarak çağrılır. Burası, göstergenin formülünü uyguladığınız ve sonuçların nasıl hesaplanıp görüntüleneceğini tanımladığınız yerdir.
[Output()] özniteliği, göstergenizin ürettiği değerleri ve bunların grafikte nasıl göründüğünü belirtir. Her çıktının adını ve stilini, örneğin çizgi rengini ayarlayarak özelleştirebilirsiniz.
Initialize() ve Calculate() yöntemleri, her özel göstergenin temelini oluşturur ve asla atlanmamalıdır. Bir cBot kodlarken yaptığınız gibi, işlevselliği genişletmek için kendi yöntemlerinizi ekleyebilirsiniz. Algoritmalar hakkında daha fazla bilgi edinmek için C# temelleri kılavuzuyla başlayın ve gösterge kodu örneklerini keşfedin.
Not
Referanslar cTrader'da algoritmalar oluşturmak için tüm sınıfları, olayları, yöntemleri, değişkenleri vb. içerirken, tam algoritma örnekleri ve şablonları bir GitHub deposunda mevcuttur.
Yeni bilginizi gösterge kodunu düzenlemek ve ihtiyaçlarınıza uyarlamak için uygulayın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
SimpleIndicator sınıfı, Python'da özel bir gösterge tanımlar.
Bu yöntemler her göstergeye varsayılan olarak dahildir:
initialize(self)yöntemi, göstergeniz başladığında bir kez çağrılır. Genellikle değişkenleri, iç içe göstergeleri ve başlangıçtan itibaren hazır olması gereken serileri başlatmak için kullanılır.calculate(self, index)yöntemi, her geçmiş çubukta otomatik olarak ve her yeni tick'te gerçek zamanlı olarak çağrılır. Burası, göstergenin formülünü uyguladığınız ve sonuçların nasıl hesaplanıp görüntüleneceğini tanımladığınız yerdir.
initialize(self) ve calculate(self, index) yöntemleri, her özel göstergenin temelini oluşturur ve asla atlanmamalıdır. Bir cBot kodlarken yaptığınız gibi, işlevselliği genişletmek için sınıfın içine kendi yardımcı yöntemlerinizi de ekleyebilirsiniz. Algoritmalar hakkında daha fazla bilgi edinmek için Python temelleri ile başlayın ve gösterge kodu örneklerini keşfedin.
Yeni bilginizi gösterge kodunu düzenlemek ve ihtiyaçlarınıza uyarlamak için uygulayın.
Kaydet ve oluştur
Kodunuzu kod düzenleyicinin üst kısmındaki Kaydet düğmesine tıklayarak veya Ctrl+S kısayolunu kullanarak kaydedin.
Göstergenizi kullanmadan önce, gösterge projesini oluşturarak kodunu doğrulamanız gerekir. Kod düzenleyicinin üst kısmındaki Derle düğmesine tıklayın veya Ctrl+B tuşlarına basın.
Kodunuzu kod düzenleyicinin üst kısmındaki Kaydet simgesine tıklayarak veya Cmd+S kısayolunu kullanarak kaydedin.
Göstergenizi kullanmadan önce, gösterge projesini oluşturarak kodunu doğrulamanız gerekir. Kod düzenleyicinin üst kısmındaki Derle simgesine tıklayın veya Cmd+B tuşlarına basın.
Derleme başarılı olduğunda, Derleme sonucu bölümünde bir onay mesajı görürsünüz. Derleme başarısız olursa, bunun yerine karşılaşılan tüm hataların bir özeti görünür.
Son derlemeden bu yana kodda değişiklikler varsa, Derle simgesinin yanında bir yıldız işareti görünür. Bu durumda, göstergenin bir örneğini herhangi bir grafiğe eklemeden önce göstergeyi tekrar oluşturmalısınız.
Göstergeyi bir grafikte kullanmak veya görüntülemek için bir örneğini ekleyin veya bölümlerde açıklandığı gibi gösterge kodunu değiştirmeye devam edebilirsiniz.
NaN aritmetiği kullanın
Göstergeler belirli görselleri çıkarmak için hesaplamalar yapar ve kodunuzun bu hesaplamalar sırasında uç durumları ve sınır koşullarını doğru şekilde ele alması çok önemlidir.
Bir detrended price oscillator çıktısı veren bir göstergeden aşağıdaki kod parçasını inceleyin:
1 2 3 4 5 6 7 8 9 10 11 | |
Yukarıdaki kod genel hesaplama kurallarını tanımlar ancak sınır koşullarını atlar. Örneğin, Periods 10 olarak ayarlanmışsa ve index 0–9 aralığına düşerse, hesaplama NaN (Sayı Değil) döndürecektir. Bu sorun, göstergenin negatif bir dizine sahip bir çubuk grafik için değerleri hesaplayamaması nedeniyle oluşur.
Sorunu çözmek için aşağıda gösterildiği gibi bir koşul ekleyebilirsiniz:
1 2 3 4 5 6 7 | |
Basit hareketli ortalama kodunun kendisi de index >= Periods olduğunu kontrol etmelidir. Başka bir hareketli ortalama türü gibi iç içe bir gösterge kullanırsanız, koşul ek hesaplamaları hesaba katmak için farklılık gösterecektir.
Açık sınır koşulları tanımlayabilseniz de, C# bu sorunlardan NaN aritmetiği aracılığıyla kaçınmak için uygun bir yol sunar. Özellikle, double veri türü NaN hesaplamalarını tam olarak destekler. Örneğin:
1 2 3 4 5 | |
Ancak, bir hesaplamadaki herhangi bir işlenen NaN olduğunda, sonuç da NaN olacaktır. Özel cTrader göstergeleri DataSeries türü üzerinde çalıştığından, negatif bir dizinle bir DataSeries öğesine erişmeye çalışırsanız, NaN döndürecektir ve değer işlem grafiğine çizilmeyecektir. Bu davranış, göstergenin istisnalar fırlatmadan çalışmaya devam etmesini sağlar. Çoğu durumda, sınır koşullarını güvenle göz ardı edebilir ve yalnızca genel hesaplama mantığına odaklanabilirsiniz.
Açık kontroller ekle
NaN aritmetiği sınır koşullarını ele almayı basitleştirse de, bazı durumlarda hala açık NaN kontrolleri gereklidir. Özyinelemeli göstergeler yaygın bir örnektir. Özyinelemeli bir gösterge, mevcut değerini daha önce hesaplanan değere göre hesaplar.
Üstel hareketli ortalamanın aşağıdaki uygulamasını inceleyin:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Gösterge ilk dönemi hesapladığında, başlangıç değeri açıkça NaN olmayan bir türe ayarlanmalıdır. Aksi takdirde, sonraki tüm hesaplamalar NaN döndürür ve göstergeyi kullanılamaz hale getirir.
Yukarıdaki kodda bu, double.IsNaN(previousValue) yöntemiyle ele alınır. Bu kontrol için == operatörü (previousValue == double.NaN) kullanılamaz çünkü NaN'ın kendisi de dahil olmak üzere başka bir değerle herhangi bir karşılaştırması her zaman false olarak değerlendirilir.
Gösterge kodundan memnun kaldığınızda, onu derleyin ve ardından bir grafiğe bir örnek ekleyerek kullanın.
İlgili makaleler
