R-Portfolio - çeşitlendirme yöntemi - sayfa 7

 
Reshetov :

MQL5'te ve hatta MQL4'te bu tür algoritmalar için kod yürütme hızı çok düşüktür, yani. her neyse, saf MQL'de hiçbir şey işe yaramayacak ve en azından bir DLL oluşturmanız gerekecek. Ve bundan hala bir anlam olmayacak, çünkü. Portföyleri her tıklamada veya küçük zaman dilimi çubuklarında gerçek zamanlı olarak optimize etmeye gerek yoktur.

Yuri, bu doğru değil, mql5 hız açısından bir kurbağadan hiçbir şekilde aşağı değildir.

Kullanımın anlamına gelince - örneğin, Forex ile ilgili olarak, araçlardan ziyade strateji portföylerini optimize etmekle daha çok ilgileniyorum. Yani ... mazeretler kabul edilmez. :)

Ama iyi haber şu ki, mql5 kodu yazarken size eşlik edebilirim. Hatta her şeyi kendim yazabilirim. Algoritmanın yalnızca bir açıklaması istenir.

Bence eğlenceli olacak.

 
MetaDriver :

Yuri, bu doğru değil, mql5 hız açısından bir kurbağadan hiçbir şekilde aşağı değildir.

Bu hikayeleri çocuklarınıza anlatın. Java sanal makineleri, JIT derlemesi gerçekleştirir, yani. programı çalıştırmadan önce Java kodunu makine koduna derleyin. Böylece Java uygulamalarının yürütülmesi yerel kodda gerçekleşir.

Quake2'nin Java ve C++'daki performansını karşılaştıran sonuçlara bakın: http://www.bytonic.de/html/benchmarks.html

Konuyla ilgili daha fazla bilgi: Benchmarks C#, C++ , Java , Delphi

Sonuçta, Java ve MQL5'te yazılmış aynı kıyaslamayı çalıştırarak bunu kontrol etmek kolaydır.


MetaSürücü :

Örneğin, Forex ile ilgili olarak kullanımın anlamına gelince, araçlardan ziyade strateji portföylerini optimize etmekle daha çok ilgileniyorum. Yani ... mazeretler kabul edilmez. :)

Equity stratejilerinin ilk farklılıklarını bir CSV dosyasında atın ve optimize edin. Neden MQL5'in yerel kodda yürütülen bir uygulamayı "sollayabileceği" mazeretlerine ihtiyacımız var?

MetaSürücü :

Ama iyi haber şu ki, mql5 kodu yazarken arkadaş kalabiliyorum. Hatta her şeyi kendim yazabilirim. Algoritmanın yalnızca bir açıklaması istenir.


Devam etmek. Brown-Robinson algoritması gizli değildir. İşte Java kodu:

   private int [] optimization( double [][] a) {
    Random rand = new Random();
     int m = a.length;
     int n = a[ 0 ].length;
     int [] p = new int [m];
    Arrays.fill(p, 0 );
     int [] q = new int [n];
    Arrays.fill(q, 0 );
     double [] x = new double [m];
    Arrays.fill(x, 0 d);
     double [] y = new double [n];
    Arrays.fill(y, 0 d);
     int r = rand .nextInt(m);
     int c = 0 ;
     for ( int t = 0 ; t < 10000 000 ; t++) {
        for ( int j = 0 ; j < n; j++) {
          y[j] = y[j] + a[r][j];
        }
        c = 0 ;
         for ( int j = 1 ; j < n; j++) {
           if ((y[j] == y[c]) && rand .nextBoolean()) {
            c = j;
          }
           if (y[j] > y[c]) {
            c = j;
          }
        }
        q[c] = q[c] + 1 ;
         for ( int i = 0 ; i < m; i++) {
            x[i] = x[i] + a[i][c];
        }
        r = 0 ;
         for ( int i = 1 ; i < m; i++) {
           if ((x[i] == x[r]) && rand .nextBoolean()) {
            r = i;
          }
           if (x[i] < x[r]) {
            r = i;
          }
        }
        p[r] = p[r] + 1 ;
    }

     return q;
  }
 
Reshetov :

Bu hikayeleri çocuklarınıza anlatın. Java sanal makineleri, JIT derlemesi gerçekleştirir, yani. programı çalıştırmadan önce Java kodunu makine koduna derleyin. Böylece Java uygulamalarının yürütülmesi yerel kodda gerçekleşir.

Yura, bu sana yeni bir haber gibi görünüyor ama mql5 sanal makinesi de benzer şekilde çalışıyor. Derleyici, başlamadan önce bir bayt kodu yapar, ayrıca yerel olarak derlenir. Tıpkı Java ve Sharpe'deki gibi. mql5 forumunu daha sık okuyun.

Quake2'nin Java ve C++'daki performansını karşılaştıran sonuçlara bakın: http://www.bytonic.de/html/benchmarks.html

Konuyla ilgili daha fazla bilgi: Benchmarks C#, C++ , Java , Delphi

Sonuçta, Java ve MQL5'te yazılmış aynı kıyaslamayı çalıştırarak bunu kontrol etmek kolaydır.

Kontrol ettim. Doğru, Java ile değil Sharp ile karşılaştırdım. Aynı hıza sahip. Java'nın Sharpe'dan en az %30-40 daha hızlı olduğunu düşünmüyorum. Arada bir fark varsa kimin lehine olduğu henüz bilinmiyor. Java ile karşılaştırmayı kabul ediyorum. Karşılaştırmalı testler için hangi kodu önerirsiniz?

Equity stratejilerinin ilk farklılıklarını bir CSV dosyasında atın ve optimize edin.

Bu seçenekle ilgilenmiyorum. Katıştırılabilir kod istiyorum. Ve yapacağım.

Neden MQL5'in yerel kodda yürütülen bir uygulamayı "sollayabileceği" mazeretlerine ihtiyacımız var?

Yukarıyı görmek. Sollamaya güvenmiyorum, tamamen kimliğim var (artı veya eksi %10).

Devam etmek. Brown-Robinson algoritması gizli değildir. İşte Java kodu:

Evet, bu koda sahibim. Onu zaten yayınladın. Onu hemen etkisiz hale getirdim. Yorumlara en azından gerçekten anlamak için güvendim ve sadece yaramazlık yapmak için değil.

Tamam, tekrar deneyeceğim. İnternette algoritma fikrinin açıklamaları var. Çözeceğim.

 
MetaDriver :

Yura, bu sana yeni bir haber gibi görünüyor ama mql5 sanal makinesi de benzer şekilde çalışıyor. Derleyici bir bayt kodu yapar, başlamadan önce ek olarak yerel olarak derlenir. Tıpkı Java ve Sharpe'deki gibi. mql5 forumunu daha sık okuyun.

Kontrol ettim. Doğru, Java ile değil Sharp ile karşılaştırdım. Aynı hıza sahip. Java'nın Sharpe'dan en az %30-40 daha hızlı olduğunu düşünmüyorum. Arada bir fark varsa kimin lehine olduğu henüz bilinmiyor. Java ile karşılaştırmayı kabul ediyorum. Karşılaştırmalı testler için hangi kodu önerirsiniz?

Bu seçenekle ilgilenmiyorum. Katıştırılabilir kod istiyorum. Ve yapacağım.

Yukarıyı görmek. Sollamaya güvenmiyorum, tamamen kimliğim var (artı veya eksi %10).

Evet, bu koda sahibim. Onu zaten yayınladın. Onu hemen etkisiz hale getirdim. Yorumlara en azından gerçekten anlamak için güvendim ve sadece yaramazlık yapmak için değil.

Tamam, tekrar deneyeceğim. İnternette algoritma fikrinin açıklamaları var. Çözeceğim.

neşeli...

ancak

;)

 
MetaDriver :

Evet, bu koda sahibim. Onu zaten yayınladın. Onu hemen etkisiz hale getirdim. Yorumlara en azından gerçekten anlamak için güvendim ve sadece yaramazlık yapmak için değil.

Tamam, tekrar deneyeceğim. İnternette algoritma fikrinin açıklamaları var. Çözeceğim.

Kodda karmaşık bir şey yok. Kazanç matrisi argüman olarak iletilir - a[][], çıktıda oyuncunun getiri matrisinin sütunları için optimal stratejisi q


Random rand = new Random(); // Объект rand - генератор случайных чисел
 int [] q = new int [n]; //  Объявление целочисленного массива q  размером n и выделение под него памяти
 int m = a.length; // переменной m присваивается значение в виде количества строк в платежной матрице
 int n = a[ 0 ].length; // переменной n присваивается значение в виде количества столбцов в платежной матрице
Arrays.fill(p, 0 ); // Массив p инициализируется нулевыми значениями

 int r = rand .nextInt(m); // значению переменной r присваивается случайное число в диапазоне от 0 до m - 1
 rand .nextBoolean() // с вероятностью 50% / 50% даст случайным образом значение true или false
Diğer her şeyi, bu tür dilleri C bilen herhangi bir programcı dışarıdan yardım almadan anlayacaktır. Java'yı C'den ayıran tek şey, belleği serbest bırakmaya gerek olmamasıdır. Onlar. bir değişken küme parantezleri {} bloğu içinde bildirilirse, bu, blok kapatıldıktan sonra, bloğun dışındaki değişkenin artık geçerli olmadığı ve Java sanal makinesinin kendisine ayrılan belleği bağımsız olarak serbest bırakacağı anlamına gelir. Bir bloğun içinde, bu bloğun dışında bildirilen bir değişkene erişmeye çalışırken, Java derleyicisi bir hata üretecektir.
 
Alex5757000 :
Neden tüm bunları mql5'e yazıp kaynak kodunu göndermiyorsunuz?

http://r-portfolio.sourceforge.net/ adresinde kamuya açık kaynaklar

Çok ihtiyacınız varsa, bunları herhangi bir programlama dilinde kendiniz yeniden yazabilir veya Job ile iletişime geçebilirsiniz - MQL kodunda bir şey uygulamak isteyenlerin çeşitli kaprislerini ve şehvetlerini yerine getirirler.

 
Yuri, programınız ile portföy oluşturma hakkında bir sorum var, "korelasyon danışmanı" başlığında sormuştum ama bu konuyu buldum ve burada soracağım. Portföyünüze ana dallarla birlikte altını da dahil ediyorsunuz, ancak döviz çiftleri ve altının farklı işlem fiyatları var. Bu hesaplamada nasıl düzeltilir ve portföyünüz için kendiniz hangi çiftleri kullanıyorsunuz? Bu konuyla ilgilendim ve deneyimli bir uzmandan sistemi kullanmanın yaklaşık sonuçlarını bilmek istiyorum.
 
FION :
Yuri, programınız ile portföy oluşturma hakkında bir sorum var, "korelasyon danışmanı" başlığında sormuştum ama bu konuyu buldum ve burada soracağım. Portföyünüze ana dallarla birlikte altını da dahil ediyorsunuz, ancak döviz çiftleri ve altının farklı işlem fiyatları var. Bu hesaplamada nasıl düzeltilir ve portföyünüz için kendiniz hangi çiftleri kullanıyorsunuz? Bu konuyla ilgilendim ve deneyimli bir uzmandan sistemi kullanmanın yaklaşık sonuçlarını bilmek istiyorum.
Korelasyon Danışmanı'ndaki cevaba bakın
 
Reshetov :

Java sanal makineleri, JIT derlemesi gerçekleştirir, yani. programı çalıştırmadan önce Java kodunu makine koduna derleyin. Böylece Java uygulamalarının yürütülmesi yerel kodda gerçekleşir.


jit to java, parçalar halinde yerel kodu derler. Anladığım kadarıyla, mql5 tüm programı bir kerede makine kodunda derliyor - bu oldukça aot, jit değil.
 
Reshetov :
Korelasyon EA'daki cevaba bakın

.

http://sourceforge.net/projects/r-portfolio/ - Rusça mı?