Williams Birikim/Dağılım (Williams AD)
Williams Birikim/Dağılım (AD), pozitif "birikimli" fiyat hareketlerinin ve negatif "dağıtıcı" fiyat hareketlerinin birikmiş toplamıdır. "Birikim" terimi, alıcılar tarafından kontrol edilen piyasayı ifade etmek için kullanılır, "dağıtım" ise piyasanın satıcılar tarafından kontrol edildiğini belirtir.
Fiyatlar yeni bir minimum seviyeye ulaştığında ve Williams AD bu seviyeye ulaşamıyor ise, güvenlik birikiminin gerçekleştiği anlamına gelir. Bu durum “Alım” sinyalini oluşturur. Fiyat yeni bir maksimum seviyeye ulaştığında ve Williams AD bu seviyeye ulaşamıyor ise, güvenlik dağıtımının gerçekleştiği anlamına gelir. Bu durum “Satım” sinyalini oluşturur.
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";
//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.WilliamsAccDist(candles);
//Eğer indikatörün bir önceki değeri, iki önceki değerinden büyükse ve SonYon BUY'a eşit değilse Alış Yap
if(Engine.PreviousValue(indicator, 1)>Engine.PreviousValue(indicator, 2) && SonYon!="BUY"){
SonYon="BUY";
SendOrder(Sembol,Directions.BUY,lot,PriceTypes.Market);
}
//Eğer indikatörün bir önceki değeri,iki önceki değerinden küçükse ve SonYon SELL'e eşit değilse Satış Yap
else if(Engine.PreviousValue(indicator,1)<Engine.PreviousValue(indicator, 2) && SonYon!="SELL"){
SonYon="SELL";
SendOrder(Sembol,Directions.SELL,lot,PriceTypes.Market);
}
}