Elliot Dalga Teorisine dayalı ticaret stratejisi - sayfa 287

 
olyakish


Herkese iyi akşamlar
Lütfen bana bu algoritmanın ayrıntılarını söyle.

Şimdiden teşekkürler


Anlatıyorum.

Medyan filtresini tekrar tekrar fiyat eğrisine uygularız. Ne olduğunu? Tek boyutlu (>=3) bir pencere alıyoruz ve orijinal eğrinin tüm değerleri üzerinde çalıştırıyoruz. Her geçerli noktada, pencereye düşen noktaları değere göre sıralayın. Geçerli noktaya, sıralanan diziden ortalama (dizinin ortasında yer alması anlamında) değeri atarız. Aynı filtreyi sonuca uygulayın. Bunu birçok kez tekrarlıyoruz (genellikle 20-30 kez yeterlidir).
Direnç seviyeleri elde etmek için fiyat eğrisini ters çevirin ve aynısını yapın. Sonra sonucu geri çeviriyoruz.
Bu kadar!
...



Küçük soru
Diyelim ki 1000 raporun geçmişini aldık (çubuklar)
pencere 3
1000.999 için pencere daha küçük olduğu için saymadığımız ve ilk hesaplamanın sadece 998 raporuna geldiğimizde yapıldığı ortaya çıktı (998.999 ve 1000 raporlarından verilerimiz var)
ilk geçişte elde edilen 998 sonuç
ikinci geçiş sırasında, zaten 996'da kalkıyoruz, rapor zaten önceki çalıştırma tarafından oluşturulan dizide
üçüncü koşuda 994'e çıkıyoruz ...
vb ...
yani, 30 kez çalıştırırsak, 960 değerlik bir dizi elde ederiz.

Belki seni yanlış anladım?
 
olyaklaşmak


Küçük soru
Diyelim ki 1000 raporun geçmişini aldık (çubuklar)
pencere 3
1000.999 için pencere daha küçük olduğu için saymadığımız ve ilk hesaplamanın sadece 998 raporuna geldiğimizde yapıldığı ortaya çıktı (998.999 ve 1000 raporlarından verilerimiz var)
ilk geçişte elde edilen 998 sonuç
ikinci geçiş sırasında, zaten 996'da kalkıyoruz, rapor zaten önceki çalıştırma tarafından oluşturulan dizide
üçüncü koşuda 994'e çıkıyoruz ...
vb ...
yani, 30 kez çalıştırırsak, 960 değerlik bir dizi elde ederiz.

Belki seni yanlış anladım?



Kesinlikle bu şekilde değil. Teknik olarak, biraz farklı yapılır. Filtreyi uygulamadan önce, orijinal diziyi her iki yönde filtre penceresinin genişliğinin yarısı kadar genişletirsiniz. Yeni dizide kenarlardan oluşan boş alanlar ya bir sabitle yani orijinal dizinin kenarından gelen son değerle ya da orijinal dizinin uç değerleriyle simetrik olarak doldurulur. Bu durumda, filtreyi orijinal 1000 puanlık diziye uyguladıktan sonra tekrar 1000 puan alacaksınız. Bir sonraki filtrelemede her şey tekrar eder.
Elbette bu durumda kenarlarda bozulmalar meydana gelebilir. Ancak bundan kaçış yoktur, çünkü herhangi bir pencere filtresinin (ve aslında herhangi birinin) medyan da dahil olmak üzere bir faz gecikmesi vardır. Genel olarak, doğa böyle çalışır.
Tarif ettiğiniz gibi yapabiliriz, ancak daha sonra orijinal dizinin kenarına ulaşmayacağız veya bir uzantı kullanmayacağız, ancak sonucun aşırı değerlerini güvenilir olarak kabul edemeyiz.
Bu kötü bir haber.
İyi haber şu ki, medyan filtresi kenar etkilerine doğrusal filtreler kadar duyarlı değil. Kendime bakmayı başardığım bu birkaç örnek, kenar bozulmalarının ya küçük olduğunu ya da bazı durumlarda hiç olmadığını gösteriyor.

not. Evet... Şimdi bile aklıma bir fikir geldi. Filtre özyinelemeli olarak uygulanabilir. Ne olur - bilmiyorum, denemedim ama daha hızlı olacak.
 
Andre69, önerdiğin medyan filtre algoritmasını uyguladım. Üçüncü çalıştırmadan sonra düzleştirilmiş eğrinin şeklinin değişmediği ortaya çıktı. Bu etkiyi çok çeşitli pencere boyutlarında test ettim (10.000 örneğe kadar).
Ticaretteki uygulamalara gelince, "sol pencere"nin kullanımı bizim için doğrudur, bu, geçerli noktanın, mevcut değerin TAMAMEN solunda bulunan pencerenin merkezinden bir değer atandığı zamandır. Tabii bu durumda bir faz gecikmesi (gecikme) ortaya çıkıyor ama dünya böyle işliyor :-)
 
nötron için

Andre69, önerdiğin medyan filtre algoritmasını uyguladım. Üçüncü çalıştırmadan sonra düzleştirilmiş eğrinin şeklinin değişmediği ortaya çıktı. Bu etkiyi çok çeşitli pencere boyutlarında test ettim (10.000 örneğe kadar).
Ticaretteki uygulamalara gelince, "sol pencerenin" kullanımı bizim için doğrudur, bu, geçerli noktanın, mevcut değerin TAMAMEN solunda bulunan pencerenin merkezinden bir değer atandığı zamandır. Tabii bu durumda bir faz gecikmesi (gecikme) ortaya çıkıyor ama dünya böyle işliyor :-)


Evet ... Tutarsızlık ortaya çıkıyor. Kontrol etmeye başladı. Sonunda medyan filtreleme için kullandığım koduma baktım. Grafikleri görüntülemek için küçük bir program için N yıl önce (N>5) yazdım. Artık bu programı her türlü araştırma için bir test alanı olarak kullanmaya başladım. Bu uygun ve kodun eski kısımlarına bakmadım. Her şey çalışıyor ve tamam... Şimdi baktım... ve aniden medyan filtrelemeyi düşündüğüm işlevin pek doğru yapmadığını öğrendim! İstem dışı yanlış bilgilendirme için çılgınca ve üzgünüm! başımı eğiyorum.
Neden ve neden zamanında yaptım - Tanrı korusun hatırlamıyorum.
Klasik medyan, sıralanmış bir dizinin merkez değerinin alındığı zamandır. Bazı nedenlerden dolayı, bu özel durumda, merkez ve önceki değer arasındaki ortalamayı aldım. Muhtemelen o zaman, uzun zaman önce, bir nedenden dolayı ona ihtiyacım vardı. Aynı zamanda doğrusal olmayan bir filtre olduğu ortaya çıktı, ancak elbette bu tam anlamıyla bir medyan değil. Klasik versiyona döndüğümde her şey anlattığınız gibi çıktı. Benim versiyonumda, filtre her uygulandığında eğri değişir ve sonunda düz bir çizgiye yönelir (birkaç yüz filtrelemeden sonra). Filtre penceresi ne kadar büyükse, bu o kadar hızlı gerçekleşir.
Daha fazla tutarsızlık olmaması için C'de bir kod parçası veriyorum.
Her şey basit, umarım herkes anlayabilir.
//---------------------------------------------------------------------------
void __fastcall TPlotForm2D_WL::FilterCurveMedian(int Flen)
{
 //количество точек кривой
 int NN=Chart1->Series[IndexUpDown->Position-1]->Count();
 
 //объявляем временные массивы и выделяем память под них
 double* TempArray=new double[NN+(Flen/2)*2];
 double* ResultArray= new double[NN];
 double* XArray=new double[NN];
 double* MedArray=new double[Flen];

 //заполняем массив значений Х точками текущей кривой
 for(int i=0;i<NN;++i)
  XArray[i]=Chart1->Series[IndexUpDown->Position-1]->
                           XValues->Value[i];

 double Start=2*Chart1->Series[IndexUpDown->Position-1]->
                                YValues->Value[0];
 double End=2*Chart1->Series[IndexUpDown->Position-1]->
                                YValues->Value[NN-1];

 int k=0;

 //заполняем временный массив значениями Y точками текущей кривой
 for(int i=Flen/2;i>0;--i) //симметричное расширение влево
  TempArray[k++]=Start-Chart1->Series[IndexUpDown->Position-1]->
                                      YValues->Value[i];
 for(int i=0;i<NN;++i)
  TempArray[k++]=Chart1->Series[IndexUpDown->Position-1]->
                                YValues->Value[i];
 for(int i=NN-1;i>=NN-Flen/2;--i)//симметричное расширение вправо
  TempArray[k++]=End-Chart1->Series[IndexUpDown->Position-1]->
                                YValues->Value[i];

 //собственно фильтрация
 for(int i=Flen/2;i<NN+Flen/2;++i)
  {
   for(int j=-Flen/2;j<=Flen/2;++j)
    MedArray[j+Flen/2]=TempArray[i+j];
   ::sort(MedArray,MedArray+Flen);
   //Это то, что я написал когда-то. Уже не помню, почему так.
   //Но это работает!!!!!!!!!!
   ResultArray[i-Flen/2]=(MedArray[Flen/2]+MedArray[Flen/2-1])/2;
   //А эта строчка - классический медианный фильтр.
   //И это не работает, так как хотелось бы. ???? Sorry
   //ResultArray[i-Flen/2]=MedArray[Flen/2];
  }


 //дальше вывод и удаление временных массивов
 AddFastLine();

 for(int i=0;i<NN;++i)
  Chart1->Series[Chart1->SeriesCount()-1]->
          AddXY(XArray[i],ResultArray[i],"",clBlue);

 SwitchOnCurve(PlotForm2D_WL->Chart1->SeriesCount()-1);

 delete [] TempArray;
 delete [] ResultArray;
 delete [] XArray;
 delete [] MedArray;

 if(PlotForm2D_WL->Visible)
  PlotForm2D_WL->Visible = false;
 PlotForm2D_WL->Show();

}
//---------------------------------------------------------------------------



"Sol pencereye" gelince - sorun değil, tatlım. Ama şimdilik, sanırım bunlar ayrıntılar.

Bir kez daha özür dilerim.

 
Kuzey Rüzgarına
...Ancak, bu bilimsel çalışmayı almakla ciddi olarak ilgileniyorsanız, bize yazın (info@disserr.ru), mümkünse talep edilen çalışmayı arşivden teslim edeceğiz...


Belki bu iş hakkında bazı haberler vardır?
 
Северный Ветер
...Ancak, bu bilimsel çalışmayı almakla ciddi olarak ilgileniyorsanız, bize yazın (info@disserr.ru), mümkünse talep edilen çalışmayı arşivden teslim edeceğiz...


Belki bu iş hakkında bazı haberler vardır?

Yanıtlarını gönderdikten sonra başka bir adım atmadım.
sadece tez materyalini nasıl bulabileceğinizi gösterdim.
Malzemenin ödenebileceği konusunda uyarıyorum.
 
2 André69

MatLab ile ağır mevzi savaşları yapıyorum.
Başlangıç olarak, fiyat serisinin ve gösterge değer serisinin dalgacık açılımlarına bakmaya karar verdim. DWT için herhangi bir sürprize rastlamadım, her şey az çok net.
CWT için göstergenin ayrıştırılması da oldukça anlaşılır bir yapıya sahipti. Ancak fiyat serisi şu resmi verdi:


Bu resmin yapısı, genel olarak konuşursak, örneğin Andre69'un 28.06.07 20:43 sayfa 141'deki gönderisindeki resimden önemli ölçüde farklıdır. Nedenini anlamak istiyorum.
Öte yandan, çok düzenli bir yapısı var. Niye ya ?
Bu analiz 1024 numunelik bir seri için gerçekleştirilmiştir.
Ölçek ayarları: Min=1, Adım=1, Maks=512. DMeyer dalgacık

PS Bu arada, bahsedilen yazı, dalgacıklarla ilgili hiç bitmeyen serinin sonuncusuydu. :-)
Devam filmi hakkında bilgi almak istiyorum. Meli?
 
Yurixx'e
Bu resmin yapısı, genel olarak konuşursak, örneğin Andre69'un 28.06.07 20:43 sayfa Andre69 resimden önemli ölçüde farklıdır. Nedenini anlamak istiyorum.
Öte yandan, çok düzenli bir yapısı var. Niye ya ?


Yura, böyle düzenli bir yapı, doğası gereği, incelenen VR'nin uçlarında kaçınılmaz olarak ortaya çıkan kenar etkilerine sahiptir. Bu etkilerden kaçınılamaz. Ancak çözülmekte olan problemin koşulu izin veriyorsa, VR'nin her iki ucunda serinin birkaç üyesi bırakılabilir (üye sayısı örnekleme penceresinin genişliğine eşittir), bu da hesaplamalarda yer alacaktır, ancak görselleştirmede kullanılmayacaktır. Bu işlemden sonra resim yeterli ve izotropik hale gelecektir.
 

Ancak çözülmekte olan problemin koşulu izin veriyorsa, VR'nin her iki ucunda, hesaplamalarda yer alacak ancak görselleştirmede kullanılmayacak olan serinin birkaç üyesi bırakılabilir. Bu işlemden sonra resim yeterli ve izotropik hale gelecektir.


Açıklama için teşekkürler Sergey. Sadece yazdıklarınızı nasıl yapacağınızı bulmak için kalır.
Wavelet Toolbox'ı anlayınca, bir şekilde orada böyle fırsatlar bulamadım. Bir şey mi eksik yoksa sadece elle mi yapmak mümkün?
 
Bu etkiyi şu koşulu yerine getirerek en aza indirebilirsiniz: n/N<<1 , burada n pencere boyutudur (sizin durumunuzda anladığım kadarıyla n = Max ), N BP üyelerinin sayısıdır (1024). 0,01<<1 varsayarsak, mevcut seri için Maks <10'a sahibiz.
Bu durumda, sunulan sonuçlar doğru görünecektir.
Neden: