Sayfa 618/618 İlkİlk ... 118518568608616617618
Arama sonucu : 4940 madde; 4,937 - 4,940 arası.

Konu: İDEAL veri terminalinde /Sistem/İndikatör/Robot

  1.  Alıntı Originally Posted by sonli Yazıyı Oku
    Daha önce twitter veya burada kapalı-kod şeklinde paylaşılmıştı ama yazanı hatırlamıyorum..
    Şu an çalışıyor mu onu da bilmiyorum ama indirip chartsistem e atarak deneyebilirsiniz..
    https://drive.google.com/file/d/1Nr6...ew?usp=sharing
    ç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 oluyor 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.

    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);
    }
    }

  2. TDS ye sistem yazmak mümkün mü
    İDEAL KOD YAZMADA YENİYİM........YOL GÖSTERMENİZ YETERLİDİR TŞK...

  3. lib.cs kullanmanın mantığı amacı nedir? kasma yapan kodlarda kullanmak avantaj sağlar mı..
    İDEAL KOD YAZMADA YENİYİM........YOL GÖSTERMENİZ YETERLİDİR TŞK...

  4. Spot için kullandıgım bir kalıp var Sn Bearbull
    belirli bir süredir gerceklesmemiş pasifte emir varsa aktifen emri gercekleştir.
    burda zaman yerıne baska kriter aktifden sat yerine yine baska kosul kullanılabilir.
    inceleyin isterseniz
    Saygılarımla
    string inpSembol = "IMKBH'AKBNK";

    var BistHesap = Sistem.BistHesapOku();
    if (BistHesap != null)
    {
    var BekleyenList = BistHesap.BekleyenEmirler;

    for (int i = 0; i < BekleyenList.Count; i++)
    {
    Sistem.Debug(
    "Bekleyen i :" + i
    + " OrderNo: " + BekleyenList[i].OrderNo
    + " OrderDate: " + BekleyenList[i].OrderDate
    + " Symbol: " + BekleyenList[i].Symbol
    + " BuySell: " + BekleyenList[i].BuySell
    + " Session: " + BekleyenList[i].Session
    + " OrderType: " + BekleyenList[i].OrderType
    + " Price: " + BekleyenList[i].Price
    + " Status: " + BekleyenList[i].Status
    );


    var zaman = DateTime.Now;
    var z1 =zaman.AddSeconds(-30);

    string z2 =BekleyenList[i].OrderDate;
    string orderNo = BekleyenList[i].OrderNo;

    if (inpSembol == BekleyenList[i].Symbol)
    {
    Sistem.Mesaj(" senedin bekleyen emri var:" + inpSembol + " orderNo:" + orderNo + " GMT saat:" + DateTime.Now.ToString("HH:mm:ss"));
    Sistem.EmirSembol = inpSembol;
    if (z1.ToString("HH:mm:ss").CompareTo(z2) == 1)
    {
    Sistem.EmirSil(orderNo);
    Sistem.EmirIslem = BekleyenList[i].BuySell;
    Sistem.EmirSuresi = "KIE"; // GUN, KIE, IKG
    Sistem.EmirTipi = "Piyasa"; // Piyasa, Limitli, Piyasadan Limite
    Sistem.EmirMiktari = BekleyenList[i].Amount;
    Sistem.EmirGonder();
    }


     Alıntı Originally Posted by Bear_Bull Yazıyı Oku
    AH AH

    o emir silme ve bekleyeni düzeltme yapmayı becerebilsek .

    Kotasyon verici olurduk piyasaya

    ben yapamıyorum
    yapabilen varsa
    sadece pasifte bekleyen emri düzelten tek satırı paylaşırsa sevinirim.

Sayfa 618/618 İlkİlk ... 118518568608616617618

Yer İmleri

Yer İmleri

Gönderi Kuralları

  • Yeni konu açamazsınız
  • Konulara cevap yazamazsınız
  • Yazılara ek gönderemezsiniz
  • Yazılarınızı değiştiremezsiniz
  •