Sayfa 462/593 İlkİlk ... 362412452460461462463464472512562 ... SonSon
Arama sonucu : 4738 madde; 3,689 - 3,696 arası.

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

  1. Kod:
    var Factor = 3f;
    
    var Pd = 10;
    
    var ATR = Sistem.AverageTrueRange(Pd);
    
    var C = Sistem.GrafikFiyatSec("OrtaNokta");
    
    var K = Sistem.MA(C, "Exp", Pd);
    var STR = Sistem.Liste(0);
    
    var STS = Sistem.Liste(0);
    
    var FUB = Sistem.Liste(0);
    
    var FLB = Sistem.Liste(0);
    
    var PMax = Sistem.Liste(0);
    
    
    for (int i=1; i < Sistem.BarSayisi; i++)
    
    {
    
       STR[i] = K[i] + (Factor*ATR[i]);
    
       STS[i] = K[i] - (Factor*ATR[i]);
    
       FUB[i] = (STR[i] < FUB[i-1] || K[i-1] > FUB[i-1]) ? STR[i] : FUB[i-1];
    
       FLB[i] = (STS[i] > FLB[i-1] || K[i-1] < FLB[i-1]) ? STS[i] : FLB[i-1];
    
       PMax[i] = (PMax[i-1] == FUB[i-1] && K[i] < FUB[i]) ? FUB[i] : (PMax[i-1] == FUB[i-1] && K[i] > FUB[i]) ? FLB[i] : (PMax[i-1] == FLB[i-1] && K[i] > FLB[i]) ? FLB[i] : (PMax[i-1] == FLB[i-1] && C[i] < FLB[i] ? FUB[i] : FUB[i]);
    
    }
    
    Sistem.Cizgiler[0].Deger = PMax;
    Sistem.Cizgiler[1].Deger = K;
    Sistem.KesismeTara(K,PMax);
    KIVANÇ BEYİN YAZDIGI PMAX

  2. #3690
     Alıntı Originally Posted by Caglar Yazıyı Oku
    Selamlar. Aşağıdaki linkin işinize yarayacağını düşünüyorum:
    https://twitter.com/caglarmenguc/sta...991489538?s=20
    Çok teşekkürler


    Sent from my iPad using Tapatalk

  3. Sistemin canlı barda işlem yapması için; İndikatörlü sistem yazınca formülün al -sat şartını listeye atayacagız, listeyide sistem.seviyeye atayacagız şeklinde biliyorum. Bu konuda forumda fazla örnek yok. Bir kaç tane canlı barda işlem yapan sistem örnegi atarmısınız. Üste sayın sonli yazmış. Karal, stoba göre onunda inceleyecegim.

  4.  Alıntı Originally Posted by sonli Yazıyı Oku
    Yazdığınız yer emir tetikleyen değil, izleyen stop seviyesini belirleyen yer gibi duruyor...
    Uyarı: Backtest te bu durumu test edemezsiniz, seans esnasında sanalda test edebilirsiniz. Grafiğe sistemi attığınızda geçmişteki görüntü hatalı olur; çünkü sonfiyat sebebiyle geçmişte işlem olmuş yerleri olmamış yada işlem olmamış yerleri olmuş gibi görürsünüz. Bugünkü "son fiyat" geçmiş için de hep son fiyattır.. C[i] ise i numaralı barın kapanış fiyatıdır, yani her bar için ayrı bir değerdir. Ayrıca kâr al, stop vs kullanıyorsanız ve bu durum tetiklendiğinde al şartınız hala geçerliyse, sattığı gibi tekrar alacaktır!!! Bu durumu iyi kodlamanız gerekir.. Örneğin ema50 yukarı kesince al yapan ve %5 de kâr alan bir sistem olsun. İyi kodlanmazsa; %5 kâr aldığı noktada yine ema50 üzerinde olacağından sattığı gibi geri alacaktır..
    Kodu alta sadece örnek olsun diye koyuyorum; test etmediğimden doğru çalışacağını garanti edemem ve gerçek işlemde kullanmayınız!!

    PHP Code:
    var Sistem.GrafikVerileri;

    var 
    Sistem.GrafikFiyatOku(V"Kapanis");
    var 
    sonfiyat Sistem.SonFiyat(Sistem.Sembol);

    var 
    STOSK Sistem.MA(Sistem.StochasticFast(2201), "Variable"170);

    var 
    STOSD Sistem.MA(STOSK"Variable"30);

    var 
    STOSK2 Sistem.MA(Sistem.StochasticFast(3001), "Variable"90);

    var 
    STOSD2 Sistem.MA(STOSK2"Variable"100);

    var 
    STOSK3 Sistem.MA(Sistem.StochasticFast(2101), "Variable"140);

    var 
    STOSD3 Sistem.MA(STOSK3"Variable"110);

    var 
    STOSK4 Sistem.MA(Sistem.StochasticFast(801), "Variable"40);

    var 
    STOSD4 Sistem.MA(STOSK4"Variable"50);

    var 
    TILL Sistem.TillsonT3(C351.2);

    var 
    TILL2 Sistem.TillsonT3(C1350.7);

    var 
    TILL3 Sistem.TillsonT3(C601.5);

    var 
    TILL4 Sistem.TillsonT3(C1000.2);



    var 
    MOST Sistem.TOMA(32"Variable");

    var 
    RSI Sistem.RSI(C,10);

    var 
    SartAL false;

    var 
    SartSAT false;



    var 
    SonYon "";

    var 
    IZLEYENSTOP Sistem.Liste(0);

    var 
    KARAL Sistem.Liste(0);

    var 
    Fiyat 0.0f;



    for(
    int i=1Sistem.BarSayisi;i++)

    {

    IZLEYENSTOP[i] = Sistem.IzleyenStopYuzde(3,i);

    if (
    IZLEYENSTOP[i] == 0IZLEYENSTOP[i] = C[i];



    KARAL[i] = Sistem.KarAlYuzde(22.8,i);

    if (
    KARAL[i] == 0KARAL[i] = C[i];



    SartAL C[i] > MOST[i] ? TILL[i] > TILL[i-1] && RSI[i] < 40 && STOSK[i] > STOSD[i] : TILL2[i] > TILL2[i-1] && RSI[i] < 30 && STOSK2[i] > STOSD2[i];

    SartSAT C[i] > MOST[i] ? TILL3[i] < TILL3[i-1] && STOSK3[i] < STOSD3[i] : TILL4[i] < TILL4[i-1] && STOSK4[i] < STOSD4[i];

    if(
    SartAL && SonYon != "A")

    {

    SonYon "A";

    Sistem.Yon[i] = "A";

    Fiyat C[i];

    }

    else if(
    SartSAT && SonYon != "F")

    {

    SonYon "F";

    Sistem.Yon[i] = "F";

    }

    else if ( 
    SonYon == "A" && ( (sonfiyat IZLEYENSTOP[i] || sonfiyat >= KARAL[i]) || (C[i] < IZLEYENSTOP[i] || C[i] >= KARAL[i]) )  ) // alıştan flate

    {

    SonYon "F";

    Sistem.Yon[i] = "F";

    }

    else if( 
    SonYon == "A" && ( sonfiyat Fiyat*0.99F || C[i] < Fiyat*0.99F) )
    {

    SonYon "F";

    Sistem.Yon[i] = "F";


    }




    SONLİ Son fiyatı kullanarak canlı bar örneğini vermiş. Bendede Sistem seviye kullanarak bir tane Karal- stoplu canlı bar örneği var. Burada Sistem.Seviyeye indikatör sinyali yazılmış. Eğer doğruysa üsteki sorumun cevabını bulmuş oldum.

    LÜTFEN BİLEN , KULLANAN BİR ARKADAŞ TEYİDİNİ YAPSIN. EKLENECEK BİR ŞEY VARSA EKLESİN.


    // MARJLARI GİR
    float KarAl = 2.000f; // kar al puan
    float Stop = 0.700f; ; // stop puan

    var V = Sistem.GrafikVerileri;
    var C = Sistem.GrafikFiyatOku(V, "Kapanis");
    var STO = Sistem.StochasticOsc(10,5);
    var AVR = Sistem.MA(STO, "Exp", 5);

    var SonYon = "";
    float Fiyat = 0;
    for (int i = 2; i < Sistem.BarSayisi; i++)
    {
    if (STO[i-1] < AVR[i-1] && STO[i] >= AVR[i] && SonYon !="A")
    {
    SonYon = "A";
    Sistem.Yon[i] = "A";
    Fiyat = C[i];
    }
    else if (STO[i-1] > AVR[i-1] && STO[i] <= AVR[i] && SonYon !="S")
    {
    SonYon = "S";
    Sistem.Yon[i] = "S";
    Fiyat = C[i];
    }
    else if (SonYon == "A" && C[i] >= Fiyat + KarAl) //Long kar realizasyonu
    {
    Sistem.Yon[i] = "F"; // flat
    SonYon = Sistem.Yon[i];
    Sistem.Seviye[i] = Fiyat + KarAl;
    }
    else if (SonYon == "A" && C[i] <= Fiyat - Stop) //Long stop
    {
    Sistem.Yon[i] = "F"; // flat
    SonYon = Sistem.Yon[i];
    Sistem.Seviye[i] = C[i] - Stop;
    }
    else if (SonYon == "S" && C[i] <= Fiyat - KarAl) // Short Kar realizasyonu
    {
    Sistem.Yon[i] = "F"; // flat
    SonYon = Sistem.Yon[i];
    Sistem.Seviye[i] = Fiyat - KarAl;
    }
    else if (SonYon == "S" && C[i] >= Fiyat + Stop) //Short Stop
    {
    Sistem.Yon[i] = "F"; // flat
    SonYon = Sistem.Yon[i];
    Sistem.Seviye[i] = C[i] - Stop;
    }
    }

    Sistem.Cizgiler[0].Deger = STO;
    Sistem.Cizgiler[1].Deger = AVR;

  5. #3693
    Duhul
    Feb 2017
    İkamet
    afyonkarahisar
    Gönderi
    791
    // verileri oku
    var Sembol = Sistem.Sembol;
    var Periyot = Sistem.Periyot;

    var T = Sistem.GrafikVerileriniOku(Sembol,Periyot);
    var C = Sistem.GrafikFiyatOku(T, "Kapanis");
    var V = Sistem.GrafikVerileriniOku(Sistem.Sembol, "G");
    // boş veri listeleri yarat
    var H1 = Sistem.Liste(0);
    var H2 = Sistem.Liste(0);
    var H3 = Sistem.Liste(0);

    var P = Sistem.Liste(0);

    var L1 = Sistem.Liste(0);
    var L2 = Sistem.Liste(0);
    var L3 = Sistem.Liste(0);



    // döngü ile haftalık pivot, prohigh, prolow hesapla
    for (int i = 1; i < V.Count; i++)
    {
    // pivot önceki barın (H+L+C)/3 değeri
    P[i] = ( V[i-1].High + V[i-1].Low + V[i-1].Close) / 3;
    H1[i] = V[i-1].Close + ( V[i-1].High - V[i-1].Low )*1.1/12 ;
    H2[i] = V[i-1].Close + ( V[i-1].High - V[i-1].Low )*1.1/6 ;
    H3[i] = V[i-1].Close + ( V[i-1].High - V[i-1].Low )*1.1/4 ;

    L1[i] = V[i-1].Close - ( V[i-1].High - V[i-1].Low )*1.1/12 ;
    L2[i] = V[i-1].Close - ( V[i-1].High - V[i-1].Low )*1.1/6 ;
    L3[i] = V[i-1].Close - ( V[i-1].High - V[i-1].Low )*1.1/4 ;


    }
    Sistem.Cizgiler[0].Deger = Sistem.DonemCevir(T, V, P);
    Sistem.Cizgiler[1].Deger = Sistem.DonemCevir(T, V, L1);
    Sistem.Cizgiler[2].Deger = Sistem.DonemCevir(T, V, L2);
    Sistem.Cizgiler[3].Deger = Sistem.DonemCevir(T, V, L3);
    Sistem.Cizgiler[4].Deger = Sistem.DonemCevir(T, V, H1);
    Sistem.Cizgiler[5].Deger = Sistem.DonemCevir(T, V, H2);
    Sistem.Cizgiler[6].Deger = Sistem.DonemCevir(T, V, H3);

    BU FORMÜLDE nerede hata var bir türlü çizgileri çizdiremedim grafikte , üetelik hata da vermiyor

  6.  Alıntı Originally Posted by alekss Yazıyı Oku
    // verileri oku
    var Sembol = Sistem.Sembol;
    var Periyot = Sistem.Periyot;

    var T = Sistem.GrafikVerileriniOku(Sembol,Periyot);
    var C = Sistem.GrafikFiyatOku(T, "Kapanis");
    var V = Sistem.GrafikVerileriniOku(Sistem.Sembol, "G");
    // boş veri listeleri yarat
    var H1 = Sistem.Liste(0);
    var H2 = Sistem.Liste(0);
    var H3 = Sistem.Liste(0);

    var P = Sistem.Liste(0);

    var L1 = Sistem.Liste(0);
    var L2 = Sistem.Liste(0);
    var L3 = Sistem.Liste(0);



    // döngü ile haftalık pivot, prohigh, prolow hesapla
    for (int i = 1; i < V.Count; i++)
    {
    // pivot önceki barın (H+L+C)/3 değeri
    P[i] = ( V[i-1].High + V[i-1].Low + V[i-1].Close) / 3;
    H1[i] = V[i-1].Close + ( V[i-1].High - V[i-1].Low )*1.1/12 ;
    H2[i] = V[i-1].Close + ( V[i-1].High - V[i-1].Low )*1.1/6 ;
    H3[i] = V[i-1].Close + ( V[i-1].High - V[i-1].Low )*1.1/4 ;

    L1[i] = V[i-1].Close - ( V[i-1].High - V[i-1].Low )*1.1/12 ;
    L2[i] = V[i-1].Close - ( V[i-1].High - V[i-1].Low )*1.1/6 ;
    L3[i] = V[i-1].Close - ( V[i-1].High - V[i-1].Low )*1.1/4 ;


    }
    Sistem.Cizgiler[0].Deger = Sistem.DonemCevir(T, V, P);
    Sistem.Cizgiler[1].Deger = Sistem.DonemCevir(T, V, L1);
    Sistem.Cizgiler[2].Deger = Sistem.DonemCevir(T, V, L2);
    Sistem.Cizgiler[3].Deger = Sistem.DonemCevir(T, V, L3);
    Sistem.Cizgiler[4].Deger = Sistem.DonemCevir(T, V, H1);
    Sistem.Cizgiler[5].Deger = Sistem.DonemCevir(T, V, H2);
    Sistem.Cizgiler[6].Deger = Sistem.DonemCevir(T, V, H3);

    BU FORMÜLDE nerede hata var bir türlü çizgileri çizdiremedim grafikte , üetelik hata da vermiyor

    Sayın alex formülü biraz kurcaladım fakat bende çizgileri çizdiremedim. Bende 2 farklı pivot formülü var istersen paylaşayım.

  7. Bazı sistemlerde bar sayısının fazla olduğu grafiklerinden elde ettiğimiz bir değeri (örneğin getiri eğrisi) değiştirmeden bar sayısının az olduğu grafiklerde kullanmak isteyebiliriz. Bu durumda ilişkin kod :

    Kod:
    //çok datada ki bir değeri (örneğin getiri eğirisi) az datada devam ettirme kodu  
    
    
    
    var V = Sistem.GrafikVerileri; 
    
    
    var GrafikSistemAd= "sys";  
    var GrafikSistem = Sistem.SistemGetir(GrafikSistemAd, Sistem.Sembol, Sistem.Periyot);   
    var GetiriList = GrafikSistem.GetiriKZ; 
    
    var YeniGetiriList = Sistem.Liste(V.Count, 0); 
    
    
    var RefGetiriDate = new DateTime(2020, 9 , 18, 19, 56, 0);   // yıl, ay, gün, saat, dakika, saniye // kendi grafiğinizden değer gireceksiniz
    // çok data grafiğinden bakarak elde ettiğimiz referans barın bilgisi 
    // (az data grafiğinde getiri eğirisinin hesaplanmaya başladığı yerlere yakın olması tercih edilir)
    
    
    var RefGetiri=  4280.600f   ;  // kendi grafiğinizden değer gireceksiniz
    // çok data grafiğinden bakarak elde ettiğimiz referans barın getiri değeri 
    
    
    var farkgetiri = 0f ;  //float
    
    for (int i = 0; i < GetiriList.Count; i++) 
    {
    
    if (  V[i].Date  == RefGetiriDate ) farkgetiri = RefGetiri - GetiriList[i] ;  
    // referans bardaki çok data ve az data getiri farkı 
    
    YeniGetiriList [i] = 
    V[i].Date  >= RefGetiriDate ? GetiriList[i] + farkgetiri : 0 ;
    
    
    } 
    
    
    
      Sistem.Cizgiler[0].Deger = GetiriList ; // panel 2
      Sistem.Cizgiler[1].Deger = YeniGetiriList; // panel 3

  8.  Alıntı Originally Posted by anonimm Yazıyı Oku
    Bazı sistemlerde bar sayısının fazla olduğu grafiklerinden elde ettiğimiz bir değeri (örneğin getiri eğrisi) değiştirmeden bar sayısının az olduğu grafiklerde kullanmak isteyebiliriz. Bu durumda ilişkin kod :

    Kod:
    //çok datada ki bir değeri (örneğin getiri eğirisi) az datada devam ettirme kodu  
    
    
    
    var V = Sistem.GrafikVerileri; 
    
    
    var GrafikSistemAd= "sys";  
    var GrafikSistem = Sistem.SistemGetir(GrafikSistemAd, Sistem.Sembol, Sistem.Periyot);   
    var GetiriList = GrafikSistem.GetiriKZ; 
    
    var YeniGetiriList = Sistem.Liste(V.Count, 0); 
    
    
    var RefGetiriDate = new DateTime(2020, 9 , 18, 19, 56, 0);   // yıl, ay, gün, saat, dakika, saniye // kendi grafiğinizden değer gireceksiniz
    // çok data grafiğinden bakarak elde ettiğimiz referans barın bilgisi 
    // (az data grafiğinde getiri eğirisinin hesaplanmaya başladığı yerlere yakın olması tercih edilir)
    
    
    var RefGetiri=  4280.600f   ;  // kendi grafiğinizden değer gireceksiniz
    // çok data grafiğinden bakarak elde ettiğimiz referans barın getiri değeri 
    
    
    var farkgetiri = 0f ;  //float
    
    for (int i = 0; i < GetiriList.Count; i++) 
    {
    
    if (  V[i].Date  == RefGetiriDate ) farkgetiri = RefGetiri - GetiriList[i] ;  
    // referans bardaki çok data ve az data getiri farkı 
    
    YeniGetiriList [i] = 
    V[i].Date  >= RefGetiriDate ? GetiriList[i] + farkgetiri : 0 ;
    
    
    } 
    
    
    
      Sistem.Cizgiler[0].Deger = GetiriList ; // panel 2
      Sistem.Cizgiler[1].Deger = YeniGetiriList; // panel 3
    Eski forumma bakıyorum da çok güzel şeyler paylasmissiniz paylasimlarinizin devamı dileğiyle

Sayfa 462/593 İlkİlk ... 362412452460461462463464472512562 ... 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
  •