merhaba
solarwinds 0>4 bar arasında al vermiş trend magic 0>4 arsında al vermiş böyle bir sorgulama tasarladım fakat bazı hisselerde hatalı sorgular geliyor.

formülde hatalı yer varmıdır.




// solarwinds

var sw1 = Sistem.GrafikVerileri;
int count = sw1.Count;
int period = 35;
var hh = Sistem.HHV(period);
var ll = Sistem.LLV(period);
var price = Sistem.GrafikFiyatSec("OrtaNokta");
var val1 = Sistem.Liste(count);
var val2 = Sistem.Liste(count);
var sol = Sistem.Liste(count);
for (int sw = 1; sw < count; sw++)
{
val1[sw] = hh[sw] == ll[sw] ? val1[sw - 1] : 0.66f * ((price[sw] - ll[sw]) / (hh[sw] - ll[sw]) - 0.5f) + 0.67f * val1[sw - 1];
val2[sw] = val1[sw] > .99f ? .999f : val1[sw] < -.99f ? -.999f : val1[sw];
sol[sw] = .5f * (float)(Math.Log((1 + val2[sw]) / Math.Max(1 - val2[sw], .001f))) + .5f * sol[sw - 1];
}

///trendmagic
var tv = Sistem.GrafikVerileri;
var tc = Sistem.GrafikFiyatOku(tv, "Kapanis");
var th = Sistem.GrafikFiyatOku(tv, "Yuksek");
var tl = Sistem.GrafikFiyatOku(tv, "Dusuk");

var tpd = 34;
var tcoeff = 1f;
var tatrPd = 5;

var tcci = Sistem.CommodityChannelIndex(tpd);
var tatr = Sistem.AverageTrueRange(tatrPd);
var tm = Sistem.Liste(0);
for (int ti = 1; ti < tv.Count; ti++)
{
float tatrCoeff = tatr[ti] * tcoeff;
float tupT = tl[ti] - tatrCoeff;
float tdnT = th[ti] + tatrCoeff;
tm[ti] = tcci[ti] >= 0 ? tupT < tm[ti - 1] ? tm[ti - 1] : tupT : tdnT > tm[ti - 1] ? tm[ti - 1] : tdnT;
}
Sistem.SorguBaslik[0] = "Fiyat";
Sistem.SorguBaslik[1] = "Bar Geçmiş solar";
Sistem.SorguBaslik[2] = "Bar Geçmiş trend";
Sistem.SorguBaslik[3] = "TrendMagic";
Sistem.SorguBaslik[4] = "Solarwinds";
Sistem.SorguBaslik[5] = "Son Hacim";
Sistem.SorguBaslik[6] = "OrtHacim";
Sistem.SorguBaslik[7] = "V/OrtV";

Sistem.SorguOndalik[0] = 2;
Sistem.SorguOndalik[1] = 0;
Sistem.SorguOndalik[2] = 0;
Sistem.SorguOndalik[3] = 2;
Sistem.SorguOndalik[4] = 2;
Sistem.SorguOndalik[5] = 0;
Sistem.SorguOndalik[6] = 0;
Sistem.SorguOndalik[7] = 2;

Sistem.SorguSutunHizala[0] = "ORTA";
Sistem.SorguSutunHizala[1] = "ORTA";
Sistem.SorguSutunHizala[2] = "ORTA";
Sistem.SorguSutunHizala[3] = "ORTA";
Sistem.SorguSutunHizala[4] = "ORTA";
Sistem.SorguSutunHizala[5] = "ORTA";
Sistem.SorguSutunHizala[6] = "ORTA";
Sistem.SorguSutunHizala[7] = "ORTA";

Sistem.SorguAciklamaGenislik = 70;
Sistem.SorguSutunGenislik[0] = 60;
Sistem.SorguSutunGenislik[1] = 60;
Sistem.SorguSutunGenislik[2] = 60;
Sistem.SorguSutunGenislik[3] = 60;
Sistem.SorguSutunGenislik[4] = 60;
Sistem.SorguSutunGenislik[5] = 60;
Sistem.SorguSutunGenislik[6] = 60;
Sistem.SorguSutunGenislik[7] = 60;

var C = Sistem.GrafikFiyatSec("Kapanis");
var Veriler = Sistem.GrafikVerileri;
var V = Sistem.GrafikFiyatOku(Veriler, "Hacim");
var Vort = Sistem.MA(5, "Simple", "Hacim"); //son 5 periyot hacim ortalaması
var solar = Sistem.Liste(0);
var trend= Sistem.Liste(0);
for (int si = 1; si < Sistem.BarSayisi; si++)
{
solar[si] = (sol[si-1] < 0 && sol[si] > 0 ) ? 0 : solar[si-1] + 1;
}

for (int tri = 1; tri < Sistem.BarSayisi; tri++)
{
trend[tri] = (tm[tri-1] > C[tri-1] && tm[tri] < C[tri] ) ? 0 : trend[tri-1] + 1;
}

var x = Sistem.BarSayisi-1;
if (solar[x] > 0 && solar[x] < 4)
if (trend[x] > 0 && trend[x] < 4)
{
Sistem.SorguDeger[0] = C[x];
Sistem.SorguDeger[1] = solar[x];
Sistem.SorguDeger[2] = trend[x];
Sistem.SorguDeger[3] = tm[x];
Sistem.SorguDeger[4] = sol[x];
Sistem.SorguDeger[5] = V[x];
Sistem.SorguDeger[6] = Vort[x];
Sistem.SorguDeger[7] = (V[x]/Vort[x]);
if(sol[x] > 0 && tm[x] < C[x])

Sistem.SorguAciklama = "Alış Yönü";

Sistem.SorguEkle();
}