Stokastik Momentum Endeksi
William Blau tarafından geliştirilen Stokastik Momentum kapanış fiyatının, fiyatın belirlenen zaman dilimi içindeki günlük düşük-yüksek aralığının orta noktasına olan uzaklığını kullanır. Bu osilatör -100 ve 100 arasında değişirek eşit periyodlu Stokastik Osilatör’den biraz daha az değişken bir yapı sergiler. Bir çift çizgi ile gösterilen bu göstergede, %K eğrisinin %D eğrisini yukarı kırması “Alım” sinyali iken %K eğrisinin %D eğrisini aşağı kırması “Satım” sinyali olarak kabul edilir.
KODLAMA EDİTÖRÜ ÖRNEĞİ
//Strateji Girdilerinin(Gloabal Değişkenler) tanımlaması
public string SonYon="";
public string Sembol="VAKBN";
int lot=1;
public string Periyot="1";
//İndikatörün parametresini tanımlıyoruz.
int Parametre1=5;
int Parametre2=3;
int Parametre3=3;
//Strateji çalışmaya başladığında ilk olarak Load fonksiyonunu çalıştırır.
public void Load()
{
//SubscribePrice(Sembol) metodu ile o sembol'e abone olur ve fiyat dinlemeye başlar.
SubscribePrice(Sembol);
}
//Fiyat değişikliklerinde girilen fonksiyon
public void PriceChanged(Tick t)
{
//GetCandles(Sembol,Periyot) metodu ile sembolun o periyottaki açılış,kapanış vs. fiyatlarını tutan bir listeyi çeker.
var candles = GetCandles(Sembol,Periyot);
// Aşağıdaki kod satırı ile indikatörümüzü tanımlıyoruz.
var indicator = Engine.StochasticMomentumIndex(candles,Parametre1,Parametre2,Parametre3);
var indicator1=indicator[0];
var indicator2=indicator[1];
//Eğer indikatörün birinci çizgisi ikinci çizgisini aşağıdan yukarı keserse ve SonYon BUY'a eşit değilse Alış Yap
if(Engine.Intersect(indicator1,indicator2, "up") && SonYon!="BUY"){
SonYon="BUY";
SendOrder(Sembol,Directions.BUY,lot,PriceTypes.Market);
}
//Eğer indikatörün birinci çizgisi ikinci çizgisini yukarıdan aşağı keserse ve SonYon SELL'e eşit değilse Satış Yap
else if(Engine.Intersect(indicator1,indicator2, "down") && SonYon!="SELL"){
SonYon="SELL";
SendOrder(Sembol,Directions.SELL,lot,PriceTypes.Market);
}
}