Kodlama yardımı - sayfa 61

 
mladen:
Bu gösterge, yumuşatma için "yılan kuvveti" (merkezli TMA) kullanıyor ve yeniden hesaplanmamak ve aynı kalmak için değiştirilemez. Merkezlenmiş TMA'nın "tekrar boyamayan" (uç noktalı) versiyonu basit bir LWMA'dır, ancak bununla ortalanmış TMA ile aynı sonuçları almayı beklemeyin. Merkezli TMA hakkında biraz daha fazlasını burada okuyabilirsiniz: https://www.mql5.com/en/forum/181241 Bu kodu değiştirmek veya geliştirmek için: bunun temeli, derlenmiş bir koddur. Birisinin derlenmiş bir kodu değiştireceğinden şüpheliyim

Bilgi için çok teşekkür ederim Mladen çok yardımcı oldu

 

Merhaba,

Bu göstergeyi web'den indirdim ancak eklediğimde 2 seviyeli ayrı pencereler görünüyor ancak çubuklar görünmüyor.

Düzeltmeme yardım eder misin?

Teşekkür ederim

osilatör.mq4

Dosyalar:
 

dasio,

Bu sadece başka bir güneş rüzgarı göstergesi (birisi içinde bir şeyi değiştirmeye çalıştı).

dasio:
Merhaba,

Bu göstergeyi web'den indirdim ancak eklediğimde 2 seviyeli ayrı pencereler görünüyor ancak çubuklar görünmüyor.

Düzeltmeme yardım eder misin?

Teşekkür ederim

osilatör.mq4
 
mladen:
dasio, Bu sadece başka bir güneş rüzgarı göstergesi (birisi içinde bir şeyi değiştirmeye çalıştı).

Teşekkür ederim. Ama geriye dönük testi başlattığımda çubuklar beliriyor. Nasıl mümkün olabilir?

Teşekkür ederim

 

dasio

Orada bir hata yazılmışsa uzmanlar ve dergi sekmesini kontrol edin. Broker verilerimde çalışıyor, bu yüzden komisyoncu verilerinizde neler olduğunu söyleyemem (belki sıfır bölme veya benzeri bir şey)

dasio:
Teşekkür ederim. Ama geriye dönük testi başlattığımda çubuklar beliriyor. Nasıl mümkün olabilir? Teşekkür ederim
 

Mladen ,

Bir kod yazarken veya birinin koduna bakarken kodun kalitesini nasıl değerlendirirsiniz?Kod yazarken kodun sağlamlığını nasıl test edersiniz?Teşekkürler.

 

:)

İki ana kriterim:

- basitlik (bir kodu basit hale getirmek geliştirmeyi, iyileştirmeyi ve hata ayıklamayı kolaylaştırır)

- düzenlilik (bir kodun sadece bir yığının üzerine atılabileceğini ve çalışacağını düşünen kişi, bir süre sonra kendi koduna bakmak zorunda kalmaz. Ayrıca, düzensiz bir kodun hatalarını ayıklamak başlı başına bir hikayedir)

Bu ikisi yerine getirildiğinde, ancak o zaman ikinci kez bakarım ve ancak o zaman onu "okurum", ancak o zaman kaliteye erişmek için neler yapılabileceği çok uzun bir hikaye - sanırım süreç nesnel olmaktan çok daha özneldir ...

nevar:
Mladen , Bir kod yazarken veya birinin kodunu incelerken kodun kalitesini nasıl değerlendirirsiniz?Kod yazarken kodun sağlamlığını nasıl test edersiniz?Teşekkürler.
 
drofwarc:
Merhaba,

iFractals'ı çağıran bir göstergeyi uyarlamaya çalışıyorum ve bunun yerine ayarlanabilir bir periyot özelliği olan özel bir fraktal göstergeyi çağırıyorum. Uyarlamaya çalıştığım gösterge ektedir. Buna "yakın görelijtozpreviousofractal" denir.

kapatırrelativejtozpreviousofractal.mq4

Fiyat önceki fraktal yüksek değerini kırarsa kod bir yukarı ok ve tersi için bir aşağı ok çizer.

iCustom ile aramaya çalıştığım gösterge de ektedir. Buna "Fraktallar - ayarlanabilir" denir.

fraktal_-_adjustable.mq4

Aşağıda, orijinal göstergeyi, Fraktallar - ayarlanabilir olarak adlandıracak şekilde değiştirme girişimim var. Kod, yüksek ve düşük fraktallarda noktaları başarıyla çiziyor ve fraktal periyodu istediğim gibi ayarlanabilir. Sorun, önceki yüksek ve düşük fraktal seviyelerin kırılmalarını çizmeyi amaçlayan oklardadır. Onları doğru bir şekilde çizmelerini sağlayamıyorum.

Bununla ilgili herhangi bir yardım çok takdir edilecektir.

Saygılarımla,

drofwarc

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars > 0) counted_bars--;

int limit = Bars - counted_bars;

for(int i=limit; i>0; i--)

{

UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal

if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels

HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i);

if(Close>HighLevel)

UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows

DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal

if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels

LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i);

if(Close<LowLevel)

DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows

}

return(0);

}

Sonunda bu çözüldü. Sorun bir arabellek karışımıydı.

 

Bir göstergenin sinyaller arasında n çubuk atlamasını sağlayan kod

Herkese selam,

Sleep() kullanarak veya bir zaman damgası kaydederek ve başka bir sinyale izin vermeden önce zaman damgasından sonra n saniye bekleyerek işlemler arasında bir EA duraklaması yapmanın mümkün olduğunu biliyorum.

Ancak aynı şeyi bir gösterge için yapmak mümkün mü?

Örneğin, iki hareketli ortalamanın kesişim noktasında okları çizen bir göstergenin, başka bir ok çizmeden önce bir çarpıdan sonra n çubuk atlamasına neden olmak istiyorum. Başka bir deyişle, n çubuk geçmeden önce başka bir çarpı işareti meydana gelirse, gösterge çarpıyı yok sayar ve bir ok çizmez.

Bunu yapan ancak hiç şansı olmayan bir gösterge bulmak için kapsamlı bir şekilde arama yaptım.

Birisi, kodu inceleyebilmem için bu özelliğe sahip bir gösterge gönderebilir mi? Ya da belki bana bu teklif için çalışan bir kod örneği verin, böylece onu uygulamaya çalışabilirim.

Çok teşekkürler,

drofwarc

 

normal olarak görüntülenemiyor, düzeltmeme yardımcı olabilecek var mı?

#özellik göstergesi_separate_window

#özellik göstergesi_tamponları 1

#özellik göstergesi_renk1 Kırmızı

#özellik göstergesi_maksimum 100

#özellik göstergesi_level1 70

#özellik göstergesi_level2 50

#özellik göstergesi_level3 30

#özellik göstergesi_minimum 0

//---- giriş parametreleri

harici int rsiperiod = 14 ;

extern int Kısa Süre = 5 ;

dış int Ortadönem = 8;

extern int Uzunperiyot = 13;

harici int mamode = 2 ;

//---- arabellekler

çift RSI[];

çift KısaRSI[];

çift OrtaRSI[];

çift UzunRSI[];

çift SMRSI[];

int dönem ;

//+------------------------------------------- -------------------+

//| Özel gösterge başlatma işlevi |

//+------------------------------------------- -------------------+

int init()

{

//---- göstergeler

GöstergeTamponları(5);

SetIndexBuffer(0,SMRSI);

SetIndexBuffer(1,RSI);

SetIndexBuffer(2,ShortRSI);

SetIndexBuffer(3,OrtaRSI);

SetIndexBuffer(4,LongRSI);

//---- DataWindow ve gösterge alt pencere etiketi için isim

IndicatorShortName("SMRSI("+rsiperiod+","+Kısaperiyot+","+Ortaperiyod+","+Uzunperiyod +","+mamode+")");

SetIndexDrawBegin(0,rsiperiod+Uzundönem);

periyot=Kısa periyot+Orta periyot+Uzun periyot;

dönüş(0);

}

//+------------------------------------------- -------------------+

//| Özel gösterge yineleme işlevi |

//+------------------------------------------- -------------------+

int başlangıç()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit = Barlar-sayılan_barlar;

for( i=limit; i>=0; i--) RSI=iRSI(NULL,0,rsiperiod,0,i);

for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i);

for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Ortadönem,0,mamode,i);

for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i);

for( i=limit; i>=0; i--) { if(dönem!=0) SMRSI=(Kısadönem/dönem)*KısaRSI+(Orta dönem/dönem)*OrtaRSI+(Uzun dönem/dönem)*UzunRSI;}

dönüş(0);

}

//+------------------------------------------- -------------------+