çok teþekkür ederim sn. sonli,
bu esnada yapay zekalarýn da yardýmýyla -sanýrým- 9 sayýmlarýný, destek dirençleri ve stoplarý çizdirebildim. ama neyi denesem de 9 kurulumlarý sonrasý countdownlarý saydýramadým. açýkçasý kod bilgim zayýf olduðu için yz ler yardýmýyla bu kadar oluyortrend takip vs. bir sürü indikatör deniyoruz, bu yetenekli indikatörü de biraz kurcalayayým dedim, o yüzden uðraþýyorum açýk hali olsun diye. algomarket sitesine de levent diye bir arkadaþ kapalý halini yüklemiþ, onunla kendi kodumu doðruladým.
yazdýðýmý da býrakayým buraya, belki vakti uygun olan bir el verir tamam ederiz kodu.algomarkete de yükleriz isteyen açýk halini de kullanýr.
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
int[] Al_Kurulum = new int[Sistem.BarSayisi];
int[] Sat_Kurulum = new int[Sistem.BarSayisi];
bool AK = false; // Bu deðiþkenler genel durumu takip etmek için, ikinci adýmda kullanýlacak.
bool SK = false;
var Destek = Sistem.Liste(0); // Bu diziler birinci adýmda doldurulacak.
var Direnc = Sistem.Liste(0);
// Al_Stop_Fark ve Sat_Stop_Fark doðrudan çizimle ilgili deðil, orijinaldeki gibi kalabilir.
// var Al_Stop_Fark = Sistem.Liste(0);
// var Sat_Stop_Fark = Sistem.Liste(0);
// Yeni bir hesaplama için dizilerin baþýnda sýfýr olduðunu varsayýyoruz.
for (int i_pass1 = 0; i_pass1 < Sistem.BarSayisi; i_pass1++)
{
if (i_pass1 < 4) // Ýlk 4 bar için (0, 1, 2, 3) özel durum veya baþlangýç deðerleri
{
Al_Kurulum[i_pass1] = 0;
Sat_Kurulum[i_pass1] = 0;
if (i_pass1 > 0)
{
// Destek ve Direnc için baþlangýç deðerlerini taþýma veya ayarlama
if (i_pass1 == 0) {
Direnc[i_pass1] = H[i_pass1]; Destek[i_pass1] = L[i_pass1];
} else {
Direnc[i_pass1] = Direnc[i_pass1 - 1]; Destek[i_pass1] = Destek[i_pass1 - 1];
}
} else { // i_pass1 == 0
// Direnc[0] ve Destek[0]'a ilk deðerler.
// Bu, Sistem.Liste(0) ile zaten yapýlmýþ olabilir.
}
continue; // Ana setup hesaplama mantýðý i=4'ten sonra baþlar.
}
// --- Alýþ Kurulumu Hesaplamasý ---
if (C[i_pass1] < C[i_pass1 - 4])
{
Al_Kurulum[i_pass1] = Al_Kurulum[i_pass1 - 1] < 9 ? Al_Kurulum[i_pass1 - 1] + 1 : 1;
if (Al_Kurulum[i_pass1] == 1) {
Direnc[i_pass1] = H[i_pass1]; // Setup'ýn ilk barýnda S/R seviyeleri o barýn H/L'si olur.
Destek[i_pass1] = L[i_pass1];
} else { // Setup devam ediyor, S/R seviyelerini güncelle.
Direnc[i_pass1] = Math.Max(Direnc[i_pass1 - 1], H[i_pass1]);
Destek[i_pass1] = Math.Min(Destek[i_pass1 - 1], L[i_pass1]);
}
Sat_Kurulum[i_pass1] = 0; // Alýþ kurulumu aktifse, satýþ kurulumunu sýfýrla.
}
else // C[i_pass1] >= C[i_pass1 - 4] (Alýþ kurulum koþulu bozuldu)
{
Al_Kurulum[i_pass1] = 0;
// Önceki S/R seviyelerini koru (orijinal kodunuzdaki gibi).
Direnc[i_pass1] = Direnc[i_pass1 - 1];
Destek[i_pass1] = Destek[i_pass1 - 1];
}
// --- Satýþ Kurulumu Hesaplamasý ---
if (C[i_pass1] > C[i_pass1 - 4])
{
Sat_Kurulum[i_pass1] = Sat_Kurulum[i_pass1 - 1] < 9 ? Sat_Kurulum[i_pass1 - 1] + 1 : 1;
if (Sat_Kurulum[i_pass1] == 1) {
// Satýþ kurulumu baþlýyorsa, S/R seviyelerini kendi barýnýn H/L'si ile baþlatýr.
// Bu, yukarýdaki Alýþ Kurulumu tarafýndan ayný bar için ayarlanmýþ Direnc/Destek deðerlerinin üzerine yazabilir.
Direnc[i_pass1] = H[i_pass1];
Destek[i_pass1] = L[i_pass1];
} else { // Setup devam ediyor, S/R seviyelerini güncelle.
Direnc[i_pass1] = Math.Max(Direnc[i_pass1 - 1], H[i_pass1]);
Destek[i_pass1] = Math.Min(Destek[i_pass1 - 1], L[i_pass1]);
}
Al_Kurulum[i_pass1] = 0;
}
else // C[i_pass1] <= C[i_pass1 - 4] (Satýþ kurulum koþulu bozuldu)
{
Sat_Kurulum[i_pass1] = 0;
// Eðer yukarýdaki Alýþ Kurulumu bloðu çalýþtýysa, Direnc/Destek zaten ayarlanmýþtýr.
}
}
// --- ÝKÝNCÝ ADIM: Ýþleme ve Çizim (Birinci adýmda hesaplanan diziler kullanýlarak) ---
for (int i = 4; i < Sistem.BarSayisi; i++)
{
// --- BUY SETUP PROCESSING --- (Alýþ Kurulumu Ýþleme)
if (Al_Kurulum[i] > 0 && Al_Kurulum[i] <= 9) // Birinci adýmdan gelen Al_Kurulum[i] deðeri
{
string yazi = Al_Kurulum[i].ToString();
Color renk = Color.Red;
int fontBoyut = 10;
if (Al_Kurulum[i] == 9)
{
AK = true;
SK = false;
// TD Fiyat Flip Kontrolü (9. barýn 6. ve 7. barlarýn low'undan düþük olmasý)
if (i >= 3) // L[i-3] ve L[i-2] için güvenlik kontrolü
{
// 9 barlýk bir setup i'de bitiyorsa:
// i -> 9. bar
// i-1 -> 8. bar
// i-2 -> 7. bar (low7)
// i-3 -> 6. bar (low6)
double low_bar_6_of_setup = L[i - 3];
double low_bar_7_of_setup = L[i - 2];
if (L[i] < low_bar_6_of_setup && L[i] < low_bar_7_of_setup)
{
renk = Color.Blue; // "Mükemmel" alýþ setup'ý için renk deðiþimi
fontBoyut = 11;
}
}
float direncSeviyesi = (float)Direnc[i]; // Birinci adýmdan: 9 barlýk alýþ setup'ýnýn en yüksek deðeri (TDST Direnç)
int basla = i; // Çizgi, 9. barýn olduðu yerden baþlar
int bitis = Sistem.BarSayisi - 1; // Varsayýlan olarak grafiðin sonuna kadar uzat
for (int k = basla + 1; k < Sistem.BarSayisi; k++)
{
bool terminate = false;
// Koþul 1: Fiyat direncin üzerine kapanýrsa
if (C[k] > direncSeviyesi)
{
terminate = true;
}
// Koþul 2: Yeni bir satýþ kurulumu 9 sayýsýný tamamlarsa (Sat_Kurulum[k] birinci adýmdan)
if (!terminate && Sat_Kurulum[k] == 9)
{
terminate = true;
}
if (terminate)
{
bitis = k -1; // Çizgi, olayýn olduðu barýn bir öncesine kadar geçerli
break;
}
}
if (bitis < basla) bitis = basla; // Bitiþ baþlangýçtan önce olamaz
Sistem.CizgiCiz(1, basla, direncSeviyesi, bitis, direncSeviyesi, Color.Red, 2, 3);
// Stop seviyesi ve diðer çizimler (orijinaldeki gibi devam ediyor)
int setupStartBar = i - 8;
double enDusukFiyat = L[setupStartBar];
int enDusukBar = setupStartBar;
for (int j = setupStartBar; j <= i; j++) {
if (L[j] < enDusukFiyat) {
enDusukFiyat = L[j];
enDusukBar = j;
}
}
double fark = H[enDusukBar] - L[enDusukBar];
double StopSeviyesi = enDusukFiyat - fark;
Sistem.CizgiCiz(1, enDusukBar, (float)StopSeviyesi, enDusukBar + 30, (float)StopSeviyesi, Color.Blue, 2, 2); // Orijinal +30 bar uzatma
Sistem.Parametreler[0] = fark.ToString();
Sistem.BarRengi(enDusukBar, Color.Red, 3, 1);
}
Sistem.YaziEkle(yazi, 1, i, H[i] * 1.0001f, renk, "Tahoma", fontBoyut);
}
// --- SELL SETUP PROCESSING --- (Satýþ Kurulumu Ýþleme)
if (Sat_Kurulum[i] > 0 && Sat_Kurulum[i] <= 9) // Birinci adýmdan gelen Sat_Kurulum[i] deðeri
{
string yazi = Sat_Kurulum[i].ToString();
Color renk = Color.Green;
int fontBoyut = 10;
if (Sat_Kurulum[i] == 9)
{
SK = true;
AK = false;
// TD Fiyat Flip Kontrolü (9. barýn 6. ve 7. barlarýn high'ýndan yüksek olmasý)
if (i >= 3)
{
double high_bar_6_of_setup = H[i - 3];
double high_bar_7_of_setup = H[i - 2];
if (H[i] > high_bar_6_of_setup && H[i] > high_bar_7_of_setup)
{
renk = Color.Magenta; // "Mükemmel" satýþ setup'ý için renk deðiþimi
fontBoyut = 11;
}
}
float destekSeviyesi = (float)Destek[i]; // Birinci adýmdan: 9 barlýk satýþ setup'ýnýn en düþük deðeri (TDST Destek)
int basla = i;
int bitis = Sistem.BarSayisi - 1;
for (int k = basla + 1; k < Sistem.BarSayisi; k++)
{
bool terminate = false;
// Koþul 1: Fiyat desteðin altýna kapanýrsa
if (C[k] < destekSeviyesi)
{
terminate = true;
}
// Koþul 2: Yeni bir alýþ kurulumu 9 sayýsýný tamamlarsa (Al_Kurulum[k] birinci adýmdan)
if (!terminate && Al_Kurulum[k] == 9)
{
terminate = true;
}
if (terminate)
{
bitis = k -1;
break;
}
}
if (bitis < basla) bitis = basla;
Sistem.CizgiCiz(1, basla, destekSeviyesi, bitis, destekSeviyesi, Color.Green, 2, 3);
// Stop seviyesi ve diðer çizimler (orijinaldeki gibi devam ediyor)
int setupStartBar = i - 8;
double enYuksekFiyat = H[setupStartBar];
int enYuksekBar = setupStartBar;
for (int j = setupStartBar; j <= i; j++) {
if (H[j] > enYuksekFiyat) {
enYuksekFiyat = H[j];
enYuksekBar = j;
}
}
double fark = H[enYuksekBar] - L[enYuksekBar];
double StopSeviyesi = enYuksekFiyat + fark;
Sistem.CizgiCiz(1, enYuksekBar, (float)StopSeviyesi, enYuksekBar + 30, (float)StopSeviyesi, Color.Magenta, 2, 2); // Orijinal +30 bar uzatma
Sistem.Parametreler[1] = fark.ToString();
Sistem.BarRengi(enYuksekBar, Color.Green, 3, 1);
}
Sistem.YaziEkle(yazi, 1, i, H[i] * 1.0001f, renk, "Tahoma", fontBoyut);
}
}



trend takip vs. bir sürü indikatör deniyoruz, bu yetenekli indikatörü de biraz kurcalayayým dedim, o yüzden uðraþýyorum açýk hali olsun diye. algomarket sitesine de levent diye bir arkadaþ kapalý halini yüklemiþ, onunla kendi kodumu doðruladým.
Alýntý yaparak yanýtla

Yer Ýmleri