MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
1 beğenilme 0 beğenilmeme
132 kez görüntülendi
Stratejiyi 2 farklı periyotta çalıştırabilir miyim?
Algoritmik Trading kategorisinde (125 puan) tarafından | 132 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme
En İyi Cevap

MatriksIQ istenildiği kadar farklı periyot ve sembol ile çalışmamıza olanak sağlamaktadır. 2 farklı periyot ve 2 farklı enstrüman ile kullanım aşağıda örneklendirilmiştir.
 

public class rsiHareketliOrtalamasi : MatriksAlgo
{
        [SymbolParameter("GARAN")]
        public string Symbol_0;
        [SymbolParameter("AKBNK")]
        public string Symbol_1;
        [Parameter(SymbolPeriod.Min5)]
        public SymbolPeriod SymbolPeriod_5;
        [Parameter(SymbolPeriod.Min10)]
        public SymbolPeriod SymbolPeriod_10;
 
        //… //
 
        public override void OnDataUpdate(BarDataEventArgs barData)
        {
                  int symbolid_0 = GetSymbolId(Symbol_0);
                  int symbolid_1 = GetSymbolId(Symbol_1);
                  var barDataModel_0 = GetBarData(Symbol_0, SymbolPeriod.Min5);
                  var barDataModel_1 = GetBarData(Symbol_0, SymbolPeriod.Min10);
                  var barDataModel_2 = GetBarData(Symbol_1, SymbolPeriod.Min5);
                  var barDataModel_3 = GetBarData(Symbol_1, SymbolPeriod.Min10);
                  if (symbolid_0 == barData.SymbolId && barDataModel_0.PeriodInfo == barData.PeriodInfo)
// Yukarıdaki kod asıl sembollerin datalarının ayrıştırıldığı önemli bölümdür. If bölümü, barData.Symbolid, yani bar kapanışında güncellenen datadan (rastgele) gelen id verisi GetSymbolId(Symbol_0) ile atadığımız unique ID ile karşılaştırılıyor. Aynı yöntemi rastgele gelmiş olan barData.PeriodInfo ile eşleşmek için de kullanmamız gerekiyor.

{
Close_0 = barDataModel.Close[barData.BarDataIndex-1];
 
// Ancak ve sadece bu id’ler ve Periotlar aynı oldugunda close olarak tanımladığımız 
//yeni değişkene barDataModel.Close[barData.BarDataIndex-1] ile gelen 
//Sembol’ün (yani bu örnekte ilk sembol(GARAN) ve ilk periyot(5 dakika)) 
//bir önceki kapanışı atanıyor. Böylelikle 2 sembolü ve periyotu ayrıştırmış ve 
//gelen doğru data ile eşleştirmiş oluyoruz. Bundan sonra artık Close_0 değişkenini kod içerisinde 
//GARAN, 5dk’lık bir önceki kapanış olarak kullanabiliriz 
 }
}

 

(3,499 puan) tarafından
tarafından düzenlendi
0 0

public override void OnDataUpdate  methodunun tetiklenme şartı nedir ?

hangi zaman diliminde tetikleniyor.

stratejide belirlenen periodlara göre mi yoksa Tick data mı ?

iki farklı period kullanıldıgında hangisine göre tetiklenecek ?

OnDataUpdate tetiklenme periodu
0 0

OnDataUpdate her data geldiginde ya da her yeni bar acilisinda tetiklenir. Hangisi olacagini, OnInit() icerisinde yazdigimiz WorkWithPermanentSignal()  tanimi belirler.

WorkWithPermanentSignal(true);
// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur.
// true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir.

Iki farkli periyot kullanmaniz farkli bir duruma yol acmayacaktir, yine WorkWithPermanentSignal(true) yaptigimizda belirlenen periyotlardan herhangi birinde yeni bar acilisi olustugunda OnDataUpdate tetiklenecektir.

WorkWithPermanentSignal(false) yaparsak ise her data geldiginde OnDataUpdate tetiklenecektir.

380 soru
433 cevap
506 yorum
240 kullanıcı