Bu kodda bazı sıkıntılar vardı, biraz düzenledim.. Yaptığı iş: 
* m1, m2 yi yukarı kestikten sonraki bar alacak; ancak onun bir öncesine de bakacak ki, m1>m2 iken flat olmuşsa hemen yeniden almasın ******Bu da robotta kullanmaya kalktığınızda şöyle bir risk doğurur: Aldınız ve 2. bar stop oldu ama ortalama aşağı kesmedi..Sonra hisse aldı yürüdü, sizin robot arkadan bakar..Grafiklerde epey sık olan bir şey; önce ortalama yukarı kesiyor, fiyat ortalamaların altına inip ortalamaları aşağı kesiştirmeden basıyor yukarı..*** Bu arada, robot kullanmıyorum, sadece mantık  yürütüyorum!!Yani robota çevirmeye niyetlenirseniz bir sürü olasılığı test etmelisiniz..
* aldığı barın düşüğünden belirlediğin yüzde kadar aşağısını stop olarak belirleyip, her yeni yüksekte bu stop şartını gerekiyorsa güncelleyecek. Gerekiyorsadan kastım, yeni stop eskisinden yüksek mi?
	PHP Code:
	
int p1=10; //ma kısa periyot
int p2=20; //ma uzun
var C = Sistem.GrafikFiyatSec("Kapanis"); 
var L = Sistem.GrafikFiyatSec("Düsük"); 
var H = Sistem.GrafikFiyatSec("Yüksek");
var X = Sistem.SonFiyat(Sistem.Sembol); 
var m1 = Sistem.MA(p1, "Exp", "Kapanis");
var m2 = Sistem.MA(p2, "Exp", "Kapanis");
            var SonYon = ""; 
            //float StopPuan = 0.15f;//15 kuruş, Puanı kendiniz belirleyebilirsiniz, 
//puan kullanmak istiyorsanız aşağıdaki satırın önüne // koyup, yukarıdakinin önündekileri kaldırın
//hisseye özel kullanımda puan olur ama genel için % uygun; aselsan 15 kuruş %1 bile yapmazken zoren de %15 eder 
            float StopPuan = 0.015f*X;//0.015 = %1.5 ; son fiyatın % kadar puan kullan
            float SonStop = 0f; 
            var IzleyenStop = Sistem.Liste(0);
 
//son 1000 bar baksın, performans için 
for (int i = Sistem.BarSayisi-1000; i < Sistem.BarSayisi; i++)  { 
//alışta değilse, bir önceki bar m1 > m2 ve ondan önceki barda da m1<m2 mi? aksi durumda m1>m2 iken flat olursa hemen yine alır..
     if ( m1[i-1]>m2[i-1] && m1[i-2]<m2[i-2] && SonYon!="A") 
                { 
                    SonYon = Sistem.Yon[i] = "A"; 
                    SonStop = L[i] - StopPuan; //Alışın gerçekleşmesiyle stopu belirledik 
                    IzleyenStop[i] = SonStop;
                } 
  if ( SonYon =="A") {                     
     if (H[i] > H[i-1] && (L[i]-StopPuan)>SonStop ) { //Yeni yüksek var ve potansiyel stop eski stoptan yüksekse.. 
             SonStop = L[i] - StopPuan; //Stop güncellenir 
             IzleyenStop[i] = SonStop; 
      }  else IzleyenStop[i] = SonStop;   //Stop seviyesi değişmez 
  
  if (C[i] < IzleyenStop[i-1]) //Stop altında kapatırsa 
     { 
       SonYon = Sistem.Yon[i] = "F"; // yön flate döner
       //IzleyenStop[i] = H[i-1]; //flat olduğunda görsel açıdan - sistem etkisi yok - stop yukarı atsın istiyorsan bu satırın başındaki // kaldır
     }
//alışta son      
  } else IzleyenStop[i] = IzleyenStop[i-1]; //Burayı sadece sonstop seviyelerini grafikte görebilmeniz için yazdım 
//for son
}
Sistem.Cizgiler[0].Deger = IzleyenStop;
Sistem.Cizgiler[1].Deger = m1;
Sistem.Cizgiler[2].Deger = m2; 
 
Bu da idealin içinde geliyor diye hatırlıyorum ama Sistem_Stop_Take_MA, gelmiyorsa da sabit rakamlarla kar al - zarar durdur..
	PHP Code:
	
//%5 Kar Al, %2 Zarar durdur sistem örneği.
// kapanış fiyatlarını oku
var C = Sistem.GrafikFiyatSec("Kapanis");
   
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(C, "Exp", 50);
var MA2 = Sistem.MA(C, "Exp", 100);
// strateji
var SonYon = "";
double Fiyat = 0;
for (int i = 1; i<Sistem.BarSayisi; i++)
{
   if (MA1[i-1] < MA2[i-1] && MA1[i] >= MA2[i] && SonYon != "A") // AL
   {
      Sistem.Yon[i] = "A";  // alış
      SonYon = Sistem.Yon[i];
      Fiyat = C[i];
   }
   else if (MA1[i-1] > MA2[i-1] && MA1[i] <= MA2[i] && SonYon != "S") // SAT
   {
      Sistem.Yon[i] = "S";  // satış
      SonYon = Sistem.Yon[i];
      Fiyat = C[i];
   }
   else if (SonYon == "A" &&  C[i] > Fiyat * 1.05)   // % 5 kar realizasyonu
   {
      Sistem.Yon[i] = "F";  // flat
      SonYon = Sistem.Yon[i];
   }
   else if (SonYon == "A" &&  C[i] < Fiyat * 0.98)   // % 2 stop
   {
      Sistem.Yon[i] = "F";  // flat
      SonYon = Sistem.Yon[i];
   }
   else if (SonYon == "S" &&  C[i] < Fiyat * 0.95)   // % 5 kar realizasyonu
   {
      Sistem.Yon[i] = "F";  // flat
      SonYon = Sistem.Yon[i];
   }
   else if (SonYon == "S" &&  C[i] > Fiyat * 1.02)   // % 2 stop
   {
      Sistem.Yon[i] = "F";  // flat
      SonYon = Sistem.Yon[i];
   }
}
// hesaplanan verileri çizgilere aktar ve açıklama ekle
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[1].Deger = MA2; 
  
			
		
Yer İmleri