Merhaba hareketli ortalama almak ve olusturmak icin
public override void OnInit()
{
...
mov = new MOV(10, MovMethod.Simple);
...
}
public override void OnDataUpdate(BarDataEventArgs barData)
{
...
var toplam = x + y;
mov.Update(toplam, barData.BarDataIndex, barData.BarData.Dtime);
//Yukarida (OnInit() içerisinde) oluşturduğumuz moving average’a bu değişkeni besliyoruz. Boylelikle toplam degiskeninin 10 periyotluk basit hareketli ortalamasini almis oluyoruz.
...
}
Rakamsal ortalama almak icin
var ortalama = toplam/n ;
Kiyaslama yapmak icin
if(mov.CurrentValue == X) state = 1;
else state = -1;
Debug tab'ine yazdirmak isterseniz
Debug(state);
2 ayri degiskenin Cross'una bakamayiz. 2 ayri listenin, array'in vs. Cross'una bakabiliriz. Kisaca Cross tespit edilebilmesi icin onceki degerleri icinde barindiran bir yapiyi kontrol ediyor olmamiz gerekiyor. Indicator class'i de verileri seri olarak icerisinde bulundurdugu icin bir indikatorun bir degiskeni cross edip etmedigine, ya da bir indikatorun baska bir indikatoru cross edip etmedigine bakabilirsiniz.
Cross fonksiyonlari CrossAbove() ve CrossBelow()'dur. Fonksiyonlarin aldigi degerlere Strateji Editorunden intellisense ile bakabilir veya IQ Algo teknik dokumanini inceleyebilirsiniz https://matriksiq.matriksdata.com/Algo_Trader_IQ.pdf
Cross fonksiyonunun kullanimi icin ornek stratejileri incelemenizi tavsiye ederiz.
Degiskenlerin hareketli ortalamasini almak icin ek olarak https://destek.matriksdata.com/?qa=29/sembol-%C3%BCzerinde-hesaplamalar-sonucun-averaj%C4%B1n%C4%B1-alabilir sorusuna da bakabilirsiniz.