MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
1 beğenilme 0 beğenilmeme
Algoritmik Trading kategorisinde (65 puan) tarafından

1 cevap

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

Evet yazılabilir. Örnek olarak Hazır Stratejilerde GAOrt2Hisse stratejisine bakabilirsiniz. (Günlük Ağırlıklı Ortalama, 2 Hisse).

Bu stratejide OnInit() fonksiyonu altına:

AddSymbol(Symbol, SymbolPeriod);
AddSymbol(Symbol_1, SymbolPeriod);

 

Yazılarak 2 sembol eklenmiştir. Daha sonra OnDataUpdate(BarDataEventArgs barData) fonksiyonu altına (her bar açılışında çalışacak fonksiyondur)

---------------------------------------

int symbolid = GetSymbolId(Symbol);
​int symbolid1 = GetSymbolId(Symbol_1);

yazarak 2 ayrı unique sembol id saklanır.

var barDataModel = GetBarData(Symbol, SymbolPeriod.Min);
var barDataModel_1 = GetBarData(Symbol_1, SymbolPeriod.Min);

yazarak 2 ayrı sembol için bar data alınır ve barDataModel ve barDataModel_1 şeklinde isimlendirdiğimiz objelere atar.


if (symbolid == barData.SymbolId)
        close = barDataModel.Close[barData.BarDataIndex];
if (symbolid1 == barData.SymbolId)
        close_1 = barDataModel_1.Close[barData.BarDataIndex];

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) ile atadığımız unique ID ile karşılaştırılıyor. Ancak bu id’ler aynı oldugunda close olarak tanımladığımız yeni değişkene barDataModel.Close[barData.BarDataIndex] ile gelen Sembol’ün (yani ilk sembol/enstrüman) kapanışı atanıyor. Böylelikle 2 sembolü ayrıştırmış oluyoruz.

 

Bu 4 satır çalıştıktan sonra close değişkeninde 1. sembolün, close_1 değişkeninde ise 2. sembolün kapanış değerleri ayrıştılarak kaydedilmiş oluyor.

 

Yukarıdaki şekilde sembol eklemeye devam ederek, kod içerisinde kullanılan semboller istenildiği kadar çoğaltılabilmektedir.

(965 puan) tarafından
tarafından seçilmiş
49 soru
52 cevap
51 yorum
61 kullanıcı