ZigZag göstergesiyle ilgili sorun - sayfa 4

 
aed71 :

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.

Bu konudaki orijinal sorgularınız şunlardı:

  1. "iCustom" işlevini kullanarak ZigZag göstergesinden verilere nasıl düzgün şekilde erişilir?
  2. İstatistiksel analiz için ZigZag Yüksek ve Düşük puanları nasıl toplanır ve işlenir?

Komut dosyam size örnek kod ve her iki sorguyu da yanıtlayacak bilgiyi sağladı, böylece artık bu bilgiyi geliştirmek istediğiniz EA gibi diğer kullanımlara uygulayabilirsiniz. Tek yapmanız gereken iCustom() kullanımı için kodumu kullanmak ve ZigZag Yüksek ve Düşük noktalarının testini yapmak ve bunu EA kodunuza uygulamak.

Ancak, daha sonra bahsettiğiniz diğer sorgu, halihazırda başka bir EA'da çalışmakta olduğunuz bir stratejiyi optimize etme ihtiyaçlarına özel bir EA'da ZigZag verilerinin nasıl kullanılacağına dair burada yeterince ayrıntılı olarak ortaya konmamış veya açıklanmamıştır. bu iş parçacığı. Yani, özünde, ne istediğinizi bilmediğim için size tavsiyede bulunamam veya yardım edemem.

Kod tabanındaki ZigZagZug göstergeme eşlik eden makaleyi okursanız, ZigZag'ı stratejilerde ve EA'larda kullanmanın sürekli yeniden boyama nedeniyle kolay olmadığını ve nasıl çalıştığının ve muhtemelen nasıl kullanılabileceğinin dikkatli bir şekilde anlaşılmasını gerektirdiğini göreceksiniz. farklı stratejiler ve EA'lar.

Başka bir deyişle, ZigZag verileri ile bir EA stratejisi arasındaki ilişki karmaşıktır ve iyi tanımlanması gerekir. Bu nedenle, mevcut stratejiniz veya nasıl optimize edileceği hakkında hiçbir şey bilmeden size daha fazla yardım veya tavsiye sunamam.

Kamuya daha açık olmak istemeyeceğiniz anlaşılabilir olduğundan, size bunu özel olarak ve ücretsiz olarak yapma şansını bile teklif ettim. Ben bir Yazılım Geliştiricisiyim ve normalde bu hizmetler için ücret alırım.

Size zaten sunduklarımdan başka, çözmek istediğiniz sorunun doğasını anlamadan daha fazlasını yapamam veya size daha fazla tavsiyede bulunamam.

 

Merhaba,

Kodumu düzeltmeyi başardım. Döngülerin mantığında bir hata olmuş, şimdi test ettiğim kadarıyla sorunsuz çalışıyor.

İlgilenenler kullanabilir. Uzman olarak kullanılmak üzere tasarlanmıştır ve metaquotes standart ZigZag göstergesini kullanır.

Temel olarak yaptığı şey, zikzak göstergesindeki gerçek yüksek ve düşük noktaları bulur. Periyot ve genlik analizi için de tarihsel verilerdeki düşük ve yüksek noktaları bulmak için kullanılabilir.

Gerçek zamanlı değil! Son yüksek ve düşük değerlere geri döner, bu nedenle son trend uzunluğuna bağlı olarak geri dönüp değerleri düzeltebilir. Strateji test cihazında hızlı bir testten önce kullanmayın.

FMIC, çabalarınız ve yardımlarınız için teşekkürler.

Dosyalar:
 

merhaba aed71,

Kodunuzda hala birkaç mantık hatası var.

  1. Sözde "tik döngüsü", aslında bir "Yeni Çubuk Koşuludur", çünkü yeni bir çubuk tespit etmek için "Zaman[0]"ı zamanda bir değişiklik için test ediyorsunuz. Kodu yanlış göstermemek için yorumu değiştirmenizi öneririm.
  2. Koşulları test etmeden önce diziye değerler atıyorsunuz ve ardından tekrar silmek için bazı değişkenleri ihtiyaç duymadan defalarca test ediyorsunuz. Yalnızca kodunuzu yavaşlatır ve mantığı izlemeyi de zorlaştırır.
  3. Yeniden boyama noktalarını bulma yönteminiz yanlış ve hiç de sağlam değil. Yeniden boyama noktalarını doğru bir şekilde bulmak için ZigZag'ın nasıl çalıştığını gerçekten incelemelisiniz. Mantığını anlamak için kodunu veya ZigZagZug kodunu (hangisini takip etmeniz daha kolaysa) okuyun.
  4. İhtiyaç duymadan dizide boş değerler saklıyorsunuz. Kullanılabilir ZigZag noktası olmadığında bile neden sayacı artırıp diziye eklemeye devam ediyorsunuz? İhtiyaç duymadan sadece değerli kaynakları (RAM ve CPU döngüleri) boşa harcıyorsunuz. Kod yürütmenizi yavaşlatacaktır. Bunun yerine, önceden belirli bir boyut gereksinimini garanti edemediğiniz için statik yerine dinamik olarak büyütülmüş dizileri kullanın.
  5. Dalga periyotları veya frekansları gibi verileri daha sonra analiz etmek için ayrıca Zaman indeksini ve/veya Çubuk Kaydırma indeksini de takip etmeniz gerekecektir.

Saygılarımla,
FMIC

 
FMIC :

merhaba aed71,

Kodunuzda hala birkaç mantık hatası var.

  1. Sözde "tik döngüsü", aslında bir "Yeni Çubuk Koşuludur", çünkü yeni bir çubuk tespit etmek için "Zaman[0]"ı zamanda bir değişiklik için test ediyorsunuz. Kodu yanlış göstermemek için yorumu değiştirmenizi öneririm.
  2. Koşulları test etmeden önce diziye değerler atıyorsunuz ve ardından tekrar silmek için bazı değişkenleri ihtiyaç duymadan defalarca test ediyorsunuz. Yalnızca kodunuzu yavaşlatır ve mantığı izlemeyi de zorlaştırır.
  3. Yeniden boyama noktalarını bulma yönteminiz yanlış ve hiç de sağlam değil. Yeniden boyama noktalarını doğru bir şekilde bulmak için ZigZag'ın nasıl çalıştığını gerçekten incelemelisiniz. Mantığını anlamak için kodunu veya ZigZagZug kodunu (hangisini takip etmeniz daha kolaysa) okuyun.
  4. İhtiyaç duymadan dizide boş değerler saklıyorsunuz. Kullanılabilir ZigZag noktası olmadığında bile neden sayacı artırıp diziye eklemeye devam ediyorsunuz? İhtiyaç duymadan sadece değerli kaynakları (RAM ve CPU döngüleri) boşa harcıyorsunuz. Kod yürütmenizi yavaşlatacaktır. Bunun yerine, önceden belirli bir boyut gereksinimini garanti edemediğiniz için statik yerine dinamik olarak büyütülmüş dizileri kullanın.
  5. Dalga periyotları veya frekansları gibi verileri daha sonra analiz etmek için ayrıca Zaman indeksini ve/veya Çubuk Kaydırma indeksini de takip etmeniz gerekecektir.

Saygılarımla,
FMIC

Yorumlarınız için tekrar teşekkürler;

Ben iyi bir programcı değilim, bu yüzden kodun kendisi mükemmel olmayabilir :-) Ancak mantığımı açıklamaya çalışayım;

1-) Yorum kısmı "her yeni çubuk" olarak değiştirilebilir..

2-) 4-) 5-) Büyük dizileri kullanmanın mantığı şu ki, daha sonra yeni bir işlemle periyodu, genliği vb. Bulmak için yüksekler arasındaki veya yüksek ve düşük arasındaki sıfır değerli çubukları sayacağım. diziyi kullanmadan önce başlatmak ve zaman indeksi vb. ile uğraşmam gerekmiyor. Şu anda projem için büyük bir sorun olmayan sadece daha fazla arabellek.

3-) Birkaç kez zikzak ve zikzak çizdim. zikzak içinde, sonunda gerçek yüksek ve alçaklarınız olmasına rağmen, bu değerleri bir diziye koyarsanız, düşükler veya yüksekler arasında olduğunu göreceksiniz. Onlardan ve mod0 ve mod1/mod2 kombinasyonunu kullandığınız hava koşullarından kaçınamazsınız. Her zaman inişler ve çıkışlar arasında vardır. Zigzagzug'da bu noktaları açıkça görebilirsiniz. Bunun yanında mod0'ın sıfır olduğu, ancak mod1 veya mod2'nin sıfırdan büyük olduğu durumlar olduğunu görüyorum, bunlar yanlış noktalar. Ben de bu noktalardan kaçınmak için fazladan kod koymaya karar verdim.

Bahsettiğim gibi, bu zikzak noktaları bulmak için en iyi kod olmayabilir, ancak testlerimde kendi kodu doğru çalışıyor. Birkaç kez test ettim. Kullanmak isteyenlerin daha önce denemelerini her zaman tavsiye ederim.

test ettin mi Doğru puanı vermiyor mu? Sağlam değil veya yanlış dediğinizde, testlerinizin başarısız olduğunu varsayıyorum, değil mi?

Teşekkürler.

 
aed71 :

Yorumlarınız için tekrar teşekkürler;

Ben iyi bir programcı değilim, bu yüzden kodun kendisi mükemmel olmayabilir :-) Ancak mantığımı açıklamaya çalışayım;

1-) Yorum kısmı "her yeni çubuk" olarak değiştirilebilir..

2-) 4-) 5-) Büyük dizileri kullanmanın mantığı şu ki, daha sonra yeni bir işlemle periyodu, genliği vb. Bulmak için yüksekler arasındaki veya yüksek ve düşük arasındaki sıfır değerli çubukları sayacağım. diziyi kullanmadan önce başlatmak ve zaman indeksi vb. ile uğraşmam gerekmiyor. Şu anda projem için büyük bir sorun olmayan sadece daha fazla arabellek.

3-) Birkaç kez zikzak ve zikzak çizdim. zikzak içinde, sonunda gerçek yüksek ve alçaklarınız olmasına rağmen, bu değerleri bir diziye koyarsanız, düşükler veya yüksekler arasında olduğunu göreceksiniz. Onlardan ve mod0 ve mod1/mod2 kombinasyonunu kullandığınız hava koşullarından kaçınamazsınız. Her zaman inişler ve çıkışlar arasında vardır. Zigzagzug'da bu noktaları açıkça görebilirsiniz. Bunun yanında mod0'ın sıfır olduğu, ancak mod1 veya mod2'nin sıfırdan büyük olduğu durumlar olduğunu görüyorum, bunlar yanlış noktalar. Ben de bu noktalardan kaçınmak için fazladan kod koymaya karar verdim.

Bahsettiğim gibi, bu zikzak noktaları bulmak için en iyi kod olmayabilir, ancak testlerimde kendi kodu doğru çalışıyor. Birkaç kez test ettim. Kullanmak isteyenlerin daha önce denemelerini her zaman tavsiye ederim.

test ettin mi Doğru puanı vermiyor mu? Sağlam değil veya yanlış dediğinizde, testlerinizin başarısız olduğunu varsayıyorum, değil mi?

Teşekkürler.


Asıl noktayı kaçırıyorsun! Sağladığım kod, Yüksek/Düşük ZigZag noktalarını nasıl doğru bir şekilde tanımlayacağınızı gösterir; yine de onu görmezden gelmeyi ve kendi yönteminizle yapmayı seçiyorsunuz, bu da kodun anlaşılmasını zorlaştırıyor, yavaşlatıyor ve gereğinden fazla kaynak kullanıyor. Niye ya?
 
Fernando Carreiro # :

iCustom örneğinizde ZigZag'ı yanlış kullanıyorsunuz. MetQuotes'un Standart ZigZag'ında ÜÇ (iki değil) Tampon bulunur (iCustom'da Modlar veya Hat Dizini)

  1. Mod = 0: Hem Yüksek hem de Düşük ZigZag Noktalarını tutun.
  2. Mod = 1: Yüksek Puanlar, ancak yalnızca ZigZag noktaları olması gerekmez (yeniden boyama noktalarını da barındırdığı için).
  3. Mod = 2: Düşük Puanlar, ancak yalnızca ZigZag noktaları olması gerekmez (yeniden boyama noktalarını da barındırdığı için).

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, o zaman bu bir Yüksek puandır).

Ayrıca, bir ZigZag'ın nasıl çalıştığını ve nasıl yeniden boyandığını daha iyi anlamak için ZigZagZug göstergemle oynamanızı öneririm. Ancak, kodunuzda daha hızlı olduğu için MetaQuotes ZigZag'ı kullanın. Sürümüm, ekstra özellikler nedeniyle daha fazla işlem yapıyor ve bu nedenle daha yavaş.

not! Tampon 1 (Mod = 0) 0.0 değerine sahipse, ancak diğer tamponlar sıfırdan farklı değerlere sahipse, bunlar daha eski yeniden boyama noktalarıdır ve ZigZag Noktaları DEĞİLDİR.

Kodunuzda Düşük olarak Mod 0 Tamponunu ve Yüksek olarak Mod 1 Tamponunu kullanıyorsunuz. Bu tamamen yanlış.

bunun bana ne kadar yardımcı olduğuna inanamayacaksınız çok teşekkürler
Neden: