Sayfa 129/594 İlkİlk ... 2979119127128129130131139179229 ... SonSon
Arama sonucu : 4751 madde; 1,025 - 1,032 arası.

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

  1.  Alıntı Originally Posted by Andromeda Yazıyı Oku
    şu kod iş görebilir.
    VIOP 1 dakikalık grafik üzerinde çalıştırın.
    şu satırdan kopyalayıp istediğiniz kadar sistem ekleyebilirsiniz.
    ilk parametre sistem adı
    ikinci parametre periyot
    üçüncü parametre lot sayısı

    ParametreList.Add("S3 , 1, 1");


    Kod:
    var ParametreList = new List<string>();
    ParametreList.Add("S3 , 1, 1");
    ParametreList.Add("S5 , 1, 1");
    ParametreList.Add("S6 , 1, 2");
    ParametreList.Add("S7 , 1, 1");
    ParametreList.Add("S9 , 1, 1");
    
    
    
    
    
    
    
    var V = Sistem.GrafikVerileri;
    var C = Sistem.GrafikFiyatOku(V, "Kapanis");
    for (int i = 300; i < V.Count; i++)
    {
        if (V[i].Date.Month != V[i - 1].Date.Month)
            Sistem.DikeyCizgiEkle(i, Color.DimGray, 2, 2);
    }
    
    
    var SistemList = new List<string>();
    var PeriyotList = new List<string>();
    var LotList = new List<float>();
    for (int i = 0; i < ParametreList.Count; i++)
    {
        var FieldArray = ParametreList[i].Split(',');
        SistemList.Add(FieldArray[0].Trim());
        PeriyotList.Add(FieldArray[1].Trim());
        LotList.Add(Convert.ToSingle(FieldArray[2].Trim()));
    }
    
    
    var ViopData = Sistem.GrafikVerileri;
    var TarihDictionary = new Dictionary<DateTime, int>();
    for (int i = 0; i < ViopData.Count; i++)
        TarihDictionary[ViopData[i].Date] = i;
    
    // yön listelerini oluştur
    List<List<string>> Yonler = new List<List<string>>();
    //for (int i = 0; i < ParametreList.Count; i++)
    //    Yonler.Add(System.Linq.Enumerable.Repeat("", ViopData.Count).ToList());
    for (int i = 0; i < ParametreList.Count; i++)
    {
        var BosList = new List<string>();
        for (int j = 0; j < ViopData.Count; j++)
            BosList.Add("");
        Yonler.Add(BosList);
    }
    
    // yönleri bul
    for (int i = 0; i < ParametreList.Count; i++)
    {
        var SembolSistem = Sistem.SistemGetir(SistemList[i], Sistem.Sembol, PeriyotList[i]);
        if (SembolSistem == null) continue;
        for (int j = 0; j < SembolSistem.GrafikVerileri.Count; j++)
        {
            var Tarih = SembolSistem.GrafikVerileri[j].Date;
            if (TarihDictionary.ContainsKey(Tarih))
                Yonler[i][TarihDictionary[Tarih]] = SembolSistem.Yon[j];
        }
    }
    
    // pozisyon hesapla
    var SonPozDictionary = new Dictionary<string, int>();
    var PozList = Sistem.Liste(0);
    for (int i = 0; i < Yonler.Count; i++)
    {
        var SonPozStr = "";
        for (int j = V.Count - 1; j > 0; j--)
        {
            if (Yonler[i][j] != "")
            {
                SonPozStr = Yonler[i][j];
                break;
            }
        }
        int SonPozLot = 0;
        if (SonPozStr == "A")
            SonPozLot = Convert.ToInt32(LotList[i]);
        else if (SonPozStr == "S")
            SonPozLot = -Convert.ToInt32(LotList[i]);
        SonPozDictionary[SistemList[i]] = SonPozLot;
    
    
        float Poz = 0;
        for (int j = 0; j < V.Count; j++)
        {
            if (Yonler[i][j] == "A")
                Poz = LotList[i];
            else if (Yonler[i][j] == "S")
                Poz = -LotList[i];
            else if (Yonler[i][j] == "F")
                Poz = 0;
    
            PozList[j] += Convert.ToInt32(Poz);
        }
    }
    Sistem.Cizgiler[0].Deger = PozList;
    Sistem.Cizgiler[1].Deger = Sistem.Liste(0);
    Sistem.DolguEkle(0, 1, Color.FromArgb(120, 0, 255, 0), Color.FromArgb(120, 255, 0, 0));
    
    // sistem son durumları yazdır
    int Counter = -1;
    foreach (var item in SonPozDictionary)
    {
        Counter++;
        var RenkPoz = Color.Gold;
        if (item.Value > 0)
            RenkPoz = Color.LimeGreen;
        else if (item.Value < 0)
            RenkPoz = Color.Red;
    
        Sistem.GradientYaziEkle(ParametreList[Counter], 1, 250, (Counter + 1) * 25, RenkPoz, RenkPoz, "Tahoma", 18);
        Sistem.GradientYaziEkle(" :   " + Math.Abs(item.Value).ToString("0"), 1, 450, (Counter + 1) * 25, RenkPoz, RenkPoz, "Tahoma", 18);
    }
    
    
    
    
    
    
    // al sat renklendir
    var SonYon = "";
    for (int i = 0; i < V.Count; i++)
    {
        if (PozList[i] > 0 && SonYon != "A")
            Sistem.Yon[i] = "A";
        else if (PozList[i] < 0 && SonYon != "S")
            Sistem.Yon[i] = "S";
        else if (PozList[i] == 0 && SonYon != "F")
            Sistem.Yon[i] = "F";
    
        if (Sistem.Yon[i] != "")
            SonYon = Sistem.Yon[i];
    }
    
    
    
    // kar zarar hesapla
    var Kasa = 0.0f;
    var KZList = Sistem.Liste(0);
    for (int i = 1; i < V.Count; i++)
    {
        if (PozList[i] != PozList[i - 1])
            Kasa += -(PozList[i] - PozList[i - 1]) * C[i];
        KZList[i] = Kasa + (PozList[i] * C[i]);
    }
    Sistem.Cizgiler[2].Deger = KZList;
    
    
    
    // yazılar
    //Sistem.GradientYaziEkle(Sistem.Name, 1, 20, 30, Color.Gold, Color.Gold, "Tahoma", 30);
    //Sistem.GradientYaziEkle(DateTime.Now.ToString("dd/MMM/yyyy"), 1, 20, 80, Color.Gold, Color.Gold, "Tahoma", 30);
    //Sistem.GradientYaziEkle(KZList[KZList.Count - 1].ToString("0"), 1, 20, 130, Color.Gold, Color.Gold, "Tahoma", 30);
    
    
    
    var Sure = (DateTime.Now - V[0].Date).TotalDays / 30.4;
    
    // gün
    var DateGun = DateTime.Now.AddDays(-1);
    var DateGunBarNo = 0;
    for (int i = V.Count - 1; i > 0; i--)
    {
        if (V[i].Date.Day <= DateGun.Day)
        {
            DateGunBarNo = i;
            break;
        }
    }
    var GetiriGun = Math.Round((KZList[KZList.Count - 1] - KZList[DateGunBarNo]) * 100, 1);
    
    // 1 ay
    var Date1Ay = DateTime.Now.AddDays(-30);
    var Date1AyBarNo = 0;
    for (int i = V.Count - 1; i > 0; i--)
    {
        if (V[i].Date <= Date1Ay)
        {
            Date1AyBarNo = i;
            break;
        }
    }
    var Getiri1Ay = KZList[KZList.Count - 1] - KZList[Date1AyBarNo];
    
    // 2 ay
    var Date2Ay = DateTime.Now.AddDays(-60);
    var Date2AyBarNo = 0;
    for (int i = V.Count - 1; i > 0; i--)
    {
        if (V[i].Date <= Date2Ay)
        {
            Date2AyBarNo = i;
            break;
        }
    }
    var Getiri2Ay = KZList[KZList.Count - 1] - KZList[Date2AyBarNo];
    
    // 3 ay
    var Date3Ay = DateTime.Now.AddDays(-90);
    var Date3AyBarNo = 0;
    for (int i = V.Count - 1; i > 0; i--)
    {
        if (V[i].Date <= Date3Ay)
        {
            Date3AyBarNo = i;
            break;
        }
    }
    var Getiri3Ay = KZList[KZList.Count - 1] - KZList[Date3AyBarNo];
    
    // 6 ay
    var Date6Ay = DateTime.Now.AddDays(-180);
    var Date6AyBarNo = 0;
    for (int i = V.Count - 1; i > 0; i--)
    {
        if (V[i].Date <= Date6Ay)
        {
            Date6AyBarNo = i;
            break;
        }
    }
    var Getiri6Ay = KZList[KZList.Count - 1] - KZList[Date6AyBarNo];
    
    // 12 ay
    var Date12Ay = DateTime.Now.AddDays(-365);
    var Date12AyBarNo = 0;
    for (int i = V.Count - 1; i > 0; i--)
    {
        if (V[i].Date <= Date12Ay)
        {
            Date12AyBarNo = i;
            break;
        }
    }
    var Getiri12Ay = KZList[KZList.Count - 1] - KZList[Date12AyBarNo];
    
    
    Sistem.GradientYaziEkle(Sure.ToString("0.0") + " Ay", 3, 10, 20, Color.Silver, Color.Silver, "Tahoma", 18);
    Sistem.GradientYaziEkle(KZList[KZList.Count - 1].ToString("0.000"), 3, 180, 20, Color.Gold, Color.Gold, "Tahoma", 18);
    Sistem.GradientYaziEkle("30 Gün", 3, 10, 50, Color.Silver, Color.Silver, "Tahoma", 18);
    Sistem.GradientYaziEkle(Getiri1Ay.ToString("0.000"), 3, 180, 50, Color.Gold, Color.Gold, "Tahoma", 18);
    Sistem.GradientYaziEkle("60 Gün", 3, 10, 80, Color.Silver, Color.Silver, "Tahoma", 18);
    Sistem.GradientYaziEkle(Getiri2Ay.ToString("0.000"), 3, 180, 80, Color.Gold, Color.Gold, "Tahoma", 18);
    Sistem.GradientYaziEkle("90 Gün", 3, 10, 110, Color.Silver, Color.Silver, "Tahoma", 18);
    Sistem.GradientYaziEkle(Getiri3Ay.ToString("0.000"), 3, 180, 110, Color.Gold, Color.Gold, "Tahoma", 18);
    Sistem.GradientYaziEkle("180 Gün", 3, 10, 140, Color.Silver, Color.Silver, "Tahoma", 18);
    Sistem.GradientYaziEkle(Getiri6Ay.ToString("0.000"), 3, 180, 140, Color.Gold, Color.Gold, "Tahoma", 18);
    Sistem.GradientYaziEkle("Yıl", 3, 10, 170, Color.Silver, Color.Silver, "Tahoma", 18);
    Sistem.GradientYaziEkle(Getiri12Ay.ToString("0.000"), 3, 180, 170, Color.Gold, Color.Gold, "Tahoma", 18);
    
    
    var Renk = Color.Gold;
    if (GetiriGun > 0)
        Renk = Color.LimeGreen;
    else if (GetiriGun < 0)
        Renk = Color.Red;
    Sistem.GradientYaziEkle("BU GÜN", 3, 10, 230, Renk, Renk, "Tahoma", 18);
    Sistem.GradientYaziEkle(GetiriGun.ToString("0.00"), 3, 180, 230, Renk, Renk, "Tahoma", 18);
    
    
    var SonPoz = PozList[PozList.Count - 1];
    Renk = Color.Gold;
    if (SonPoz > 0)
        Renk = Color.LimeGreen;
    else if (SonPoz < 0)
        Renk = Color.Red;
    Sistem.GradientYaziEkle("POZISYON", 3, 10, 260, Renk, Renk, "Tahoma", 18);
    Sistem.GradientYaziEkle(SonPoz.ToString("0"), 3, 180, 260, Renk, Renk, "Tahoma", 18);
    Teşekkür Ederim Sn. Andromeda,bu haliyle oldu......

  2. Yeni moda uzun barlar oldu , terse kalmamak neredeyse imkansizlasti , 2 yildir batiramadiz bu sefer batirinda sizde kurtulun bende , hisse piyasasinin gözünü seveyim 6 aydir piyasa yatay olsada bilanco odakli bir seyler kazandik

  3.  Alıntı Originally Posted by oralet Yazıyı Oku
    Yeni moda uzun barlar oldu , terse kalmamak neredeyse imkansizlasti , 2 yildir batiramadiz bu sefer batirinda sizde kurtulun bende , hisse piyasasinin gözünü seveyim 6 aydir piyasa yatay olsada bilanco odakli bir seyler kazandik
    :D

    Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
    Sokrates twit @erhanacikgoz1

  4. Merhabalar,
    Grafik üzerinde beliren al ve sat sembolleri, Sistem.Yon fonksiyonun aldığı ( "A" ,"F" yada "S") değeri sonucu , sinyal gelen ilgili barın Açılış, Yüksek, Düşük ve Kapanış değerlerini yansıtacak şekilde çalışıyor. Acaba Alış yada Satış koşulu gerçekleşirken döngü içerisinde kullanıcının atadığı değer grafik ve performans tablosuna yazdırabilir ve sistem getirisi hesaplanırken bu değerler baz alınabilir mi?
    Gerçekte bu senaryo böyle olmayabilir tabii netleştirmek adına kısaca bir örnek vereyim;

    Daha önce belirledğim bir seviye olan 144.000 seviyesi için alım yapacağım.

    1.Koşul; Close[i-2] , M.Avg20[i-2] kesişimi olsun. Yani kapanış ortalamanın üstünde olsun.
    2.Koşul: Bir sonraki barın Yükseği ( High [i-1] ), örn 144.000 seviyesini geçmiş ise 144.025 den bekledğim seviyenin geldiğini ve alım yapıldığını varsayalım.
    Bu son barın datalarıda ;
    Open:143.200
    High:144.500
    Low: 142.100
    Close:144.450 şekline bitmiş olsun.

    Şimdi Grafikte işlem sonrası Alış okunun yanındaki çizgi kapanıştan yani 144.450'den belirdi ve Perf. tablosuna alış değeri 144.450 olarak geçti...
    Sorum;
    Geriye dönük testler sırasında, Grafik üzerinde ve performans tablosunda, alım yaptığımı varsaydığım 144.025 seviyesini nasıl gösterebilir ve hesapları buna göre yaptırabilirm. Bunun mümkünatı var mıdır?

    Yada sizce çözüm bu alım satım seviyelerini dışarıya yazdırıp orada kendimizin mi hesaplatmasıdır?

    Fikirleriniz için şimdiden teşekkür ederim.

  5. #1029
    Duhul
    Feb 2017
    İkamet
    Eskişehir / Duhul 2007
    Yaş
    53
    Gönderi
    4,631
    Grafik üzerinde ve performans tablosunda, alım yaptığımı varsaydığım 144.025 seviyesini nasıl gösterebilir ve hesapları buna göre yaptırabilirm. Bunun mümkünatı var mıdır?
    2 ortalamanın kesişimi geçicide olasa gerçekleştiği anda (repaint olabilir) fiyatı Sistem.Seviye[i] = Fiyat ; atayabilirsiniz.

    anlık işlem robotu kullanarakta bu işlemleri isterseniz bar kapanışı beklemeden yaptırabilirsiniz.

    PHP Code:
    ///Sezai bey
    /*
    Bu robot kalıbı, tek satır fonsiyonundan daha yararlı bazı özelliklere de sahiptir.
    "Şu saatten sonra emir ilet", "şu saatte pozisyonu" kapat gibi..
    Kodun içine sisteminizin adını ve kullandığınız periyodu yazıp kullanabilirsiniz.

    Not: Gün sonu pozisyonu kapat kısmını istemiyorsanız kırmızı yaptığım bloğu silebilirsiniz.
    */

    var LotSize 1.0;

    var 
    MySistem Sistem.SistemGetir("sisteminizin adı ""VIP'VIP-X030""15");  //Sisteminizin adı, grafik sembolünüz, periyot
    if (MySistem == null
    {
       
    Sistem.Mesaj("Sistem Dosyası Okunamadı !");
    }
    else
    {
       var 
    EmirSembol Sistem.AktifViopKontrat;
       var 
    Pozisyon Sistem.PozisyonKontrolOku(Sistem.Name " , " EmirSembol);
       var 
    SonYon "";
       for (
    int i 0MySistem.Yon.Counti++)
       {
          if (
    MySistem.Yon[i] != "")
             
    SonYon MySistem.Yon[i];
       }

       
    // Emir Miktarını Hesapla
      
    var Miktar 0.0;
       if (
    Sistem.Saat.CompareTo("09:30:00") <= 0)  // Seans Başlamadı işlem yapma
       
    {
       }
    /*
      else if (Sistem.Saat.CompareTo("18:14:59") >= 0)  // Gün Sonu Pozisyonu Kapat
       {
          if (Pozisyon != 0)
             Miktar = -Pozisyon;
       }
    */
       
    else if (SonYon == "F" && Pozisyon != 0)  // Flata Geç
          
    Miktar = -Pozisyon;
       else if (
    SonYon == "A" && Pozisyon != LotSize)  // Al
          
    Miktar LotSize Pozisyon;
       else if (
    SonYon == "S" && Pozisyon != -LotSize)  // Sat
          
    Miktar = -LotSize Pozisyon;

       
    // Emir Gönder
       
    var Islem "";
       if (
    Miktar 0)
          
    Islem "ALIS";
       if (
    Miktar 0)
          
    Islem "SATIS";
       if (
    Islem != "")
       {
             
    Sistem.PozisyonKontrolGuncelle(Sistem.Name " , " EmirSembolMiktar Pozisyon);
             
    Sistem.EmirSembol EmirSembol;
             
    Sistem.EmirIslem Islem
             
    Sistem.EmirMiktari Math.Abs(Miktar);
             
    Sistem.EmirSuresi "GUN"// GUN, SNS, IKG
             
    Sistem.EmirTipi "KPY"// KPY, KIE, GIE, SAR
             
    Sistem.EmirFiyatTipi "PYS"// PYS, LMT, EIF, KAP
             
    Sistem.EmirGonder();
       }

    Bear_Bull
    @BearBull26

  6.  Alıntı Originally Posted by Bear_Bull Yazıyı Oku
    2 ortalamanın kesişimi geçicide olasa gerçekleştiği anda (repaint olabilir) fiyatı Sistem.Seviye[i] = Fiyat ; atayabilirsiniz.

    anlık işlem robotu kullanarakta bu işlemleri isterseniz bar kapanışı beklemeden yaptırabilirsiniz.

    [/php]
    Çok teşekkür ederim Sayın BearBull

  7. #1031
    Duhul
    Feb 2017
    İkamet
    afyonkarahisar
    Gönderi
    791




    var C = Sistem.GrafikFiyatSec("Kapanis");
    var DP = Sistem.DirectionalIndicatorPlus(13);
    var DM = Sistem.DirectionalIndicatorMinus(13);
    var ADX = Sistem.ADX(8);

    Sistem.Cizgiler[0].Deger = DP ;
    Sistem.Cizgiler[1].Deger = DM;
    Sistem.Cizgiler[2].Deger = Sistem.ADX(8);
    Sistem.Cizgiler[3].Deger = Sistem.Liste(25F);
    Sistem.Cizgiler[4].Deger = Sistem.Liste(15F);
    Sistem.Cizgiler[5].Deger = Sistem.Liste(15F);
    Sistem.Cizgiler[6].Deger = Sistem.Liste(15F);


    var SonYon="";
    float Fiyat = 0.0f;
    for (int i = 1; i < Sistem.BarSayisi; i++)
    {
    if (DP[i] > DM[i] && ADX[i] >= 25 && SonYon != "A")
    {
    Sistem.Yon[i] = "A";
    SonYon="A";
    Fiyat = C[i];
    //Sistem.Ses();
    }
    else if (DP[i] < DM[i] && ADX[i] >= 25 && SonYon != "S")
    {
    Sistem.Yon[i] = "S";
    SonYon="S";
    Fiyat = C[i];
    //Sistem.Ses();
    }
    }

    Sistem.StopVeyaKarFlatYuzde(0.5,0);

  8. #1032
    arkadaslar selam,

    yeni bir indikator yazdim, sonuc bar seklinde yeni bir panelde cikiyor. yukselen/dusen barlari farkli renkte boyamak istiyorum, kirmizi-yesil gibi.

    bu islemi kolay bir sekilde yapabilirmiyim?

Sayfa 129/594 İlkİlk ... 2979119127128129130131139179229 ... SonSon

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
  •