Sayfa 77/593 İlkİlk ... 2767757677787987127177577 ... SonSon
Arama sonucu : 4738 madde; 609 - 616 arası.

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

  1.  Alıntı Originally Posted by Caglar Yazıyı Oku
    Sn Anonim, daha önce user.dll e yazmıştım ama deneme şansım olmamıştı. Denedikten sonra buraya yazarsanız memnun olurum. Eğer bir hata varsa düzeltmeye çalışırım.

    Kod:
    /*
     * Average price of the current bar
       xClose = (Open+High+Low+Close)/4 
    
     * Midpoint of the previous bar
       xOpen = [xOpen(Previous Bar) + Close(Previous Bar)]/2
    
     * Highest value in the set
       xHigh = Max(High, xOpen, xClose)
    
     * Lowest value in the set
       xLow = Min(Low, xOpen, xClose)
    */
    public List<cxBar> ToHeikinAshi(List<cxBar> bars)
    {
        var ha = bars.Select(b => b.Clone()).ToList();
    
        try
        {
            for (int i = 1; i < bars.Count; i++)
            {
                ha[i].Close = (bars[i].Open + bars[i].High + bars[i].Low + bars[i].Close) / 4;
                ha[i].Open = (ha[i - 1].Open + ha[i - 1].Close) / 2;
                ha[i].High = Max(bars[i].High, ha[i].Open, ha[i].Close);
                ha[i].Low = Min(bars[i].Low, ha[i].Open, ha[i].Close);
            }
        }
        catch (Exception ex)
        {
            //Log(string.Format("ToHeikinAshi failed. Ex: {0}", ex));
        }
    
        return ha;
    }
    Eğer Şablon;
    xOpen = [xOpen(Previous Bar) + Close(Previous Bar)]/2
    ise
    ha[i].Open = (ha[i - 1].Open + ha[i - 1].Close) / 2;
    değil
    ha[i].Open = (ha[i - 1].Open + bars[i - 1].Close) / 2;
    olmalı sanırım.

    İdeal ise dahada farklı;
    ha[i].Open = (bars[i - 1].Open + bars[i - 1].Close) / 2;
    şeklinde hesaplıyor sanırım

    test etmedim kodlara göre yazıyorum sadece.
    sanırım bilinen formül ile ideal arasında da yorum farkı var veya ideal HeikinAshi yi hatalı hesaplıyor
    Keçiyi yardan uçuran bir tutam ottur..

  2.  Alıntı Originally Posted by Keçi Yazıyı Oku
    Eğer Şablon;
    xOpen = [xOpen(Previous Bar) + Close(Previous Bar)]/2
    ise
    ha[i].Open = (ha[i - 1].Open + ha[i - 1].Close) / 2;
    değil
    ha[i].Open = (ha[i - 1].Open + bars[i - 1].Close) / 2;
    olmalı sanırım.

    İdeal ise dahada farklı;
    ha[i].Open = (bars[i - 1].Open + bars[i - 1].Close) / 2;
    şeklinde hesaplıyor sanırım

    test etmedim kodlara göre yazıyorum sadece.
    sanırım bilinen formül ile ideal arasında da yorum farkı var veya ideal HeikinAshi yi hatalı hesaplıyor
    Evet sn Keçi, doğrusu sizin yazdığınız gibi olmalı.
    Teşekkürler düzeltme için.

  3.  Alıntı Originally Posted by Caglar Yazıyı Oku
    Evet sn Keçi, doğrusu sizin yazdığınız gibi olmalı.
    Teşekkürler düzeltme için.
    Rica ederim, doğru formülle de tutmayacak çünkü ideal HeikinAshi de Open değerini hatalı hesaplıyorAşağıda investing-ULUSE-HeikinAshi grafiği ile ideal-ULUSE-HeikinAshi grafiği farkı net görülüyor.

    Keçiyi yardan uçuran bir tutam ottur..

  4.  Alıntı Originally Posted by erhanacikgoz1 Yazıyı Oku
    bu kodda x2 çizgisi 0 olarak görünmsinin sebebi ney nasıl düzelteceğim.
    kodu kalabalık görünce bakmıyordum ,
    forumda ctrl+F yapıp x2 yi arattım.
    Kodun özeti aşağıdaki gibi;


    //Veri adedi kadar, değerleri 0 olan liste oluştur.
    var x3 = Sistem.Liste(V.Count, 0);


    //Tüm değerleri sıfırdan oluşan x3 listesinin 10 barlık simple ortalamasını al (aldık sıfır)
    var x2 = Sistem.MA(x3, "Simple", 10);


    //sıfırı göster
    Sistem.Cizgiler[1].Deger = x2;


    çözüm, x3 listesini bir şekilde değerlerle doldurmak.
    Keçiyi yardan uçuran bir tutam ottur..

  5. #613
    Duhul
    Feb 2017
    İkamet
    afyonkarahisar
    Gönderi
    791
     Alıntı Originally Posted by Keçi Yazıyı Oku
    gidiş yolu hakkında yazayım..

    1- bir kaynaktan formasyon hakkında bilgi alın.
    http://www.candlesticker.com/Pattern...r&Pattern=2201
    http://www.candlesticker.com/Pattern...r&Pattern=2101
    gibi.

    2. formülü matematiksel olarak yazın, yada hazırını bulun.

    Bullish Engulfing
    (O1>C1) AND (C-O)>=.7*(H-L) AND (C>O1) AND (O<C1) AND (H-L)>=1.2*(AVGH10-AVGL10)


    Bearish Engulfing
    (C1>O1) AND (O-C)>=.7*(H-L) AND (C<O1) AND (O>C1) AND (H-L)>=1.2*(AVGH10-AVGL10)
    olabilir gibi.

    bunları yazarken yapılan hata genelde farklı formasyonlardan nasıl ayrıldığı olabiliyor.

    bunu da farklı uygulamalarla kıyaslayarak anlayabilir ve geliştirebilirsiniz.

    sistem de ise şu şekilde bir karşılığı olabilir, daha önce sayın cihangir paylaşmıştı..
    sorgu yapacaksanız işiniz kolay, eğer al-sat sistemine dönüştürecekseniz al-sat teyitlerinide formülüze etmeniz gerekecek.
    aşağıdaki kodlar hatalı hesaplıyor olabilir, sadace yöntem hakkında fikir vermek için yazdım.

    var V=Sistem.GrafikVerileri ;
    var C =Sistem.GrafikFiyatOku(V, "Kapanis") ;
    var H =Sistem.GrafikFiyatOku(V, "Yuksek") ;
    var L =Sistem.GrafikFiyatOku(V, "Dusuk") ;
    var O =Sistem.GrafikFiyatOku(V, "Acilis") ;



    for (int i =V.Count-250; i < V.Count; i++)
    {



    if((O[i-1] >C[i-1] && C[i] > O[i] && C[i]>=O[i-1] &&C[i-1]>=O[i] && C[i]-O[i]>O[i-1]-C[i-1]))
    {
    var Yazi ="\nB\nu\nl\nl\ni\ns\nh\n\nE\nn\ng\nu\nl\nf\ni\nn\ n g=" +Sistem.GrafikVerileri[i].Close.ToString();
    Sistem.YaziEkle(Yazi,1, i, Sistem.GrafikVerileri[i].Close, Color.DarkOrange, "Tahoma", 6);
    }


    if((C[i-1] >O[i-1] && O[i]>C[i] && O[i]>=C[i-1] &&O[i-1]>=C[i] && O[i]-C[i]>C[i-1]-O[i-1]))
    {
    var Yazi ="\nB\ne\na\nr\ni\ns\nh\n\nE\ng\nu\nl\nf\ni\nn\ng= " +Sistem.GrafikVerileri[i].Close.ToString();
    Sistem.YaziEkle(Yazi,1, i, Sistem.GrafikVerileri[i].Close, Color.DimGray, "Tahoma", 6);

    }



    }

    sayın keçi cevabınız için teşekkürler
    bu arada bu c++ dil konusunda uzman oldugunuz belli
    sizden ricam elinizde mevcut olup daha önce sizin tarafınızdan kodlanmış, paylaşmada sıkıntı görmediğiniz mum grafikk stratejileri veya farklı alım satım strateji formüllerini forumda paylaşırsanız seviniriz
    şimdiden teşekkürler

  6. #614
    Herkese Selam Arkadaşlar,
    Bir sorum olacaktı, yardımınızı rica ediyorum.

    Formülümde "Sistemgetir" fonksiyonun kullanıyorum. Ancak farklı peryotlar için Sistem getir deki peryot kısmını sürekli elle girmek zorunda kalıyorum.
    Sorum: mevcut açık olan grafik peryotunu bulup, formüldeki peryot kısmına yazdırabilir miyiz?

    Saygılar...

  7.  Alıntı Originally Posted by Klozon Yazıyı Oku
    Herkese Selam Arkadaşlar,
    Bir sorum olacaktı, yardımınızı rica ediyorum.

    Formülümde "Sistemgetir" fonksiyonun kullanıyorum. Ancak farklı peryotlar için Sistem getir deki peryot kısmını sürekli elle girmek zorunda kalıyorum.
    Sorum: mevcut açık olan grafik peryotunu bulup, formüldeki peryot kısmına yazdırabilir miyiz?

    Saygılar...
    Selam, Sistem.Periyot yazabilirsiniz.
    Keçiyi yardan uçuran bir tutam ottur..

  8.  Alıntı Originally Posted by vVvendetta Yazıyı Oku
    geri donusunuz icin tesekkurler sayin Keci.
    Rica ederim, şimdi baktım, hiç yeni kod yazmadım. sadece dosya tanım işlemlerini for içerisine taşıdım..



    Kod:
    
    //Ayarlar -------------------------------------------
    
    
      bool BaslikSatiriOlsumu= true;
      string Ayrac=";";
      int KacGun = 7;
    
    
    
    
    //Desenler -------------------------------------------
    
    
      string Headers =    "NAME"+Ayrac+
    		      "PER"+Ayrac+
    		      "DATE"+Ayrac+
    		      "TIME"+Ayrac+
    		      "OPEN"+Ayrac+
    		      "HIGH"+Ayrac+
    		      "LOW"+Ayrac+
    		      "CLOSE"+Ayrac+
    		      "VOL"+Ayrac+
    		      "OPENINT"; 
    					
    					
      string Values = "{0}"+Ayrac+"{1}"+Ayrac+"{2}"+Ayrac+"{3}"+Ayrac+"{4}"+Ayrac+"{5}"+Ayrac+"{6}"+Ayrac+"{7}"+Ayrac+"{8}"+Ayrac+"{9}";
    
    
    
    
    
    
    
    
    //Hisseye ait Toplam Barı Bul (Burasını iyi kontrol etmedim, bar sayıları sorunlu olabilir, her periyot olmayabilir, ayarlayın işte:)
    int ToplamBar= 0;
    
    
    if(Sistem.Periyot=="G") ToplamBar = KacGun;
    else if(Sistem.Periyot=="240") ToplamBar = KacGun * 2;
    else if(Sistem.Periyot=="120") ToplamBar = KacGun * 4;
    else if(Sistem.Periyot=="60") ToplamBar = KacGun * 8;
    else if(Sistem.Periyot=="30") ToplamBar = KacGun * 8 * 2;
    else if(Sistem.Periyot=="15") ToplamBar = KacGun * 8 * 2 * 2;
    else if(Sistem.Periyot=="5")  ToplamBar = KacGun * 8 * 2 * 2 * 3;
    else if(Sistem.Periyot=="1")  ToplamBar = KacGun * 8 * 2 * 2 * 3 * 5;
    
    
    //Sembol için Bar Döngüsüne gir------------------------------------------------
    for (int i = Sistem.BarSayisi - ToplamBar  ; i < Sistem.BarSayisi; i++)
    {
         // Bar'a ait Satırı Oluştur------------------------------------------------------
         string barline= string.Format(
    						Values
    						,Sistem.Sembol.Replace("IMKBH","").Replace("'","")
    						,Sistem.Periyot.ToString()
    						,Sistem.GrafikVerileri[i].Date.ToString("yyyyMMdd")
    						,Sistem.GrafikVerileri[i].Date.ToString("HH:mm")
    						,Sistem.GrafikVerileri[i].Open.ToString().Replace(",",".")
    						,Sistem.GrafikVerileri[i].High.ToString().Replace(",",".")
    						,Sistem.GrafikVerileri[i].Low.ToString().Replace(",",".")
    						,Sistem.GrafikVerileri[i].Close.ToString().Replace(",",".")
    						,Sistem.GrafikVerileri[i].Vol.ToString().Replace(",",".")
    						//,Sistem.LotGun(Sistem.Sembol).ToString().Replace(",",".")  //Hacim lot olacaksa bunu açıp üsttekini kapatın
    						,Sistem.GrafikVerileri[i-1].Close.ToString().Replace(",",".")
    			     );
    
    
          string DosyaAdi = @"d:\Metastock_"+Sistem.Sembol+"_"+Sistem.Periyot+"_"
                            + DateTime.Now.ToString("dd.MM.yyyy")
                            +".csv";
    
    
    //Dosya Yoksa ilk oluştuğunda Header yaz ---------------------------------------
    if (!File.Exists(DosyaAdi))   
    {  
        	if(BaslikSatiriOlsumu) {
                                      using (FileStream fs = new FileStream(DosyaAdi ,FileMode.Append, FileAccess.Write))
                                      using (StreamWriter sw = new StreamWriter(fs))
                                      {
                                         sw.WriteLine(Headers );
                                      }
                                    } 
    } 
    
    
          // Bar'a ait Satırı Dosyay Yaz---------------------------------------
          using (FileStream fs = new FileStream(DosyaAdi ,FileMode.Append, FileAccess.Write))
          using (StreamWriter sw = new StreamWriter(fs))
          {
            sw.WriteLine(barline);
          }
    
    
    } // For'a ait
    
    
    
    
    //Sorgu Ekranına Ekleme -----------------------------------------------------
    
    
    Sistem.SorguAciklama = "Aktarımı Yapılmıştır";
    Sistem.SorguEkle();
    
    
    //----------------------------------------------------------------------------
    Keçiyi yardan uçuran bir tutam ottur..

Sayfa 77/593 İlkİlk ... 2767757677787987127177577 ... 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
  •