Special Days Image
Sayfa 347/593 İlkİlk ... 247297337345346347348349357397447 ... SonSon
Arama sonucu : 4738 madde; 2,769 - 2,776 arası.

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

  1.  Alıntı Originally Posted by erhanacikgoz1 Yazıyı Oku
    performans açısından döngüye sokmadan bu işi yapayım demiştim.

    Bir arayüz tasarlıyorum timer ile Sistem Getiri çalıştırıp sistemin yönlerini sürekli olarak çekiyorum. Yön çekildiği veya değiştiği andaki grafik fiyat verilerindeki son değer neyse onu form uygulamama yazdırmak istiyorum amacım bu.

    -Sistem YÖnünü çekiyorum ve forma yazdırabiliyorum PROBLEM YOK!
    -Alış veya Satış fiyatınıda çekiyorum forma yazdırıyorum YÖN DEĞİŞMESE BİLE FİYAT DEĞİŞİYOR. PROBLEM VAR!

    BUradaki problem ana sebebi timer sürekli olarak okuma yapıyor haliyle koşul gerçekleştiği içinde okumayı sürdürüyor. Buaya bir if bloğuyla son yön değişmişse git fiyatları oku veya yansıt gibi birşey demem lazım ki sadece o anda fiyatı okusun. Bir önceki son yön değişmiş ise git son fiyatı oku demek lazım fakat son yon bir liste değil anladıgım kadarıyla.

    Yonumuz diye bir değişken oluşturdum global alanda timer dışında burayı kontrol ettireyim diyordum. Yanlız Yonumuz adlı değişkeni tetikleyemiyorum. yine timer veya for gibi birşeylere girişmek gerekiyormuş gibi.

    Aklıma gelen şey şu Yonumuz adlı global alandaki değişkeni bir listeye çeviremezmiyiz. Bunu bir liste halinde tutup bir önceki yonumuz şöyle şimdiki yönümüz böyle ise fiyatı o zaman oku gibi bir kurgu problemı cozermı yoksa liste sürekli olarak dolup şişirirmi programı kafamda deli sorular KIT C# bilgisiyle :D

    Kod:
    int Yonumuz;
            
            public void timer1_Tick(object sender, EventArgs e) //timer1 acılınca okunacak verıler
            {
    
                SistemAdi = textBoxsistemadi.Text;
                SembolAdi = textBoxsembol.Text;
                Periyot = textBoxperiyot.Text;
                var Sistemim = User.Sistem.SistemGetir(SistemAdi, SembolAdi, Periyot);
                
                if (Sistemim.SonYon == "A")
                {
                    lblsistemyonu.Text = "LONG";
                    Yonumuz = 1;
                    var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku
                    float P1 = S1.LastPrice; //son fiyatı
                    lblislemfiyat.Text = P1.ToString("0.0000"); //yazdır
                }
                if (Sistemim.SonYon == "S")
                {
                    lblsistemyonu.Text = "SHORT";
                    Yonumuz = -1;
                    var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku
                    float P1 = S1.LastPrice; //son fiyatı
                    lblislemfiyat.Text = P1.ToString("0.0000"); //yazdır
                }
                if (Sistemim.SonYon == "F")
                {
                    lblsistemyonu.Text = "FLAT";
                    Yonumuz = 0;
                    var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku
                    float P1 = S1.LastPrice; //son fiyatı
                    lblislemfiyat.Text = P1.ToString("0.0000"); //yazdır
                }
                
                else if (Sistemim.SonYon == null)
                {
                    MessageBox.Show("Sistem Bulunamadı!");
                }
            }
    user.dll ve arayuz, bunlarla ugrasip bir de kit C# diyorsunuz . Sistem denemelerimi bitirip ideal robotu yoluna koyduktan sonra sizin bu yaptiklariniza benzer seyleri kurcalamayi dusunuyorum ben de.

    Asagidaki kod yeni bir liste olusturup dongu kosturmadan, SistemGetir ile aldiginiz sisteminizin yonu A/S/F degerlerinden herhangi biri atandiginda 1, diger tum anlarda 0 degeri uretir. if ile SonYonPulse==1 oldugu anlarda fiyat okumasi yapabilir.

    PHP Code:
    var SonYonPulse=0;

    //

    SonYonPulse=Sistem.Yon[Sistem.Yon.Count-1]=="A"?1:Sistem.Yon[Sistem.Yon.Count-1]=="S"?1:Sistem.Yon[Sistem.Yon.Count-1]=="F"?1:0

  2.  Alıntı Originally Posted by atakanözbaki Yazıyı Oku
    // hesapla
    var DEMA1 = Sistem.DEMA(5);
    var DEMA2 = Sistem.DEMA(21);

    // hesaplanan verileri çizgilere aktar
    Sistem.Cizgiler[0].Deger = DEMA1;
    Sistem.Cizgiler[1].Deger = DEMA2;

    // sistem strateji
    Sistem.KesismeTara(DEMA1, DEMA2);


    // algo strateji
    if (Sistem.YukariKestiyse(DEMA1, DEMA2)) // alış
    Sistem.AlgoIslem = "A";
    if (Sistem.AsagiKestiyse(DEMA1, DEMA2)) // satış
    Sistem.AlgoIslem = "S";


    // algo açıklama
    Sistem.AlgoAciklama = "DEMA1=" + DEMA1[Sistem.BarSayisi-1].ToString("0.00") + " " +
    "DEMA2=" + DEMA2[Sistem.BarSayisi-1].ToString("0.00");

    ************************************************** ********


    // parametreleri al
    var Periyot = Sistem.Parametreler[0];
    var Yuzde = Sistem.Parametreler[1];

    // TOMA hesapla
    var TOMA = Sistem.TOMA(Periyot, Yuzde);
    // EMA hesapla
    var Veriler = Sistem.GrafikFiyatSec("Kapanis");
    var EMA = Sistem.MA(Veriler, "Exp", Periyot);

    // hesaplanan verileri çizgilere aktar ve açıklama ekle
    Sistem.Cizgiler[0].Deger = TOMA;
    Sistem.Cizgiler[1].Deger = EMA;

    // strateji
    Sistem.KesismeTara(EMA, TOMA);



    **************************************
    İdealin demo verisyonunda üsteki dema5-dema21 formülünde siyah olarak belirttiğim yerde sistem strateji ve algo stratejisi varken Toma formül örneginde sadece strateji bölümü eklenmiş, algo strateji eklenmemiş.

    dema örnegi algo örnegi iken, toma indikatör örnegimi oluyor. Fark bumdanmı kaynaklanıyor.
    Bence Algo stratejiye hic kafa yormaniza gerek yok. Bildigim kadariyla Sistem.AlgoIslem sartlar gerceklestiginde sadece 1 kereligine al ya da sat yapilmasi icin kullanilan bir fonsiyon. Her iki kodda da "Sistem.KesismeTara" ayni islevi goruyor. Matrikste "cross" ile yukari / asagi kesisim taramasi burada tek bir fonsiyon ile yapilabiliyor diyebiliriz. Bu fonsiyonun yaptigini "Sistem.YukariKestiyse / Sistem.AsagiKestiyse" fonsiyonlarini ayri ayri kullanarakta yapabilirsiniz.

    Hazir fonsiyonlari kullanmadan, dongu icerisinde "TOMA[i]>EMA[i] and TOMA[i-1]<=EMA[i-1]" gibi bir "if" satiri "Sistem.YukariKestiyse" fonsiyonun yaptigina benzer seyi yapacaktir. Sistem fonsiyonlarini tanimli indikatorlerle kullanirsaniz ayrica dongu kosturmadan ve Sistem.Yon gibi fonsiyonlarina atama yapmadan kolayca grafik uzerinden Al / Sat oklarini gorebilir ve olsurturdugunuz sistemi daha sonra robota baglayabilirsiniz.

  3. Pazartesi piyasa açıkken yazdığım algorıtmayı deneyeceğim Çünkü daha basit bir yöntem performansa katkısıda olumlu listeleri okumak zorunda kalmayacak forlara girmeyecek timerlere girmeyecek.

    Eğer düzgün çalışmazsa bearbull ve sizin kodlarınızı deneyeceğim bir önceki yön şöyleyse şöyle yap liste tut vesaireye çevirmek zorunda kalacağım.

    BU arayüzü tasarlarken mecburen performansıda düşünmem gerekecek. O yüzden olabilecek en kestirme yoldan yapmaya çalışıyorum.

    Her ikinize de teşekkür ederim.

    User.dll de veya C# kodlamasın da gerçekten kıtım yani bunları herhangibirinizde yapabilir aslında. Çokta özel durumlar değil.

    Tabiki temel bir C sarp bilgisi gerektiriyor. Merakınız varsa biraz araştırma ve eğitimle bir boyut ilerliyorsunuz. Kendime niye kıt diyorum çünkü kıt abi :D

    Algoritma kıtlığım var. Anında düşünemiyorum da 3 saat beyin yandıktan sonra aslında şöyle bir algorıtma iş yaparmış diyorum.

    BU arada bu arayüzü tasarlarken kafamda bazı durumlarda aydınlandı. ideal bu arayüzleri, bu tasarımları, İdealgoyu ve metotları yazarken performansa ciddi emek ayırmıştır diye düşünüyorum.

    Çünkü bir algorıtma kurmanın 100 adet farklı yöntemi ve yolu oluyor.

    Basit bir kurguyu binbir tefile çevirip sonuca ulaşmak var. Çok basit bir biçimde aynı sonuca ulaşmak var.

    Algoritma kurma kıtlıgından ileri gelecek bir problem sistemin çalışma hızını etkileyecek calısma hızıda çeşitli kayma problemlerıne yol açacak bunun maliyetide yine bize dönecek malesef yaptığımız işte performans mecburen ön planda olması gerekiyor.

    Arayüz komple bitsin zaten performans testleride yapmam gerekecek.

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

  4.  Alıntı Originally Posted by erhanacikgoz1 Yazıyı Oku
    performans açısından döngüye sokmadan bu işi yapayım demiştim.

    Bir arayüz tasarlıyorum timer ile Sistem Getiri çalıştırıp sistemin yönlerini sürekli olarak çekiyorum. Yön çekildiği veya değiştiği andaki grafik fiyat verilerindeki son değer neyse onu form uygulamama yazdırmak istiyorum amacım bu.

    -Sistem YÖnünü çekiyorum ve forma yazdırabiliyorum PROBLEM YOK!
    -Alış veya Satış fiyatınıda çekiyorum forma yazdırıyorum YÖN DEĞİŞMESE BİLE FİYAT DEĞİŞİYOR. PROBLEM VAR!

    BUradaki problem ana sebebi timer sürekli olarak okuma yapıyor haliyle koşul gerçekleştiği içinde okumayı sürdürüyor. Buaya bir if bloğuyla son yön değişmişse git fiyatları oku veya yansıt gibi birşey demem lazım ki sadece o anda fiyatı okusun. Bir önceki son yön değişmiş ise git son fiyatı oku demek lazım fakat son yon bir liste değil anladıgım kadarıyla.

    Yonumuz diye bir değişken oluşturdum global alanda timer dışında burayı kontrol ettireyim diyordum. Yanlız Yonumuz adlı değişkeni tetikleyemiyorum. yine timer veya for gibi birşeylere girişmek gerekiyormuş gibi.

    Aklıma gelen şey şu Yonumuz adlı global alandaki değişkeni bir listeye çeviremezmiyiz. Bunu bir liste halinde tutup bir önceki yonumuz şöyle şimdiki yönümüz böyle ise fiyatı o zaman oku gibi bir kurgu problemı cozermı yoksa liste sürekli olarak dolup şişirirmi programı kafamda deli sorular KIT C# bilgisiyle :D

    Kod:
    int Yonumuz;
            
            public void timer1_Tick(object sender, EventArgs e) //timer1 acılınca okunacak verıler
            {
    
                SistemAdi = textBoxsistemadi.Text;
                SembolAdi = textBoxsembol.Text;
                Periyot = textBoxperiyot.Text;
                var Sistemim = User.Sistem.SistemGetir(SistemAdi, SembolAdi, Periyot);
                
                if (Sistemim.SonYon == "A")
                {
                    lblsistemyonu.Text = "LONG";
                    Yonumuz = 1;
                    var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku
                    float P1 = S1.LastPrice; //son fiyatı
                    lblislemfiyat.Text = P1.ToString("0.0000"); //yazdır
                }
                if (Sistemim.SonYon == "S")
                {
                    lblsistemyonu.Text = "SHORT";
                    Yonumuz = -1;
                    var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku
                    float P1 = S1.LastPrice; //son fiyatı
                    lblislemfiyat.Text = P1.ToString("0.0000"); //yazdır
                }
                if (Sistemim.SonYon == "F")
                {
                    lblsistemyonu.Text = "FLAT";
                    Yonumuz = 0;
                    var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku
                    float P1 = S1.LastPrice; //son fiyatı
                    lblislemfiyat.Text = P1.ToString("0.0000"); //yazdır
                }
                
                else if (Sistemim.SonYon == null)
                {
                    MessageBox.Show("Sistem Bulunamadı!");
                }
            }
    Alternatif olarak yon bilgisini degistiginde bellege atarak sabit olarak saklayabilirsiniz. Sistem.SayiTablosunuGuncelle ile.

    MI 6 cihazımdan Tapatalk kullanılarak gönderildi

  5.  Alıntı Originally Posted by dombayci Yazıyı Oku
    Alternatif olarak yon bilgisini degistiginde bellege atarak sabit olarak saklayabilirsiniz. Sistem.SayiTablosunuGuncelle ile.

    MI 6 cihazımdan Tapatalk kullanılarak gönderildi
    Daha neler ogrenecegiz bakalim.

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

  6. İlk verdiğim kendi yöntemimle fiyat olayını çözdüm Fakat timer ile sürekli olarak sistemgetiri çalıştırmak performans kaybettiriyor Videoda İmleci hareket ettirdiğim ana odaklanın. Onay kutuları üstünde gezdiğimde Üzerine geldiğimde renklenme olur. Fakat renklenme gecikmeli şekilde gerçekleşiyor. yaklaşık 1 saniye civarında gecikerek renklendiriyor. BU sorunu user.dll içine kendi sistemimi gömerek çözebilirim sistem getiri çalıştırmak zorunda kalmayacağım için hızlıca calısacaktır.

    Ancak bu programı ileriye dönük geliştirilebilir şekilde tasarlıyorum. Çoklu sistem ve karmaşık algorıtmalara ihtiyaç duyabilirim. Aynı şekilde proje işe yarar bir şekle gelirse ticari amaçlıda kullanabilirim. Haliyle insanlar gidip user.dll kodlarına kendı sıstemını giremeyeceğine göre sistem getir benzeri bir yöntemle kolayca kendı sıstemlerıyle bu arayüz arasında köprü oluşturacak basit bir tasarım lazım.

    İdealin robot bölümü acaba sistemleri timerlamı okutuyor. Bir fikri olan var mı ?

    https://twitter.com/erhanacikgoz1/st...949099008?s=20
    Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
    Sokrates twit @erhanacikgoz1

  7. Sorunu çözdük yazılımcı bir arkadaşla 40 TL gönderdim emeğinin karşılığı diye.

    Yaptığı iş 40 tl edermi bilmem ama ilk ticaret diye bende pazarlık etmek istemedim.

    Yaptığı işlemin kabacası sistemgetir bölümünü başka bir işlemciye atamak oldu. Benim aklıma niye gelmedi acaba cünkü ideal de grafikleri ayrı robotları ayrı bır ıslemcıde calıstırıyordu. Gerçi aklıma gelsede zaten kodlayamazdım dıye düşünüyorum.

    Neyse bununla ilgili makaleyide buraya atayım sizlerde öğrenmıs bilgi edinmiş olun umarım bu tur yazılardan rahatsız olmuyorsunuzdur maksadım ben birşey öğrenirken sızde öğrenmiş olun ;)

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

  8. Yaşadığım sorunu video haline getirmiştim.

    https://www.youtube.com/watch?v=rUuc...ature=youtu.be


    Merhaba arkadaşlar..
    Bu yazımızda "BackgroundWorker" kontrolünü inceleyeceğiz. Windows uygulamalarında bazı işlerin ilerlemesi çok zaman alır. Örneğin ağ üzerinde bir dosya transferi yapan bir program yaptınız. Transfer olayı 5 dakika sürüyor diyelim. Program bu işlemi yaparken de kullanıcının etkisine karşı bir tepki verebilmelidir. Bizim yapmamız gereken iş, transfer işlemi yürütülürken, programın kullanıcıya tepki vermesini sağlamak için, arka planda yeni bir thread açmaktır. Thread 'ın, "geçir(fiil), iplik(isim),en küçük yürütme birimi(isim)" gibi kelime anlamları vardır. Programlamadaki anlamı ise, işlemciye veri aktarımı yapan küçük veri yollarıdır. Bu açıklamalardan sonra BackgroundWorker kontrolü ile ilişkisini anlatmak gerekirse, BackgroundWorker arka planda thread 'lerle çalışır, thread 'leri kontrol eder. Bu açtığım thread sayesinde programım kilitlenmeyecektir. Bu işi yapan komponente "BackgroundWorker" denir. Kısacası BackgroundWorker, windows uygulamalarında "multi thread" uygulama geliştirmenize olanak sağlar.

    Programı bu haliyle çalıştırdığımda, kullanıcıya tepki vermiyor, formumu sürükleyemiyorum. Formun textinde "not responding" (yanıt vermiyor) ibaresi görmek mümkün. Bir kilitlenme söz konusu. Çünkü thread 'im meşgul. Bu olayı bir örnekle anlamaya çalışalım.

    Uygulamada "main thread" denilen bir thread vardır. Bu thread, program çalıştığında formun görsellerini cpu da işleyip ekrana getirmekten sorumludur. Biz zaman gerektiren bir iş parçacığı yollarsak bu thread 'de bir trafik meydana gelir. Bu thread 'de oluşan bir trafik görselliği olumsuz yönde etkiler. Çünkü bir yandan iş yapmaya çalışırken diğer yandan programın anlık görselliğini de taşımak zorundadır. Bunları aynı anda yapamaz. Aynı anda yapamaz derken arkadaşlar: Tek şeritli bir yol düşünün. Aynı anda iki araba geçebilir mi? Ancak sırayla geçebilirler. Bu örnekte thread bizim tek şeritli yolumuz, araba ise işin tamamı değil, işin bir parçası olsun. Eğer thread 'in üzerinden iki iş aynı anda geçmeye çalışırsa, thread bunu bir işten bir parça, diğer işten bir parça alarak yapar. Böylece görsellikte bir aksaklık meydana gelir.
    Bu sorun gidermek için, en az bir adet daha thread 'e ihtiyaç duyulur. Bu thread 'e de "cross thread" denir. Böylelikle "main thraed" im rahatlıkla görsellikle ilgilenirken, yeni açtığım thread de benim yapmak istediğimiz iş ile ilgilenir.

    Şimdi programımız kullanıcıya çok rahat tepki verebiliyor. (Formumu sürükleyebiliyorum, butonum aktif, TextBox atsam değer girebilirim vs..)

    Yazının full versiyonu

    http://gaffarsalkim.blogspot.com/201...r-kullanm.html
    Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
    Sokrates twit @erhanacikgoz1

Sayfa 347/593 İlkİlk ... 247297337345346347348349357397447 ... 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
  •