Döviz Çiftlerinin Ticaret Portföyü - sayfa 9

 
MetaDriver :

Tarihte oradalar. (Gerçekten de hepsi beyaz, bu da reklamlarla tamamen tutarlı, onaylıyorum.)

Sadece beyaz ve kabarık olmalılar çünkü. von Neumann-Morgenstern teoremine göre MiniMax değeri oyunun fiyatıdır, yani. asgari beklenti. Optimum şekilde çeşitlendirilmiş bir portföy, içinde seçilen enstrümanların fiyatlarının hangi yönde hareket ettiğine bakılmaksızın kâr sağlamalıdır. Buna göre, portföy en az bir tarihsel dönemde zarara izin veriyorsa, yukarıdaki teoreme göre beklentisi negatiftir ve optimal olarak çeşitlendirilmemiştir.
 
C-4 :

Ve sadece açık olduğu için bir şeyi kullanmak, nasıl çalıştığını anlamadan, aklı başında hiç kimse bunu yapmayacaktır.

Kimse sizi kullanmaya zorlamıyor. Kaynaklar açık, altında yatan matematiksel teori ve algoritmalar gizli değil. Aklı ve sağlam hafızası olan herkes, bağımsız olarak nasıl çalıştığını anlayabilir. Geri kalanı dinlenmeye bırakın.
 
kharko :

Uygulama için tüm seçeneklerin sıralanması gerekir. Toplam seçenek sayısı 2 üzeri N'nin kuvvetidir; burada N, portföydeki araç sayısıdır. Belki birisi yardım edebilir - hazır kod. Çok minnettar kalırım.

Düşüş için optimize edilmiştir. Çizgi daha düz. Ama düşüncelerim sırasında aniden bir soru ortaya çıktı. Yayılımı nasıl hesaplarsınız? Sonuçta bunun için kaç işlem yapılacağını ve hangi hacimlerde yapılacağını bilmeniz gerekiyor! Göstergemde spreadi hesaba katmıyorum ama swaplarda ne kadar puan kaybedeceğimizi/kazanacağımızı hesaplamaya çalıştım. Optimize ederken, takaslar dikkate alınmaz.

Dikkat! Çok sayıda döviz çifti ve analiz edilen çubuk sayısı kullanmamanızı şiddetle tavsiye ederim.

10 döviz çiftinin düşüşü ve Uzunluk = 100 parametresi için optimizasyon yapıldığında, gösterge yaklaşık 5 saniye içinde başlatılır!!! Sabırlı ol :)

Dosyalar:
 

Dosyalar klasöründe olması gereken ET_para.csv dosyasını doldurma örneği:

sembol tip
EURUSD 1
EURGBP 0
EURCHF 1
EURJPY 1
GBPUSD 1
USDCHF 0
USD/JPY 1
AUDUSD 1
USDCAD 1
NZDUSD 0

İlk satır başlık için kullanılır ve hesaplamalara dahil edilmez!

Dosyalar:
et_para.zip  1 kb
 
EvgeTrofi :

Düşüş için optimize edilmiştir. Çizgi daha düz. Ama düşüncelerim sırasında aniden bir soru ortaya çıktı. Yayılımı nasıl hesaplarsınız? Ne de olsa bunun için kaç işlem yapılacağını ve hangi hacimlerde yapılacağını bilmeniz gerekiyor! Göstergemde spreadi hesaba katmıyorum ama swaplarda ne kadar puan kaybedeceğimizi/kazanacağımızı hesaplamaya çalıştım. Optimize ederken, takaslar dikkate alınmaz.

Dikkat! Çok sayıda döviz çifti ve analiz edilen çubuk sayısı kullanmamanızı şiddetle tavsiye ederim.

10 döviz çiftinin düşüşü ve Uzunluk = 100 parametresi için optimizasyon yapıldığında, gösterge yaklaşık 5 saniye içinde başlatılır!!! Sabırlı ol :)

Aferin...

Spread ve swap dikkate alınmaz. Gösterge yalnızca noktalarla çalışır.

Hacim, yayılma ve puan değerini hesaba katarsak, doğrudan bu parametrelerin doğru değerlerine bağlı olan sanal bir Özkaynak eğrisi elde ederiz. Portföyün tüm enstrümanları için her çubukta bir puanın değerinin mevduat para birimi cinsinden hesaplanması gerekmektedir. Birçok DC'de, yayılmanın değeri, eğriyi önemli ölçüde bozacak şekilde değişir.

Tüm seçenekleri yinelemek için algoritmanızla ilgileniyorum. Yardımın için çok minnettar olurum.

 

Seçenekler matrisi aşağıdaki gibi oluşturulmuştur:

 void Sbor( int & Ar[][]){
   //Создание массива вариантов сочитаний действий над валютными парами
   int Begin = 0 ;
   int Size = MathPow (V, CountSy);
   int min = 0 ;
   int max = 1 ;
   if (V== 3 ) min = - 1 ;
   ArrayResize (Ar, Size);
   for ( int i = 0 ; i < Size; i++){ // Варианты (строки)
       for ( int j = 0 ; j < CountSy; j++){ // Инструменты (столбцы)
         if (i== 0 ){
            Ar[i][j]= 0 ;
         } else {
             if (j== 0 ){
               if (Ar[i- 1 ][j]<max){
                  Ar[i][j]++;
               } else {
                  Ar[i][j]=min;
               }
            } else {
               if (Ar[i][j- 1 ]<Ar[i- 1 ][j- 1 ]){
                   if (Ar[i- 1 ][j]<max){
                     Ar[i][j]++;
                  } else {
                     Ar[i][j]=min;
                  }
               } else {
                  Ar[i][j]=Ar[i- 1 ][j];
               }
            }
         }
      } //Next j
   } //Next i
} //Sbor()

Bu kodun anlaşılmasını kolaylaştırmak için, böyle özel bir matris oluşturmak için formüller içeren bir Excel elektronik tablosu yükledim.

Peki, o zaman sadece tüm seçenekleri aramak için kalır :)

Dosyalar:
arvar.zip  5 kb
 
EvgeTrofi :

Seçenekler matrisi aşağıdaki gibi oluşturulmuştur:

Bu kodun anlaşılmasını kolaylaştırmak için, böyle özel bir matris oluşturmak için formüller içeren bir Excel elektronik tablosu yükledim.

Peki, o zaman sadece tüm seçenekleri aramak için kalır :)

Petersburg

Daha basit kod yazdı:

 void Matrica()
{
   double size = MathPow ( 2 ,Num.Para);
   int trend[];
//---
   ArrayResize (trend,Num.Para);
   for ( int i= 0 ;i<size;i++)
   {
       int x = i;
       int pos = 0 ;
       ArrayInitialize (trend, 0 );
       while (x> 0 )
      {
         trend[pos] = x % 2 ;
         pos++;
         x = MathFloor (x / 2 );
      }
// Вывод варианта      
   }
}
Varyant numarası, ikili sayı sistemi olarak temsil edilir.
 

Düşüş ve kâr faktörü (mevcut bakiyenin maksimum düşüşe oranı) eklendi. Bu sayı ne kadar yüksek olursa, grafik o kadar kararlı görünür. Bu değer optimizasyon için kullanılır.

Yorumlar, optimizasyon için harcanan saniye sayısını gösterir. :)

Dosyalar:
 

EvgeTrofi :

Dikkat! Çok sayıda döviz çifti ve analiz edilen çubuk sayısı kullanmamanızı şiddetle tavsiye ederim.

10 döviz çiftinin düşüşü ve Uzunluk = 100 parametresi için optimizasyon yapıldığında, gösterge yaklaşık 5 saniye içinde başlatılır!!! Sabırlı ol :)

Çubuk sayısındaki sınırı nasıl atlayacağımı düşündüm. Optimizasyon için zaman aralığını bir sayıya, örneğin 100'e bölmek gerekir. Aralık 1000 bar ise, hesaplama yaptığımız 1000 / 100 = 10 zaman noktası elde ederiz. O. sayı ne kadar küçükse, hesaplamanın doğruluğu o kadar yüksek olur.
 
kharko :
Bar sayısındaki sınırı nasıl aşacağımı düşündüm. Optimizasyon için zaman aralığını bir sayıya, örneğin 100'e bölmek gerekir. Aralık 1000 bar ise, hesaplama yaptığımız 1000 / 100 = 10 zaman noktası elde ederiz. O. sayı ne kadar küçükse, hesaplamanın doğruluğu o kadar yüksek olur.

Ayrıca bu konuda çizik şalgam. Alanlar ne kadar küçük olursa, montaj olasılığının o kadar yüksek olduğu ortaya çıkıyor.

Öte yandan, R-Portföy, aralarında kare olanların en bilgilendirici olduğu getiri matrislerini kullanır, yani. kaç yüzgeç. Araçlar analiz edildiğinde, yaklaşık olarak birçok bölüm olmalıdır.

Ancak sonuçta, belirli anlarda, iyi korelasyonlu enstrümanlar bile korelasyonların işaretlerini değiştirebilir. Onlar. bölümleri rastgele ayırırsanız, değişen işaretlerle böyle kötü anların analize girme olasılığı vardır.

Kısacası, bölümleri düzenli aralıklarla (aynı sayıda çubukla) değil, herhangi bir enstrümanın (örneğin, portföydeki payı maksimum olanın) uç noktalarında bölmenin gerekli olduğu sonucuna vardım. . Onlar. ZigZag veya başka bir algoritmayı alın, trend dönüm noktalarını tespit edin ve R-Portfolio'ya (veya başka bir portföy analiz programına) daha fazla besleme için bu noktalara (yalnızca bu çubuklarda) dayalı teklifleri bırakın. Bu yüzden en koşer ve en bilgilendirici gibi görünüyor. Aksi takdirde, örneğin yana doğru düzeltmelerdeki değişiklik noktaları arasında bir miktar gürültünün analizi ortaya çıkar.