ZigZag göstergesiyle ilgili sorun - sayfa 2

 
Gösterge değerlerini belirtmeyi unuttum, minimum bir eşleşiyor ama maksimum eşleşmiyor 2. grafikte göstermeye çalıştığım gibi...
 
aed71 :

Aşağıdaki grafik minimum değeri gösterir (hem imleç noktası değeri hem de veri penceresi değeri ve çıktı aynıdır)

Aşağıdaki 6 tik sonra grafiğin en yüksek kısmıdır. Hem veri penceresi hem de imleç noktaları aynıdır ancak çıktı aynı değildir ve ayrıca hem düşük hem de yüksek değer döndürür.

2.

iCustom()'un göstergeyi doğru yüklediğini kontrol ettim. Düşük değer aynıdır ancak yüksek değer değildir. ZigZag göstergesi ile ilgili olabilir mi?

Neyi yanlış yapıyorum gerçekten anlayamadım.


ZigZag göstergenizden yalnızca bir değer geldiğini görüyorum

bu değer nedir??

 
aed71 :

Aşağıdaki grafik minimum değeri gösterir (hem imleç noktası değeri hem de veri penceresi değeri ve çıktı aynıdır)

Aşağıdaki 6 tik sonra grafiğin en yüksek kısmıdır. Hem veri penceresi hem de imleç noktaları aynıdır ancak çıktı aynı değildir ve ayrıca hem düşük hem de yüksek değer döndürür.

2.

iCustom()'un göstergeyi doğru yüklediğini kontrol ettim. Düşük değer aynıdır ancak yüksek değer değildir. ZigZag göstergesi ile ilgili olabilir mi?

Neyi yanlış yapıyorum gerçekten anlayamadım.

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ış.

 
FMIC :

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ış.


Buraya bakın https://www.mql5.com/en/forum/149492/page2#912747 dış çubuklar eski kodlu Zigzag için bir sorundur

Sarı çizgi, zikzak görüntülemenin daha iyi bir yolunu veriyor

 
deVries :


Buraya bakın https://www.mql5.com/en/forum/149492/page2#912747 dış çubuklar eski kodlu Zigzag için bir sorundur

Sarı çizgi, zikzak görüntülemenin daha iyi bir yolunu veriyor


Dış çubukların "aed71'in" mevcut ikilemiyle hiçbir ilgisi yok. ZigZag kullanması tamamen yanlış.

Lütfen mevcut problemden sapmayın, çünkü sadece durumu karıştırırsınız.

Ayrıca bu sorunu olmayan ZigZagZug kodumun linkini de verdim.

 
FMIC :

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 değerine sahipse, ancak diğer arabelleklerin değerleri varsa, bunlar daha eski yeniden boyama noktalarıdır.


Harika, önemli ipuçları için teşekkürler! Neden işe yaramadığını şimdi anladım...

Metaquotes ZigZag'ın orijinal kodunun yalnızca 2 arabelleğe sahip olduğu için doğru olmadığını düşünüyorum. Bu yüzden birinin yüksek, diğerinin düşük olması gerektiğini düşünüyordum...

Aslında başlık da uyumsuz, geçenlerde gördüm. Biri kontrol etmeli!

Buradaki koddan bahsediyorum https://www.mql5.com/en/code/7796

 //+------------------------------------------------------------------+
//|                                        Custom Moving Average.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int ExtDepth= 12 ;
extern int ExtDeviation= 5 ;
extern int ExtBackstep= 3 ;
//---- indicator buffers
double ExtMapBuffer[];
double ExtMapBuffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers ( 2 );
//---- drawing settings
   SetIndexStyle ( 0 , DRAW_SECTION );
//---- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtMapBuffer);
   SetIndexBuffer ( 1 ,ExtMapBuffer2);
   SetIndexEmptyValue ( 0 , 0.0 );
//---- indicator short name
   IndicatorShortName ( "ZigZag(" +ExtDepth+ "," +ExtDeviation+ "," +ExtBackstep+ ")" );
//---- initialization done
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int     shift, back,lasthighpos,lastlowpos;
   double val,res;
   double curlow,curhigh,lasthigh,lastlow;

   for (shift= Bars -ExtDepth; shift>= 0 ; shift--)
     {
      val= Low [ Lowest ( NULL , 0 , MODE_LOW ,ExtDepth,shift)];
       if (val==lastlow) val= 0.0 ;
       else 
        { 
         lastlow=val; 
         if (( Low [shift]-val)>(ExtDeviation* Point )) val= 0.0 ;
         else
           {
             for (back= 1 ; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer[shift+back];
               if ((res!= 0 )&&(res>val)) ExtMapBuffer[shift+back]= 0.0 ; 
              }
           }
        } 
      ExtMapBuffer[shift]=val;
       //--- high
      val= High [ Highest ( NULL , 0 , MODE_HIGH ,ExtDepth,shift)];
       if (val==lasthigh) val= 0.0 ;
       else 
        {
         lasthigh=val;
         if ((val- High [shift])>(ExtDeviation* Point )) val= 0.0 ;
         else
           {
             for (back= 1 ; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer2[shift+back];
               if ((res!= 0 )&&(res<val)) ExtMapBuffer2[shift+back]= 0.0 ; 
              } 
           }
        }
      ExtMapBuffer2[shift]=val;
     }

   // final cutting 
   lasthigh=- 1 ; lasthighpos=- 1 ;
   lastlow=- 1 ;  lastlowpos=- 1 ;

   for (shift= Bars -ExtDepth; shift>= 0 ; shift--)
     {
      curlow=ExtMapBuffer[shift];
      curhigh=ExtMapBuffer2[shift];
       if ((curlow== 0 )&&(curhigh== 0 )) continue ;
       //---
       if (curhigh!= 0 )
        {
         if (lasthigh> 0 ) 
           {
             if (lasthigh<curhigh) ExtMapBuffer2[lasthighpos]= 0 ;
             else ExtMapBuffer2[shift]= 0 ;
           }
         //---
         if (lasthigh<curhigh || lasthigh< 0 )
           {
            lasthigh=curhigh;
            lasthighpos=shift;
           }
         lastlow=- 1 ;
        }
       //----
       if (curlow!= 0 )
        {
         if (lastlow> 0 )
           {
             if (lastlow>curlow) ExtMapBuffer[lastlowpos]= 0 ;
             else ExtMapBuffer[shift]= 0 ;
           }
         //---
         if ((curlow<lastlow)||(lastlow< 0 ))
           {
            lastlow=curlow;
            lastlowpos=shift;
           } 
         lasthigh=- 1 ;
        }
     }
  
   for (shift= Bars - 1 ; shift>= 0 ; shift--)
     {
       if (shift>= Bars -ExtDepth) ExtMapBuffer[shift]= 0.0 ;
       else
        {
         res=ExtMapBuffer2[shift];
         if (res!= 0.0 ) ExtMapBuffer[shift]=res;
        }
     }
  }
 
aed71 :


Harika, önemli ipuçları için teşekkürler! Neden işe yaramadığını şimdi anladım...

Metaquotes ZigZag'ın orijinal kodunun yalnızca 2 arabelleğe sahip olduğu için doğru olmadığını düşünüyorum. Bu yüzden birinin yüksek, diğerinin düşük olması gerektiğini düşünüyordum...

Aslında başlık da uyumsuz, geçenlerde gördüm. Biri kontrol etmeli!

Buradaki koddan bahsediyorum https://www.mql5.com/en/code/7796


O Kodu kullanmayın! Bu Antik!

Şu anda LiveUpdates aracılığıyla aktarılan kodu kullanın. Mevcut 600+ sürümünü veya en azından 509 sürümünü kullanın.

not! Dikkat! Ayrıca, iCustom'da "ZigZag.ex4" yerine Ad'da yalnızca "ZigZag" kullanın.

 
FMIC :


O Kodu kullanmayın! Bu Antik!

Şu anda LiveUpdates aracılığıyla aktarılan kodu kullanın. Mevcut 600+ sürümünü veya en azından 509 sürümünü kullanın.

not! Dikkat! Ayrıca, iCustom'da "ZigZag.ex4" yerine Ad'da yalnızca "ZigZag" kullanın.


Merhaba FMIC,

İpuçları için teşekkürler. Derlemeyi unutmamak için dosyanın sonuna ex4 ekliyordum. Ne yazık ki yeni yapım 610 ZigZag eskisiyle değiştirildi.

Zaman benim için sorun olmadığı için seninkini kullanmaya karar verdim. Burada da bazı sorunlarla karşılaşıyorum, bana yol gösterirseniz sevinirim.

Yukarıda belirtilen kodun aynısını kullandım, dosya adını sürümünüzle değiştirdim. 6,5,3 parametrelerini kullanıyorum; varsayılan ayarlarınızdan tek fark budur.

Bazı sorunlarla karşılaştığım şey:

Öncelikle gösterge, zh,zl değerlerini okumak için her tikte her seferinde yüklenir. Ve sonunda (resimde göremediğiniz) tüm yükleri "2014.02.22 09:35:09.171" gibi bir şey belirterek serbest bırakır. 2013.11.01 22:55 Özel gösterge ZigZagZug EURUSD,M15: kaldırıldı". Lütfen eklediğim günlük dosyasına bakın. Daha sonra herhangi bir bellek sorununa neden olur mu?

İkincisi, günlükte cnt sayacı cnt8'den cnt84'e atladı ki bu garip. Günlüklerde atlama yapmaz. Günlükleri doğru değerler olarak düşünmem gerektiğini düşünüyorum.

Üçüncü ve en kritik olanı, sonuç olarak olmaması gereken iki düşük bulmuştur. Şekilde gri zikzak çizgilerinin yüksek ve düşük değerlerini almak istiyorum ama log'daki tüm yüksek ve alçak değerleri yazdığımda pembe ve camgöbeği renkli noktalarınızla tamamen aynı. Ancak sadece zig zag değerlerine ihtiyacım var. Diğer arabellekleri kontrol ettim ama doğru değerleri getirmedim. Baska öneri? Yoksa klasik zikzakla mı gitmeliyim (610 inşası için?)

Teşekkürler.

ZigZagZug

 
aed71 :


Merhaba FMIC,

İpuçları için teşekkürler. Derlemeyi unutmamak için dosyanın sonuna ex4 ekliyordum. Ne yazık ki yeni yapım 610 ZigZag eskisiyle değiştirildi.

Zaman benim için sorun olmadığı için seninkini kullanmaya karar verdim. Burada da bazı sorunlarla karşılaşıyorum, bana yol gösterirseniz sevinirim.

Yukarıda belirtilen kodun aynısını kullandım, dosya adını sürümünüzle değiştirdim. 6,5,3 parametrelerini kullanıyorum; varsayılan ayarlarınızdan tek fark budur.

Baska öneri? Yoksa klasik zikzakla mı gitmeliyim (610 inşası için?)

Teşekkürler.

Yeni 610 ZigZag'ı kullanmanın yanlış bir tarafı yok. Aslında, gelecekteki yapılarla ileriye uyumlu olması için bunu kullanmanızı tavsiye ederim. Eskisini, hatta benimkini bile kullanma.

ZigZagZug göstergem ekstra parametreler ve farklı bir düzen ve türde kullanır, bu nedenle şu anda kullandığınız benzer bir iCustom'u kullanamazsınız. Tamamen farklı.

Ayrıca ekstra özellikler için göstergede 7 arabellek kullanıyorum. ZigZag'ı anlamak için görsel öğrenme aracı olarak kullanılması gerekiyordu ve gerçekten bir EA'da kullanım için değil.

not! iCustom kullanan bir EA'nın geriye dönük testi sırasında birkaç kez Gösterge Yükleme ve Boşaltma yapılması normaldir. Her şey EA ve Göstergenin nasıl kodlandığına bağlıdır. Bunu önlemek ve bir EA'yı daha hızlı hale getirmek için, dış göstergelere bağlı olmamak için genellikle yalnızca temel kodu EA'nın içine yeniden kodlarım, ancak bu, doğrudan sizin durumunuzla ilgili olmayan başka bir konudur. Gelecekteki EA'larınız için sadece bir öneri.

 
aed71 :


Merhaba FMIC,

... Gri zikzak çizgilerin en yüksek ve en düşük değerlerini almak istiyorum ama log'a tüm yüksek ve alçak değerleri yazdığımda pembe ve camgöbeği renkli noktalarla tamamen aynı. Ancak sadece zig zag değerlerine ihtiyacım var. ...

Teşekkürler.


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 (ZigZagZug'daki su ve macenta daireleri). 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, o zaman 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).

Neden: