Sayfa 1136/1154 İlkİlk ... 136636103610861126113411351136113711381146 ... SonSon
Arama sonucu : 9231 madde; 9,081 - 9,088 arası.

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

  1. Esas

     Alıntı Originally Posted by vVvendetta Yazıyı Oku
    Arkadaslar merhaba,
    Asagida ki kodu cevirmeye calisiyorum.Nerede yanlis yapiyorum yardimci olabilir misiniz ?

    //ma = moving average
    //trh = true high
    //trl = true low
    //prev = previous, index = current bar number

    lastClose = price[index-1];
    trh = max(high, lastClose);
    trl = min(low, lastClose);
    ad = ((close - trl)- (trh - close)) / (trh - trl) * volume;
    smoothAd =ma(method, index, period, ad);
    smoothVol = ma(method, index, period, volume);
    TMF = smoothAd / smoothVol;
    Şu şekilde çevrilir sanırım;

    Kod:
    var Close = Sistem.GrafikFiyatSec("Kapanis");
    var high = Sistem.GrafikFiyatSec("Yuksek");
    var low = Sistem.GrafikFiyatSec("Dusuk");
    var volume = Sistem.GrafikFiyatSec("Lot");
    
    var trh = Sistem.Liste(0); 
    var trl = Sistem.Liste(0);
    var ad = Sistem.Liste(0); 
    var TMF = Sistem.Liste(0); 
    
    for (int i=1; i < Sistem.BarSayisi; i++)
    {
       trh[i] = Math.Max(high[i], Close[i-1]);
       trl[i] = Math.Min(low[i], Close[i-1]);
       ad[i] = ((Close[i] - trl[i])- (trh[i] - Close[i])) / (trh[i] - trl[i]) * volume[i];
    }
    
    var p10 = 10;
    var smoothAd =Sistem.MA(ad, "Simple", p10);
    var smoothVol = Sistem.MA(volume, "Simple", p10);
    
    for (int i=1; i < Sistem.BarSayisi; i++)
       TMF[i] = smoothAd[i] / smoothVol[i];
    
    Sistem.Cizgiler[0].Deger = TMF;

  2. #9082
    Duhul
    Feb 2004
    İkamet
    istanbul
    Gönderi
    237

    Esas

    Birim datayı kaydetmenin bir yolu varmı .
    sürekli çalışan bir robotla belli bir sayıda tick olarak farklı isim altında kaydedilebilir anlık işlemde kullanılabilir gibi geliyo da nasıl yapabileceğimi bilmiyorum.

  3. Esas

     Alıntı Originally Posted by kenten Yazıyı Oku
    Birim datayı kaydetmenin bir yolu varmı .
    sürekli çalışan bir robotla belli bir sayıda tick olarak farklı isim altında kaydedilebilir anlık işlemde kullanılabilir gibi geliyo da nasıl yapabileceğimi bilmiyorum.
    Sistem.SembolIslemleriniOku isimli bir fonksiyon var. Bu işlem için o kullanılabilir.
    Forumda daha önce örnek iki kod paylaşmıştık.
    O örnekler aşağıda

    (arşivlenecek dosyaların formatları istenildiği gibi değiştirilebilir. Txt veya Csv olması, ayraçların virgül vs olması tamamen kişisellebilir.)

    Örnek1: (Belli bir saatte, son 30 günün işlemlerini txt olarak arşivle)
    Kod:
    //SON 30 GÜN
    if (DateTime.Now.Hour == 18 && DateTime.Now.Minute > 55)
    {
        var Dizin = "\\ViopBirimData";
        if (Directory.Exists(Dizin) == false)
            Directory.CreateDirectory(Dizin);
    
        // dizin yaratıldıysa
        if (Directory.Exists(Dizin))
        {
            var BitisTarih = DateTime.Today;
            var Tarih = BitisTarih.AddDays(-30);
            while (Tarih < BitisTarih)
            {
                Tarih = Tarih.AddDays(1);
                if (Tarih.DayOfWeek == DayOfWeek.Saturday || Tarih.DayOfWeek == DayOfWeek.Sunday) continue;
                var TarihStr = Tarih.ToString("yyyyMMdd");
                var IslemList = Sistem.SembolIslemleriniOku(Sistem.AktifViopKontrat, TarihStr);
                var DosyaAdi = Dizin + "\\" + TarihStr + ".Txt";
                if (File.Exists(DosyaAdi) == false && IslemList.Count > 0)
                {
                    var StrList = new List<string>();
                    foreach (var islem in IslemList)
                    {
                        var SaatStr = islem.Hour.ToString("00") + ":" + islem.Minute.ToString("00") + ":" + islem.Second.ToString("00");
                        var LotStr = islem.Size.ToString("0");
                        var FiyatStr = islem.Price.ToString("0.000");
                        StrList.Add(TarihStr.PadRight(10) + SaatStr.PadRight(10) + LotStr.PadLeft(10) + FiyatStr.PadLeft(10));
                    }
                    File.WriteAllLines(DosyaAdi, StrList);
                }
            }
        }
    }
    Örnek2: Günün işlemlerini arşivle
    Kod:
    if (DateTime.Now.Hour == 10 && DateTime.Now.Minute > 5)
    {
        var Dizin = "\\ViopBirimData";
        if (Directory.Exists(Dizin) == false)
            Directory.CreateDirectory(Dizin);
    
        // dizin yaratıldıysa
        if (Directory.Exists(Dizin))
        {
            var Tarih = DateTime.Today;
            if (Tarih.DayOfWeek != DayOfWeek.Saturday && Tarih.DayOfWeek != DayOfWeek.Sunday)
            {
                var TarihStr = Tarih.ToString("yyyyMMdd");
                var IslemList = Sistem.SembolIslemleriniOku(Sistem.AktifViopKontrat, TarihStr);
                var DosyaAdi = Dizin + "\\" + TarihStr + ".Txt";
                if (File.Exists(DosyaAdi) == false && IslemList.Count > 0)
                {
                    var StrList = new List<string>();
                    foreach (var islem in IslemList)
                    {
                        var SaatStr = islem.Hour.ToString("00") + ":" + islem.Minute.ToString("00") + ":" + islem.Second.ToString("00");
                        var LotStr = islem.Size.ToString("0");
                        var FiyatStr = islem.Price.ToString("0.000");
                        StrList.Add(TarihStr.PadRight(10) + SaatStr.PadRight(10) + LotStr.PadLeft(10) + FiyatStr.PadLeft(10));
                    }
                    File.WriteAllLines(DosyaAdi, StrList);
                }
            }
        }
    }

  4. Esas

     Alıntı Originally Posted by Sezai KILIÇ Yazıyı Oku
    Şu şekilde çevrilir sanırım;

    Kod:
    var Close = Sistem.GrafikFiyatSec("Kapanis");
    var high = Sistem.GrafikFiyatSec("Yuksek");
    var low = Sistem.GrafikFiyatSec("Dusuk");
    var volume = Sistem.GrafikFiyatSec("Lot");
    
    var trh = Sistem.Liste(0); 
    var trl = Sistem.Liste(0);
    var ad = Sistem.Liste(0); 
    var TMF = Sistem.Liste(0); 
    
    for (int i=1; i < Sistem.BarSayisi; i++)
    {
       trh[i] = Math.Max(high[i], Close[i-1]);
       trl[i] = Math.Min(low[i], Close[i-1]);
       ad[i] = ((Close[i] - trl[i])- (trh[i] - Close[i])) / (trh[i] - trl[i]) * volume[i];
    }
    
    var p10 = 10;
    var smoothAd =Sistem.MA(ad, "Simple", p10);
    var smoothVol = Sistem.MA(volume, "Simple", p10);
    
    for (int i=1; i < Sistem.BarSayisi; i++)
       TMF[i] = smoothAd[i] / smoothVol[i];
    
    Sistem.Cizgiler[0].Deger = TMF;
    Tesekkurler Sezai bey

    Bu formul Twiggs Money Flow olarak geciyor.CMF kullanan arkadaslar alternatif olarak dusunebilirler.

    Twiggs Money Flow by Colin Twiggs is a variation on the Chaikin Money Flow Index. It uses True Range and volume. Adjustable guides are given to fine tune the signals. The user may change method (EMA), period lengths and guide values
    Son düzenleme : vVvendetta; 27-12-2016 saat: 14:51.

  5. Esas

    Arkadaslar;
    3 tane verinin icerisinden en yuksegini nasil secebilirim max( x1, x2, x3) ? MathMax 2 veri ile calisiyor gorunuyor ?Ayri 2 tanimlamami yapmam gerekiyor ?x = MathMax(x1,x2); Max = MathMax(x,x3)

  6. #9086
    Duhul
    Feb 2004
    İkamet
    istanbul
    Gönderi
    237

    Esas

     Alıntı Originally Posted by vVvendetta Yazıyı Oku
    Arkadaslar;
    3 tane verinin icerisinden en yuksegini nasil secebilirim max( x1, x2, x3) ? MathMax 2 veri ile calisiyor gorunuyor ?Ayri 2 tanimlamami yapmam gerekiyor ?x = MathMax(x1,x2); Max = MathMax(x,x3)
    Math.Max(Math.Max(x1,x2),x3)

  7. #9087

    Esas

     Alıntı Originally Posted by vVvendetta Yazıyı Oku
    Arkadaslar;
    3 tane verinin icerisinden en yuksegini nasil secebilirim max( x1, x2, x3) ? MathMax 2 veri ile calisiyor gorunuyor ?Ayri 2 tanimlamami yapmam gerekiyor ?x = MathMax(x1,x2); Max = MathMax(x,x3)

    evet, iki kademede yapmak lazım.
    ayrıca sayıları bir listeye ekleyip, listenin en yüksek değerini elde edebilirsiniz.

    Kod:
    var num1 = 10.0f;
    var num2 = 20.0f;
    var num3 = 5.0f;
    
    
    var max = Math.Max(num1, num2);
    max = Math.Max(max, num3);
    
    
    //Sistem.Mesaj(max.ToString());

  8. #9088
    Duhul
    Feb 2004
    İkamet
    istanbul
    Gönderi
    237

    Esas

    Sezai hocam hızlı cevap için teşekkürler
    abartıp mesela 100 tick verisi kullanmak istiyorum , anlık olarak bunu dosyaya yazıp başka bir robottan herhangi bir kontrat verisi gibi okumak işlem yapmak istiyorum desem ne dersiniz.

Sayfa 1136/1154 İlkİlk ... 136636103610861126113411351136113711381146 ... SonSon

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
  •