ZigZag göstergesiyle ilgili sorun - sayfa 3

 
FMIC :


Daha önceki bir gönderide açıklandığı gibi, ZigZag puanları almak için sadece Yüksek ve Düşük tamponu kullanamazsınız, çünkü bunlar aynı zamanda yeniden boyanmış noktalar da içerir (benimkinde camgöbeği ve pembe noktalar). Standart ZigZag'da da bu şekildedir, ancak onları görmezsiniz. Bu yüzden göstergem onları daha iyi anlayabilmeniz için gösteriyor.

YALNIZCA ZigZag noktalarını filtrelemek için Yüksek ve Düşük arabelleklerini HEM Düşük ve Yüksekleri tutan ilkiyle karşılaştırmanız gerekir.

Dikkat! Yüksek Nokta mı Düşük Nokta mı olduğuna karar vermek için ilk tamponu (Mod 0) diğer 2 tamponla karşılaştırmanız gerekecektir (örneğin, hem Tampon 1 hem de Tampon 3 aynı değere sahipse, o zaman bir Düşük ZigZag'dır). noktasıdır ve hem Tampon 1 hem de Tampon 2 aynıysa, bu bir Yüksek puandır).

İsterseniz dosyanızı bir gönderiye ekleyin, nasıl doğru kullanılacağını görebilmeniz için düzelteceğim (ATTACH, uzun gönderi olmaması için SRC kullanmayın).


Merhaba FMIC,

Açıklamanız ve yardımınız için teşekkürler. Henüz yüksek ve düşük değerleri almayı başaramadım. Sorun şu ki (normalde) yeniden boyanıyor ve tarihi yüksek ve düşük bulamıyorum. Ayrıca orijinal zikzak göstergesinde mod 0 ve mod 1 veya mod 0 ve mod 2 kullanıyorum ancak tüm sonuçlar zaten her iki değere de sahip. Demek istediğim, zh (mod 1) veya zl (mod 2) değerleri olan ancak zz (mod 0) içeren tek bir satır yok. Bu yüzden bu yöntemi kullanmayı başaramadım.

Ayrıca iCustom() fonksiyonunun indeksini kullandım fakat başarılı olamadım. Çok basit görünüyor ama üzerinde 1 günden fazla çalışıyorum ama bir çözüm bulamadım.

Lütfen kodumu ekte bulun (sürüm 5). Herhangi bir yardım çok takdir edilmektedir.

Dosyalar:
 

Biraz daha test yapıyorum ve ayrıca görsel test yapıyorum. Yeniden boyamayı önlemek için iCustom dizinini 100 kene geri koydum ama öyle. Sorun şu ki, zikzak göstergesi çağrıldığında gerçek verilere bakıyor; 100 tik öncesi, 10 tik öncesi veya 1000 tik öncesi herhangi bir etkisi yoktur. Bu yüzden indeksi 1 olarak kullanmak daha iyidir.

Anladığım kadarıyla dizileri kontrol eden ve verileri ortadan kaldırarak yüksek ve alçak değerleri düzelten başka bir döngü gerçekleştirmem gerekiyor; örneğin, iki ardışık yüksek varsa, en düşük olanı ortadan kaldıracak ve düşükler için tersini yapacaktır. İlk düşüncem yine dizide 100 gün geriye gitmek ve ardışık yüksekler olup olmadığını kontrol etmek. Algoritmayı henüz bitirmedim.

Daha iyi bir fikrin var mı? Geçmiş verilerdeki iniş ve çıkışları belirlemek için tamamen farklı bir yaklaşım kullanmak dahil mi?

 
aed71 :

Biraz daha test yapıyorum ve ayrıca görsel test yapıyorum. Yeniden boyamayı önlemek için iCustom indeksini 100 kene geri koydum ama öyle. Sorun şu ki, zikzak göstergesi çağrıldığında gerçek verilere bakıyor; 100 tik öncesi, 10 tik öncesi veya 1000 tik öncesi herhangi bir etkisi yoktur. Bu yüzden indeksi 1 olarak kullanmak daha iyidir.

Anladığım kadarıyla dizileri kontrol eden ve verileri ortadan kaldırarak yüksek ve alçak değerleri düzelten başka bir döngü gerçekleştirmem gerekiyor; örneğin, iki ardışık yüksek varsa, en düşük olanı ortadan kaldıracak ve düşükler için tersini yapacaktır. İlk düşüncem yine dizide 100 gün geriye gitmek ve ardışık yüksekler olup olmadığını kontrol etmek. Algoritmayı henüz bitirmedim.

Daha iyi bir fikrin var mı? Geçmiş verilerdeki iniş ve çıkışları belirlemek için tamamen farklı bir yaklaşım kullanmak dahil mi?


merhaba aed71,

İşten yeni döndüm ve yatma vakti geldi. Sabah kodunuza daha detaylı bir şekilde bakıp size doğru bir çözüm sunacağım.

Bununla birlikte, kısa bir not olarak, 1000 veya 100 bar geriye bakmanız gerekmez, sadece "derinlik" ve "geri adım" parametrelerini düşünmeye yetecek kadar.

Ayrıca, yalnızca verileri topladığınız ve analiz ettiğiniz için, onay aralıklarını kullanan bir EA yerine tüm geçmiş verileri üzerinde anında ilerlemek için bir Komut Dosyası düşünün. Bu şekilde yeniden boyama konusunda endişelenmenize gerek kalmayacak.

Yarın size daha eksiksiz bir açıklama yapacağım.

Saygılarımla,
FMIC

 

Merhaba FMIC,

Dünden beri yanlış iniş ve çıkışların nasıl ortadan kaldırılacağı algoritması üzerinde çalışıyorum ve bunun için ekteki sürümü kodladım. Bir şekilde yanlış sinyalleri ortadan kaldırır, ancak bazen orijinalini yapmaması gereken yerde siler.

Kodun arkasındaki ilke şudur:

Yüksek varsa; bilinen en düşük seviyeye geri döner ve adım adım mevcut yüksek seviyenin bir öncekinden daha yüksek olup olmadığını kontrol eder , ardından önceki yüksek değeri siler.

Aynısı düşük kısım için de geçerlidir. Kodlara bazı açıklamalar koydum.

En azından artık eşzamanlı yüksek veya düşük yok :-)

Şimdi orijinal yüksek/düşük noktaları sildiği hatayı bulmam gerekiyor.

Koduma bir göz atabilirseniz, hatayı kısa sürede anlayabilirsiniz. Çok fazla konsantreyim, basit hataları bile göremiyorum...

Yardımlarınız için tekrar teşekkürler.

Dosyalar:
 

Günaydın "aed71",

En son dosyanıza henüz bakmadım, ancak belirli bir zaman dilimini gözden geçirmek ve ZigZag Yüksek ve Düşüklerini bir CSV dosyasına çıkarmak için Komut Dosyam (Gösterge değil, EA değil) burada.

Sadece Komut Dosyasını bir grafiğe ekleyin ve saniyeler içinde çalışacaktır. Ardından, "MQL4\Files" klasöründe oluşturulan CSV dosyasını gözden geçirmeniz yeterlidir. 2013 Yılı için EURUSD Günlük Tablosunda bir örnek çalıştırma ekledim.

Bu bir Komut Dosyası olduğundan, yeniden boyama konusunda endişelenmenize gerek yok.

Saygılarımla,
FMIC

not! Bundan sonra size en son dosyayı inceleyeceğim ve yorumlarımı size ileteceğim.

EDIT: En son kodunuza baktım ve her yerde. Koduma bir göz atın ve Yüksekler ve Düşükler için testin çok daha basit olduğunu görün. Kodunuzdaki tüm bu karışıklığa gerek yok. İşte bir alıntı (ZIP dosyasındaki tam kod):

 if ( dblZigZagPoint > 0 )   // Test if a ZigZag Point is found
{
   intZZCount++;   // Increment ZigZag Counter

   // Test if it is a High, Low or Unknown
   string strZZType = strZZUnknown;
   if ( dblZigZagHigh > 0 ) strZZType = strZZHigh;
   else   if ( dblZigZagLow > 0 ) strZZType = strZZLow;
               
   // Output the ZigZag Point Data to CSV File
   FileWrite( intCSVFileHandle, intZZCount, strZZType, DoubleToString ( dblZigZagPoint, intDigits ), Time [ intBarShift ] );
}
Dosyalar:
 
FMIC :

Günaydın "aed71",

En son dosyanıza henüz bakmadım, ancak belirli bir zaman dilimini gözden geçirmek ve ZigZag Yüksek ve Düşüklerini bir CSV dosyasına çıkarmak için Komut Dosyam (Gösterge değil, EA değil) burada.

Sadece Komut Dosyasını bir grafiğe ekleyin ve saniyeler içinde çalışacaktır. Ardından, "MQL4\Files" klasöründe oluşturulan CSV dosyasını gözden geçirmeniz yeterlidir. 2013 Yılı için EURUSD Günlük Tablosunda bir örnek çalıştırma ekledim.

Bu bir Komut Dosyası olduğundan, yeniden boyama konusunda endişelenmenize gerek yok.

Saygılarımla,
FMIC

not! Bundan sonra size en son dosyayı inceleyeceğim ve yorumlarımı size ileteceğim.

EDIT: En son kodunuza baktım ve her yerde.
Koduma bir göz atın ve Yüksekler ve Düşükler için testin çok daha basit olduğunu görün.
Kodunuzdaki tüm bu karışıklığa gerek yok.


Harika iş, sorunsuz çalıştı, kod tabanına dahil edilmelidir.... Teşekkürler.

Sakıncası yoksa iki sorum var:

1-) İndirdiğim ve grafikte gördüğüm verilerim 4 hane gösteriyordu fakat scriptin çıktısı 5 hane idi. Nasıl mümkün olabilir? Sonunda sıfır olmayan 5 rakamı kastediyorum.

Sayı,Tür,Fiyat,TarihSaat

1,H,1.34962,2013.11.04 00:30:00

2,L,1.34861,2013.11.04 02:15:00

3,H,1.35015,2013.11.04 03:00:00

4,L,1.34417,2013.11.04 05:15:00

5,H,1.35127,2013.11.04 11:15:00

6,L,1.34910,2013.11.04 15:45:00

7,H,1.35236,2013.11.04 18:15:00

8,L,1.35045,2013.11.04 19:45:00

9,H,1.35203,2013.11.04 22:45:00

2-) Senaryo çok faydalı ama bu benim projemin tarihsel verileri analiz ettiğim ilk kısmıydı. Daha sonra kodu uzmanıma dahil etmeyi ve bir şekilde yakın geçmiş arasındaki korelasyonu bulmayı ve buna göre mevcut değişkenlerin daha fazla optimizasyonuna karar vermeyi planlıyordum. Başka bir deyişle, uzmanda da benzer bir şey çalıştırmam gerekiyor. Peki bunu uzmana dönüştürmek nasıl mümkün olabilir?

Yardımın için tekrar teşekkürler :-)


 
aed71 :


Harika iş, sorunsuz çalıştı, kod tabanına dahil edilmelidir.... Teşekkürler.

Sakıncası yoksa iki sorum var:

1-) İndirdiğim ve grafikte gördüğüm verilerim 4 hane gösteriyordu fakat scriptin çıktısı 5 hane idi. Nasıl mümkün olabilir? Sonunda sıfır olmayan 5 rakamı kastediyorum.

2-) Senaryo çok faydalı ama bu benim projemin tarihsel verileri analiz ettiğim ilk kısmıydı. Daha sonra kodu uzmanıma dahil etmeyi ve bir şekilde yakın geçmiş arasındaki korelasyonu bulmayı ve buna göre mevcut değişkenlerin daha fazla optimizasyonuna karar vermeyi planlıyordum. Başka bir deyişle, uzmanda da benzer bir şey çalıştırmam gerekiyor. Peki bunu uzmana dönüştürmek nasıl mümkün olabilir?

Yardımın için tekrar teşekkürler :-)

  1. 5 basamaklı bir aracınız varsa, verilerde 5 basamak olacaktır. Birçok Göstergedeki sorun, "IndicatorDigits()" işlevini kullanmamalarıdır, bu nedenle, aracı tarafından sağlananlardan bağımsız olarak yalnızca varsayılan basamak sayısını görüntüler. ZigZagZug koduma bakarsanız, sorunu düzeltmek için bunu açıkça ayarladığımı göreceksiniz, MetaQuotes'un kendi kodunda yapamadığı bir şey:

     // Set Number of Digits (Precision)
       IndicatorDigits ( Digits );

  2. Kodu bir uzmanda kullanmaya gelince, bu gerçekten strateji ve yeniden boyamaların onu nasıl etkileyeceği gibi birçok şeye bağlıdır. Bazı stratejiler yeniden boyamalardan etkilenmez, bazıları ise onlara karşı çok hassastır. "Bilinmeyen" bir strateji için çok fazla tavsiyede bulunamayacağım. Bu durumda, bu konuda spesifik olmanız gerekir. Ama unutmayın, 1000 bar geriye bakmanıza gerek yok. ZigZag'ın nasıl çalıştığını ve yüksek ve düşük kesintileri nasıl kullandığını ve nasıl geriye doğru arama yaptığını öğrenirseniz, bazen geriye yalnızca (Derinlik + Geri Adım) çubuk mesafesine bakmanız gerekir - stratejiye bağlı olarak bu biraz daha fazla olabilir veya daha da az, ama asla kullandığınız 1000 veya 100 değil.

 

Rakamlarla ilgili bilgi için teşekkürler. Başımı ağrıtıyor, detaylarını okuyup anlamam lazım...

Ne elde etmeye çalıştığımı daha fazla detaylandırmama izin verin. Son 10 yılda test ettiğim (şu anda) oldukça karlı bir uzmanım var. Ancak uzman her durumda iyi davranmıyor, çok kötü değil ama bazı yıllarda/aylarda umut verici değil. Karlılığını etkileyen önceden optimize edilmiş bazı değişkenlere sahiptir. Değişkenleri kendi kendine optimize etmek için yakın tarih ile bugün arasında bir korelasyon bulmaya hazırım.

Yani ihtiyacım olan şey, tarihsel verilerin periyotlarını ve genliğini hesaplamak için tarihsel verilerdeki tepeleri ve en düşükleri bulmak. Yakın geçmişe ait veriler ile uzmanın mevcut karlı değişkenleri arasında manuel olarak bir korelasyon bulmaya çalışacağım. Bir şekilde bulabilirsem, uzmanıma benzer bir kod ekleyeceğim, her gün son bir haftanın istatistiksel verilerini kontrol edecek ve korelasyonlu sabitlere göre uzman değişkenlerini kendi kendine optimize edecek.

Yani strateji bu. Fourier, Hurts Cycles, Goertzel, MESA vb. dahil olmak üzere tarihsel verileri analiz etmek için birçok başka konu üzerinde çalıştım ancak mevcut veriler üzerinde çalışan bir yöntem kullanmanın çok daha iyi olacağı sonucuna vardım.

Yani gerçek zamanlı bir yüksek-düşük analizine ihtiyacım yok, 15M veri setinde, yarım günlük verileri kaybetmeye hazırım (neredeyse 45 tik). Büyük ihtimalle son 5 güne bakacağım ve 4.5 günlük değişim yeni optimize edilmiş değerleri bulmak için yeterli sanırım.

Kodumla ilgili olarak, sorunun şu olduğunu düşünüyorum; önceki yüksekleri kontrol ederken çok geriye gidiyor, yerel en düşük değerde durmalıdır. Aracın uzman kısmına ihtiyacım olduğu için hala üzerinde çalışıyorum.

 
aed71 :

Rakamlarla ilgili bilgi için teşekkürler. Başımı ağrıtıyor, detaylarını okuyup anlamam lazım...

Ne elde etmeye çalıştığımı daha fazla detaylandırmama izin verin. Son 10 yılda test ettiğim (şu anda) oldukça karlı bir uzmanım var. Ancak uzman her durumda iyi davranmıyor, çok kötü değil ama bazı yıllarda/aylarda umut verici değil. Karlılığını etkileyen önceden optimize edilmiş bazı değişkenlere sahiptir. Değişkenleri kendi kendine optimize etmek için yakın tarih ile bugün arasında bir korelasyon bulmaya hazırım.

Yani ihtiyacım olan şey, tarihsel verilerin periyotlarını ve genliğini hesaplamak için tarihsel verilerdeki tepeleri ve en düşükleri bulmak. Yakın geçmişe ait veriler ile uzmanın mevcut karlı değişkenleri arasında manuel olarak bir korelasyon bulmaya çalışacağım. Bir şekilde bulabilirsem, uzmanıma benzer bir kod ekleyeceğim, her gün son bir haftanın istatistiksel verilerini kontrol edecek ve korelasyonlu sabitlere göre uzman değişkenlerini kendi kendine optimize edecek.

Yani strateji bu. Fourier, Hurts Cycles, Goertzel, MESA vb. dahil olmak üzere tarihsel verileri analiz etmek için birçok başka konu üzerinde çalıştım ancak mevcut veriler üzerinde çalışan bir yöntem kullanmanın çok daha iyi olacağı sonucuna vardım.

Yani gerçek zamanlı bir yüksek-düşük analizine ihtiyacım yok, 15M veri setinde, yarım günlük verileri (neredeyse 45 tik) kaybetmeye hazırım. Büyük ihtimalle son 5 güne bakacağım ve 4.5 günlük değişim yeni optimize edilmiş değerleri bulmak için yeterli sanırım.

Kodumla ilgili olarak, sorunun şu olduğunu düşünüyorum; önceki yüksekleri kontrol ederken çok geriye gidiyor, yerel en düşük değerde durmalıdır. Aracın uzman kısmına ihtiyacım olduğu için hala üzerinde çalışıyorum.


Açıkladığınız şey, size tavsiyede bulunmak için EA'nın doğasını anlamanıza gerçekten yardımcı olmuyor.

Dilerseniz bana ayrıntıları içeren bir Özel Mesaj gönderin, EA'nıza bir göz atıp bunun için gerekli kodu önerebilirim.

Alternatif olarak, önerebileceğim tek şey, onu elinizden geldiğince uygulamaya çalışmanız ve çözmeniz gereken belirli bir sorununuz olduğunda, foruma geri dönün ve ona özel bir sorgu gönderin ve kullanıcıların yardım edip edemeyeceğini görün.

 

Tamam Teşekkürler FMIC.

Aslında benim sorunum forumda paylaştığım uzmanla ilgiliydi. Senaryonuz iyi çalışıyor, bunun için çok teşekkürler ama temel olarak, gerçek zamanlı modda da çalışabilen uzman şeklinde ihtiyacım var.

Neden: