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.