Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Cevap veremedim (orada değildim). Birinden bahsetmek için ayrıştırılması gereken kodu gönderin.
Not: Bu zikzakta bir hata değil, bir yazım hatası vardı (MT3'teki koda kıyasla), sadece bu yazım hatasını buldum ve başka hiçbir şeyi düzeltmedim.
Şimdi belirli düzenlemelerle çok sayıda biriktirdim. İyi çalışıyorlar. Ancak ilk ışında - sıfır çubuğundan başlayarak veya ilk çubuklardan herhangi birinden - ekstremum arama fonksiyonlarındaki hatalar başarısız oluyor. Ve gösterge kararsız.
//+------------------------------------------- --------------------+
//| Özel Hareketli Ortalama.mq4 |
//| Telif Hakkı © 2005, MetaQuotes Yazılım A.Ş. |
//| https://www.metaquotes.net/ |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2005, MetaQuotes Software Corp."
#özellik bağlantısı https://www.metaquotes.net/
#özellik göstergesi_chart_window
#özellik göstergesi_tamponları 1
#özellik göstergesi_renk1 Kırmızı
//---- gösterge parametreleri
dış int DışDepth=12;
harici int ExtDeviation=5;
harici int ExtBackstep=3;
//---- gösterge arabellekleri
çift ExtMapBuffer[];
çift ExtMapBuffer2[];
//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
Gösterge Tamponları(2);
//---- çizim ayarları
SetIndexStyle(0,DRAW_SECTION);
//---- gösterge arabellek eşlemesi
SetIndexBuffer(0,ExtMapBuffer);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(0,0.0);
//---- gösterge kısa adı
IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
//---- başlatma tamamlandı
dönüş(0);
}
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int başlangıç()
{
int shift, geri, son yüksek konum, son düşük konum;
çift değer, res;
çift kıvrım, kıvrım, son, son;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
val=Düşük[En Düşük(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;
başka
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
başka
{
for(geri=1; geri<=ExtBackstep; geri++)
{
res=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
}
}
}
ExtMapBuffer[shift]=val;
//--- yüksek
val=Yüksek[En yüksek(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==sonyüksek) val=0.0;
başka
{
sonyüksek=val;
if((val-High[shift])>(ExtSapma*Nokta)) val=0.0;
başka
{
for(geri=1; geri<=ExtBackstep; geri++)
{
res=ExtMapBuffer2[shift+back];
if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0;
}
}
}
ExtMapBuffer2[shift]=val;
}
// son kesim
sonyüksek=-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)) devam edin;
//---
if(kıvırcık!=0)
{
if(sonyüksek>0)
{
if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
başka ExtMapBuffer2[shift]=0;
}
//---
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
}
lastlow=-1;
}
//----
if(kıvır!=0)
{
if(sondüşük>0)
{
if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
başka ExtMapBuffer[shift]=0;
}
//---
if((daralt<sondüşük)||(sondüşük<0))
{
lastlow=curlow;
lastlowpos=shift;
}
sonyüksek=-1;
}
}
for(shift=Bars-1; shift>=0; shift--)
{
if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0;
başka
{
res=ExtMapBuffer2[shift];
if(res!=0.0) ExtMapBuffer[shift]=res;
}
}
}
Ve hangileri görüntülenmiyor? Her şeyi gösteriyor gibiyim. Evet ve bu benim kodum değil - standart teslimattan. Her durumda, MT'nin tüm sürümlerinde var.
Hangi zaman dilimlerinde gösterilmez. DC-Brezan.
GBP-CHF
Görüntülenmiyor - m1, m15. Gerisi görüntülenir.
EURUSD
Görüntülenmiyor - m1, m5
AUD-USD - herkes için görüntülenir.
Bunun neden böyle olduğu belli değil.
Belki de Slava'nın yaz aylarında yeniden düzenlediği koduna sahipsiniz. Ama değişikliğini beğenmedim. Bazı problemler çözülmedi.
================
Fena değil yeniden yapılmış GODZILLA (Nikolai). Ama o sadece iki sorunu çözdü.
1) Her kene üzerinde yeniden hesaplama . Büyük ölçüde azalttı.
2) Tümsekleri kaldırmak için bir algoritma eklendi. Tümsekler, esas olarak, aynı çubukta hem minimum hem de maksimum olması gerçeğinden kaynaklanır. Ve zikzak algoritması öyle ki sadece yüksekleri bırakıyor. Bu genellikle arka arkaya birkaç zirveye yol açtı.
GODZILL tarafından düzeltilen göstergeyi iyileştirme seçeneklerim var. Havada asılı olan kıvrımlar kaldırıldı. Ancak, tahmin ettiğim gibi, ekstremum arama işlevlerinin yanlış çalışması, ilk iki ışında kendini hala gösteriyor. Ve bu sorun nedeniyle, bu konuyu burada gündeme getirdim.
Ancak arama fonksiyonunun doğru çalışması mümkündür ancak bu fonksiyon için net bir açıklama yoktur. Bu nedenle ve yanlış kullanımı meydana gelir.
anlayamayacağın kadar. bence şöyle bir şey olmalı
Burada "ekstra" eski kod yorumlanmıştır. Her ne kadar bir zikzak fikrini henüz tam olarak anlayamamış olsam da. Her durumda, böyle bir kod asılı aşırılık vermez. Kodun bu versiyonu uygunsa ama ben denk gelmediysem :) link eksikliği için özür dilerim.
TAMAM. Tanrı onunla olsun, bir zikzak ile. Soru zikzak içinde değil. Ve MQ4 dilinin işlevleri istikrarlı ve öngörülebilir şekilde çalışmalıdır.
Ve bu BÜYÜK SORUN. Arama işlevleri yalnızca ZigZag'da uygulanmaz. Ama aynı zamanda diğer birçok göstergede.
Zigzag özel bir durumdur. Ama aynı zamanda sorunu vurgulamaya da yardımcı olur. Birçok gösterge zikzaklara dayanmaktadır. Zigzag kararsız çalışıyor. Bu kimse için bir sır değil. Birçoğu, zamanlarını ihtiyaçları için kendi zikzaklarını programlamak için harcamak zorunda kalıyor. Ne kadar zaman kaybı. Heba olmuş. Sorunun temel nedeninin yanlış anlaşılmasından dolayı.
Bunlar altın kelimeler. Bunu ilk söyleyen sen değilsin. Ancak yine de, zikzak içinde somutlaşan ve kısmen bu kodda uygulanan fikirler çok iyidir. Bu fikirler standart hale getirilecek.
Göstergeyi hesaplama sürecinde pencereyi (shift,shift+ExtDepth) hareket ettirdiğimizde, yeni bir ekstremumun ortaya çıkması hem yeni fiyat hem de eski ekstremin pencereden çıkmış olması ile ilişkilendirilebilir. Bu anın ele alınması gerekiyor. Bunu yapmak için, eklememde if(highpos!=shift) val=0.0; . Bunun standart kodda nasıl yapıldığını anlamadım. Benim versiyonumdaki asılı ekstremin ortadan kalktığı gerçeğine bakılırsa, bu ya yanlış yapılır ya da hiç yapılmaz.
Ve zikzak istikrarsızlığı tam olarak nedir?