Kodlama yardımı - sayfa 38

 

...

Göstergede bunu yapmanın tek yolu, bir olay (klavye, fare, ...) algılanana kadar onu sonsuz döngüde tutmak olacaktır.

Ancak bu aynı zamanda diğer terminal işlevlerinin yürütülmesinin durdurulduğu anlamına da gelir (bu, çöken kötü bir göstergeye sahip olduğunuzdakiyle aynıdır - metatrader'ınızı bloke eder) Bu nedenle, bu iyi bir çözüm değildir. Genellikle bunun için kullanılan (uyku) ve kodunuz duraklatıldığında diğer kodların yürütülmesine izin veren işlev (bu, terminaldeki diğer öğelerin işi yapmasına izin verdiğiniz zaman olur) göstergelerde devre dışı bırakılır, bu nedenle olamaz Çözüm için kullanılır

marley60:
bir alarm varsa, bir kez "pling" sesi çıkarır. ben durdurana kadar alarm sesi çalma imkanı var mı? (nedeni: tuvalette veya mutfaktayken tek bir "pling" sesi duymayacağım) alarm sesini bir şarkıyla değiştirdim ama bir kez çal/durana kadar çal arasında bir seçim yapmayı tercih ederim (olduğu gibi) ticaret istasyonu).
 

Dizin hakkında soru

Merhaba Mladen;

Ind[3][0][1] gibi bir çağrı göstergesinin böyle olduğunu gördüm, birinci ve ikinci tanımlı indeks ne anlama geliyor?

şimdiden teşekkürler

kemal

 

EA'da ZigZag Sorunu

Merhaba,

EA'mda standart Zigzag indy kullanıyorum. Zigzag düğümlerini belirlemek için aşağıdaki kodu kullanıyorum. Bazen MT4'ün zikzak düğümlerini yanlış zaman diliminden döndürdüğünü fark ettim. Örneğin, H1 zikzak düğümlerini almaya çalıştığımda, MT4 M15 zikzak düğüm değerlerini döndürüyor. Daha önce böyle bir sorunla karşılaşan var mı? Zigzag ve olası sorunlu alan hakkında daha fazla bilginiz varsa, lütfen öneride bulunun.

Çok teşekkürler.

FFJason

not: TF, farklı zaman dilimlerinden zikzak düğümleri almak için farklı değerler beslediğim zaman dilimidir. Bir şekilde MT4, belirli bir TF kullanıldığında düğüm değerlerini karıştırdı.

void vGetNode2(int TF,double& lwnd2[2],double& hgnd2[2])

{ int t=0; int p=0; int q=0; double nd2i;

for (i=0; i<=150; i++)

{ nd2i=iCustom(NULL,TF,"ZigZag",13,8,5,0,i);

if (nd2i==iLow(NULL,TF,i)) {if (p<=1) {lwnd2[p]=nd2i; p++;}}

if (nd2i==iHigh(NULL,TF,i)) {if (q<=1) {hgnd2[q]=nd2i; q++;}}

if (p==2 && q==2) break;

}

return;

}

 

Önceki siparişin S/L'sinden sonra yeni sipariş nasıl açılır?

Önceki siparişin S/L'sinden sonra yeni sipariş açın.
Sayın Bay;

Herhangi bir kurum, yeni siparişin açık olduğu S/L'ye dayalı siparişi kapattıktan sonra EA'nın programını biliyor mu?

Saygılarımızla
 

...

Muhtemelen bir zaman çerçevesinin ZigZag zirvesinin başka bir zaman çerçevesinin ZigZag zirvesiyle aynı olduğu bir durumunuz vardır (bu, zirveleri aradıkları için alışılmadık bir durum değildir). Zaman çerçeveleri söz konusu olduğunda, bu kodla doğru zaman çerçevesi değerleri alıyorsunuz. Belki de son 4 ZigZag değerini aldığınızdan emin olmak için kodda sadece bir değişiklik yapılmalı ve ardından kod şöyle olacaktır.

void vGetNode2(int TF,double& lwnd2[2],double& hgnd2[2])

{

int p=0; int q=0; int max=iBarShift(NULL,TF,0); double nd2i;

for (int i=0; i<max; i++)

{

nd2i=iCustom(NULL,TF,"ZigZag",13,8,5,0,i);

if (nd2i==iLow(NULL,TF,i)) {if (p<=1) {lwnd2[p]=nd2i; p++;}}

if (nd2i==iHigh(NULL,TF,i)) {if (q<=1) {hgnd2[q]=nd2i; q++;}}

if (p==2 && q==2) break;

}

return;

}

[/PHP]

As you can see only the loop end is changed from "150" to "Bars-1"

novalight:
Hi,

I use standard Zigzag indy in my EA. I use the following code to determine the zigzag nodes. I noticed that sometimes the MT4 returns the zigzag nodes from the wrong time frame. For example, when I try to get H1 zigzag nodes, MT4returns M15 zigzag node values. Has anyone come across such problem before? If you know more info about zigzag and the possible problem area, please advise.

Many thanks.

FFJason

note: TF is the time frame which I feed different values for getting zigzag nodes from different time frame. Somehow MT4 mixed up the node values when a specific TF is used.

[PHP]

void vGetNode2(int TF,double& lwnd2[2],double& hgnd2[2])

{ int t=0; int p=0; int q=0; double nd2i;

for (i=0; i<=150; i++)

{ nd2i=iCustom(NULL,TF,"ZigZag",13,8,5,0,i);

if (nd2i==iLow(NULL,TF,i)) {if (p<=1) {lwnd2[p]=nd2i; p++;}}

if (nd2i==iHigh(NULL,TF,i)) {if (q<=1) {hgnd2[q]=nd2i; q++;}}

if (p==2 && q==2) break;

}

return;

}

 

EA'da ZigZag sorunu

Merhaba Kızlık,

Yardımın için çok teşekkürler.

iBarShift üzerinde biraz okuma yaptım ve iBarShift(NULL,TF,0) , grafikteki toplam çubuk sayısını alıyor gibi görünüyor. iBarShift'i kullanma amacınızı yanlış anlarsam lütfen beni düzeltin.

ZigZag'ın yanlış düğüm değerleri döndürdüğü ve arama numarasının (150 kullanıyorum) sorun olmadığı durumlara bakıyorum. Ayrıca, bazı düğümlerin farklı zaman dilimleri için aynı olduğunu anlıyorum, ancak bulduğum hatalar iki veya daha fazla düğümdü ve karşılık gelen çubuk numaralarının tümü farklı bir zaman çerçevesini gösteriyordu. Kafamı kurcalayan sorun buydu.

Bugün Zigzag ile daha şaşırtıcı bir problem buldum. Rutin tarafından döndürülen düğümleri görüntülemek için Alert kullanıyorum ve bazen rutinin bir doğru düğüm çifti ve onun çubuk numarasını döndürdüğünü, ancak diğer düğüm ve çubuk numarasının her ikisinin de 0 olduğunu buldum. Bu gerçekten garip. Aşağıdaki kodlarla hiçbir düğümün 0 değeri olmamasını sağlayarak rutini daha da geliştiriyorum. Sadece MT4'ün kalp atışını atlamadığını veya durmadığını ve EA'ma çöp atmadığını umuyorum. Bunu söylememin nedeni, programım SL ve TP eklemeye veya OP değerleri toplamaya çalışırken uyarı mesajları gösteren diğer EA'mın ve MT4'ün bu adımları atlaması ve 0 değeri döndürmesi oldukça sık oldu. Bu durumlara dikkat etmek ve bu görevlerin düzgün bir şekilde yerine getirildiğinden emin olmak için programımı geliştirmem gerekiyor.

Tavsiye lütfen. aklımın ucundayım. Yardımınız için çok minnettarım. Şerefe,

Novalight

int iGetNode4(int TF, double& lwnd4, double& hgnd4, int& lwnd4bar, int& hgnd4bar)

{ lwnd4=0; hgnd4=0; lwnd4bar=0; hgnd4bar=0; int t=0,p=0; //node 4 = arrow

for (i=0; i<=120; i++)

{ double lowi=iLow(NULL,TF,i); double highi=iHigh(NULL,TF,i);

if (iCustom(NULL,TF,"ZigZag",80,35,12,0,i)==lowi && lowi!=0) {if (t==0) {lwnd4=iLow(NULL,TF,i); lwnd4bar=i; t++; if(lwnd4==0) Alert(lwnd4);}}

if (iCustom(NULL,TF,"ZigZag",80,35,12,0,i)==highi && highi!=0) {if (p==0) {hgnd4=iHigh(NULL,TF,i); hgnd4bar=i; p++;if (hgnd4==0) Alert(hgnd4);}}

if (t==1 && p==1) break;

}

if (lwnd4bar<hgnd4bar) return(1); //current node 4 is a low node for Long

if (lwnd4bar>hgnd4bar) return(-1); //current node 4 is a high node for Short

return;

}

[/PHP]

mladen:
You probably have a case when the ZigZag peak of one time frame is the same as the ZigZag peak of another time frame (which is not an unusual case since they are looking for peaks). As far as time frames are concerned, you are getting correct time frame values with that code. Maybe just one change in the code has to be done in order to ensure that you get 4 last ZigZag values, and then the code would be like this

[PHP]void vGetNode2(int TF,double& lwnd2[2],double& hgnd2[2])

{

int p=0; int q=0; int max=iBarShift(NULL,TF,0); double nd2i;

for (int i=0; i<max; i++)

{

nd2i=iCustom(NULL,TF,"ZigZag",13,8,5,0,i);

if (nd2i==iLow(NULL,TF,i)) {if (p<=1) {lwnd2[p]=nd2i; p++;}}

if (nd2i==iHigh(NULL,TF,i)) {if (q<=1) {hgnd2[q]=nd2i; q++;}}

if (p==2 && q==2) break;

}

return;

}

As you can see only the loop end is changed from "150" to "Bars-1"
 

...

iBarShift(NULL,TF,0) 'dan itibaren: evet, bir hedef zaman çerçevesinin toplam çubuklarını döndürür. Ancak döngü o kadar çok kez yürütülmeyecek, Son 4 ZigZag tepe noktası bulunur bulunmaz var olacaktır.

Şimdi argüman uğruna şunu hayal edin: bir zaman çerçevesi için işlevi çağırıyorsunuz ve son 4 tepeyi aramak için 150 bar sınırınız var. İşi yapar ve sonra başka bir zaman çerçevesine bakarsınız. Ve sadece tartışma uğruna, 4. zirvenin ilk 150 barın dışında olduğunu hayal edin. Ne olacak. Dizileriniz temizlenmediğinden, daha önce aranan zaman çerçevesi için bazı sonuçlar hala oradadır, çünkü 150. çubukta 4 tepe noktasının tümü bulunamadı ve daha önce bulunan bazı tepe noktaları, şu anda aranan zaman çerçevesinde bulundukları gibi orada bırakıldı.

Bu kodu eklemenin amacı buydu: gerçekten son 4 tepe noktasını bulduğundan emin olmak. Bazen 10 bar alır, bazen 1000 (tamamen ZigZag'a bağlıdır ve sabit sayıda bar değildir) ancak "bar" kez döngü yapmaz. Yalnızca gerekli zamanları döngüye alacak ve 4 tepe noktasının hepsinin hedef zaman çerçevesinden olmasını sağlayacaktır.

Zaman çerçevesi karışıklığı söz konusu olduğunda, bunun olduğunu düşünmüyorum. Hedef zaman çerçeveleri için geçmiş dosyasının açılma şekli (sadece sembol adına hedef zaman çerçevesinin dakikalarını ekleyerek), zaman çerçevesi parametresi değiştirilmezse (yalnızca 1 zaman dilimi) tek bir döngüde 2 zaman çerçevesinden veri okumayı imkansız hale getirir. bu durumda geçmiş dosyası açılır ve farklı zaman dilimlerindeki verilere erişemez).

novalight:
Merhaba Kızlık,

Yardımın için çok teşekkürler.

İBarShift'te biraz okuma yaptım ve iBarShift(NULL,TF,0)'ınız grafikteki toplam çubuk sayısını alıyor gibi görünüyor. iBarShift'i kullanma amacınızı yanlış anlarsam lütfen beni düzeltin.

ZigZag'ın yanlış düğüm değerleri döndürdüğü ve arama numarasının (150 kullanıyorum) sorun olmadığı durumlara bakıyorum. Ayrıca, bazı düğümlerin farklı zaman dilimleri için aynı olduğunu anlıyorum, ancak bulduğum hatalar iki veya daha fazla düğümdü ve karşılık gelen çubuk numaralarının tümü farklı bir zaman çerçevesini gösteriyordu. Kafamı kurcalayan sorun buydu.

Bugün Zigzag ile daha şaşırtıcı bir problem buldum. Rutin tarafından döndürülen düğümleri görüntülemek için Alert kullanıyorum ve bazen rutinin bir doğru düğüm çifti ve onun çubuk numarasını döndürdüğünü, ancak diğer düğüm ve çubuk numarasının her ikisinin de 0 olduğunu buldum. Bu gerçekten garip. Aşağıdaki kodlarla hiçbir düğümün 0 değeri olmamasını sağlayarak rutini daha da geliştiriyorum. Sadece MT4'ün kalp atışını atlamadığını veya durmadığını ve EA'ma çöp atmadığını umuyorum. Bunu söylememin nedeni, programım SL ve TP eklemeye veya OP değerleri toplamaya çalışırken uyarı mesajları gösteren diğer EA'mın ve MT4'ün bu adımları atlaması ve 0 değeri döndürmesi oldukça sık oldu. Bu durumlara dikkat etmek ve bu görevlerin düzgün bir şekilde yerine getirildiğinden emin olmak için programımı geliştirmem gerekiyor.

Tavsiye lütfen. aklımın ucundayım. Yardımınız için çok minnettarım. Şerefe,

Novalight

int iGetNode4(int TF, double& lwnd4, double& hgnd4, int& lwnd4bar, int& hgnd4bar)

{ lwnd4=0; hgnd4=0; lwnd4bar=0; hgnd4bar=0; int t=0,p=0; //node 4 = arrow

for (i=0; i<=120; i++)

{ double lowi=iLow(NULL,TF,i); double highi=iHigh(NULL,TF,i);

if (iCustom(NULL,TF,"ZigZag",80,35,12,0,i)==lowi && lowi!=0) {if (t==0) {lwnd4=iLow(NULL,TF,i); lwnd4bar=i; t++; if(lwnd4==0) Alert(lwnd4);}}

if (iCustom(NULL,TF,"ZigZag",80,35,12,0,i)==highi && highi!=0) {if (p==0) {hgnd4=iHigh(NULL,TF,i); hgnd4bar=i; p++;if (hgnd4==0) Alert(hgnd4);}}

if (t==1 && p==1) break;

}

if (lwnd4bar<hgnd4bar) return(1); //current node 4 is a low node for Long

if (lwnd4bar>hgnd4bar) return(-1); //current node 4 is a high node for Short

return;

}

 

EA'da ZigZag sorunu

Merhaba Kızlık,

Kesinlikle haklısın! Kodumu gözden geçirdim ve 150'nin büyük zikzak için yetersiz olduğunu ve 4 düğümün tümü bulunmazsa, hangi düğümün ilk veya son geldiğini belirleme mantığının tamamı karmakarışık olacaktır.

Sonuç olarak, Zigzag veya MT4'te yanlış bir şey yok, çok küçük bir arama numarası ayarlamak tamamen benim hatam. Zaman ayırdığınız, sabırlı olduğunuz ve daha da önemlisi yardım etme isteğiniz için teşekkür ederim ......

Dikkatli ol .....

Novalight

mladen:
iBarShift(NULL,TF,0) 'dan itibaren: evet, bir hedef zaman çerçevesinin toplam çubuklarını döndürür. Ancak döngü o kadar çok kez yürütülmeyecek, Son 4 ZigZag tepe noktası bulunur bulunmaz var olacaktır.

Şimdi argüman uğruna şunu hayal edin: bir zaman çerçevesi için işlevi çağırıyorsunuz ve son 4 tepeyi aramak için 150 bar sınırınız var. İşi yapar ve sonra başka bir zaman çerçevesine bakarsınız. Ve sadece tartışma uğruna, 4. zirvenin ilk 150 barın dışında olduğunu hayal edin. Ne olacak. Dizileriniz temizlenmediğinden, daha önce aranan zaman çerçevesi için bazı sonuçlar hala oradadır, çünkü 150. çubukta 4 tepe noktasının tümü bulunamadı ve daha önce bulunan bazı tepe noktaları, şu anda aranan zaman çerçevesinde bulundukları gibi orada bırakıldı.

Bu kodu eklemenin amacı buydu: gerçekten son 4 tepe noktasını bulduğundan emin olmak. Bazen 10 çubuk alır, bazen 1000 (tamamen ZigZag'a bağlıdır ve sabit sayıda çubuk değildir) ancak "çubuk" kez döngü yapmaz. Yalnızca gerekli zamanları döngüye alacak ve 4 tepe noktasının hepsinin hedef zaman çerçevesinden olmasını sağlayacaktır.

Zaman çerçevesi karışıklığı söz konusu olduğunda, bunun olduğunu düşünmüyorum. Hedef zaman çerçeveleri için geçmiş dosyasının açılma şekli (sadece sembol adına hedef zaman çerçevesinin dakikalarını ekleyerek), zaman çerçevesi parametresi değiştirilmezse (yalnızca 1 zaman dilimi) tek bir döngüde 2 zaman çerçevesinden veri okumayı imkansız hale getirir. bu durumda geçmiş dosyası açılır ve farklı zaman dilimlerindeki verilere erişemez).
 

kodla ilgili yardım

Birisi aşağıdaki iki grafiği eklemek için SnakeBorders göstergesine kod ekleme nezaketinde bulunabilir mi:

1. Beyaz aralığın ortasını gösteren bir çizgi grafiği (resimde kırmızı çizgi ile gösterildiği gibi).

2. Sarı çizgi grafiğinin zıt ucunu çizen bir çizgi grafiği (resimde camgöbeği çizgisiyle gösterildiği gibi). yılan sınırları.mq4

Dosyalar:
sb.gif  39 kb
 

lütfen biri benim için bu göstergeyi oluşturmaya yardım etsin

İstediğim gösterge

Koşul

Gövde mum fiyatı ma göstergesinin üzerine çıktığında ve mum kapandıktan sonra rsi > rsi 50 olduğunda satın al yeni mum bir Mavi ok ve Satana kadar Mavi Çizgi başla

Gövde mum fiyatı alt ma göstergesini geçtiğinde ve mum kapandıktan sonra rsi < rsi 50 olduğunda satış yapın yeni mum bir kez başlayınca Satın Alana Kadar Kırmızı ok ve Kırmızı Çizgi

lütfen değeri değiştirmek için de girdi ekleyin

kötü ingilizcem için özür dilerim

Çok teşekkür ederim

Neden: