Aşağıdaki sistemle ilgili, ortalamanın kesişiminden çıkan alış ve satış sinyalini bir bar onceden nasıl verdirebilirim?


// kapanış fiyatlarını oku
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");

// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(C, "Exp", 50);
var MA2 = Sistem.MA(C, "Exp", 100);


// strateji
var SonYon = "";
double Fiyat = 0;
var IslemBarNo = 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];
IslemBarNo = 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];
IslemBarNo = i;
}
else if (SonYon == "S") // satış pozisyonundayken FLAT

{
var LimitBarNo = 0;
var Seviye = 0.0;
for (int k = IslemBarNo; k < i; k++)
{
if (Fiyat - L[k] > 5)
{
if (Seviye == 0 || Seviye > L[k])
{
LimitBarNo = k;
Seviye = L[k];
}
}
}
if (LimitBarNo > 0)
{
if (C[i] - Seviye > 3)
{
Sistem.Yon[i] = "F"; // flat
SonYon = Sistem.Yon[i];
}
}
}
else if (SonYon == "A") // alış pozisyonundayken FLAT
{
var LimitBarNo = 0;
var Seviye = 0.0;
for (int k = IslemBarNo; k < i; k++)
{
if (H[k] - Fiyat > 5)
{
if (Seviye == 0 || Seviye < H[k])
{
LimitBarNo = k;
Seviye = H[k];
}
}
}
if (LimitBarNo > 0)
{


if (Seviye - C[i] > 3)
{
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;