Bear_Bull Hocam anlatmış sağ olsun, ama kodun tamamını açıklamalı şekilde incelerseniz daha iyi anlaşılır. Daha önce şurada
https://www.hisse.net/topluluk/showt...66#post3516466 paylaştığım kodu tamamen açıklamaya çalıştım. Kitabın açıklamasına göre yazmıştım hatalı olmadıysa.. Yalnız burada sadece satış şartı var, alım şartı olmadığından eski yüksek geçilene kadar takip etmez, dolayısıyla sabit gider.. Sistem değil de son x bar için iz süren stop indikatörü bu haliyle.. Bahsettiğiniz kod parçası ise sadece alttaki kodda stop şartını değiştirmek amacı taşıyor. Alttaki haliyle;
stop=Son yüksek barın düşüğü - puan
iken, üstteki kod parçacığını ilgili bölüm ile değiştirirseniz şu hale döner:
stop = Eski stop + (yeni yüksek- bir önceki yüksek)
Bu arada değiştirecek olursanız, yukarıdaki kodda b[i] =b[i-1]+( H[i-1]-a[i-1]); sondaki ; eksik kalmış..
PHP Code:
//Fiyat bölgesi indikatörü olarak son x bar için iz süren stop
//(stop= son x bardaki her yeni en yüksek barın düşüğü -belirlenen puan)..
var bars = 100;//son kaç barı takip edecek
var puan = 0.10f;//stop=düşük-puan..10 kuruş düşürerek takip edecek bu haliyle
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var a = Sistem.Liste(0);//yüksek listesi
var b = Sistem.Liste(0);//stop
var SonYon = "";
for (int i = Sistem.BarSayisi-bars; i < Sistem.BarSayisi; i++)
{
//Sondan bir önceki barın(i-1) yükseği, son yükseğimizden büyük mü? yani yeni yüksek var mı?
if (H[i-1]>a[i-1] ) { //yeni yüksek var mı
//varsa
a[i] =H[i-1];//sonraki barlarda kıyaslamak için a ya yeni yükseği atıyoruz
//son stop seviyemiz b, yeni yüksek barımızın (düşüğü-puan) dan düşük mü? düşükse stobu yukarı taşıyacağız, değilse eski stop devam..
if (b[i-1]<(L[i-1]-puan)) b[i] =L[i-1]-puan; //eski stop düşük kaldı, yeni stop b=son yükseğin düşüğü-puan
else b[i] =b[i-1] ; //eski stop daha yukarıda, o zaman eskimemiş, aynı stopla devam
} else { //yeni yüksek yok, o zaman yüksek ve stop listemiz eskilerle devam ediyor
a[i] =a[i-1] ;
b[i] =b[i-1] ;
}
if (C[i]<b[i] && SonYon !="S") // Fiyat stop altı, SAT
{
SonYon = Sistem.Yon[i] = "S";
}
}
Sistem.Cizgiler[0].Deger = a;
Sistem.Cizgiler[1].Deger = b;
Yer İmleri