"MQL5'e Giriş: Basit Uzman Danışman (EA) ve Özel Gösterge nasıl yazılır" makalesi için tartışma - sayfa 5

 
Grzegorz Korycki:

bu mql5'i insanlara anlatmanın kolay bir yolu değil. (sanki yeni başlayanların bunu anlama şansı varmış gibi!) tıpkı programlama kitaplarında olduğu gibi insanların %90'ının nasıl başlayacağı hakkında bir fikri yok. Örneğin c programlama ile ilgili bir kitabı açıyorlar ve ilk "Kolay örnek" 1 sayfa boyunca küçücük fontlarla yazılmış. Hayatım boyunca herkese programlama öğretebilecek sadece bir tane iyi programlama kitabı okudum. Bunun nedeni, muhtemelen mükemmel programcılar tarafından yazılmış olmaları, ancak ne yazık ki çok kötü öğretmenler olmaları. Programlama gerçekten kolay olabilir ve bunu size MQL4 programlama dili için basit bir öğretici hazırlayarak kanıtlayacağım, şimdi olduğundan biraz daha fazla zamanım olduğunda. Herkes için - hatta yeni başlayanlar için bile. En büyük hata, insanlara dilin ayrıntılarını öğretmektir, çalışmalarının çoğu ctrl+C ve ctrl+v olmalı ve komutlar için google kullanmalı ve en önemlisi - her şeyi ÇOK BASİT tutmak. 10'dan fazla programlama dili biliyorum (7 yaşımdan beri programlıyorum) ve 11kb (!!!) üzerindeki bu "Kolay örnek" in açıklanma şeklinden hala korkuyorum. Bu örnekten MQL5'i öğrenen gerçek bir programlama acemisi var mı bilmek istiyorum ;D. Bundan şüpheliyim ve eğer varsa, bu insanları bir elin parmakları kadar sayabilirsiniz.

Ne kadar doğru. Kodlamada yeniyim ve size tamamen haklı olduğunuzu söyleyebilirim. Kodlamanın nasıl yapılandırıldığını anlamam gerekiyor. Programın düzeni. Bir aceminin anlamasını sağlamak için internette öğretici arıyordum. Bu imkansız. Beni böyle bir öğreticiye yönlendirebileceğiniz bir fikriniz var mı? Youtube'dan indirdiğim videoların hepsi aynı. Teşekkürler
 

Ibrahim Melssen:
I have copy paste the Expert Advisor and try to test it with Strategytester. But it doesn't make any trades. I am new to MQL5 and programming so maybe I just made a stupid mistake. It compiled without any errors. I'd really like the strategy! Anyone ideas why it doesn't run on strategytester..?

Burada da aynı adamlar nedenini bulamıyorum

 
Guin:

Mql5 programlamada yeniyim.


Bu örnek üzerinden öğrenmeye çalışıyordum, ancak gösterge yapısının sonundaki döngüde biraz kayboldum. Day_n değişkenine tam olarak nerede bir değer atadı?


Çünkü döngü day_n<day_t olup olmadığını kontrol edecek. Program day_n değerini nasıl bilebilir?



Ve nasıl hesaplanıyor? rate_total = 10 olduğunu ve henüz hesaplanmış bir çubuk olmadığını varsayalım. Yani prev_calculated = 0


day_t=time[0] (geriye doğru saydığı için BUGÜN!)/PeriodSeconds... 1970'ten saymaya başladığına göre, 10 gün öncesinden saymaya başladığını varsayalım. yani 10 vermeli, değil mi?

Yani day_t=10. Şimdi dayt > dayn olup olmadığını kontrol ediyor. dayn'i bilmiyorum ama dayt=10 olduğunu biliyorum. Değer olmadığı için dayn'nin sıfır olduğunu varsayacağım.

O zaman dayn de 10 olur. Tamam.

Döngünün ikinci atışı. prev_calculated + 1= 1.

DayT=time[1] (yesterday)/period... hatırlayın, 10 gün öncesinden saymaya başlıyor... ama şimdi sadece düne kadar. 9 değerini vermeli, değil mi?

ama şimdi dayN < dayT yanlış. Sonra else ifadelerini gerçekleştirmeye başlar. Tamam. Anladım. Anladım.


Daha sonra tüm bu[] ve bd[] değerlerini hesaplayacaktır. Tamam. Döngü, prev < toplam oran yanlış olduğunda sona erecektir.

Ama yeni bir çubuk geldiğinde ve tekrar doğru olduğunda, tekrar sıfırdan mı başlayacağım? Yoksa 10'dan başlayacak ve doğrudan else kısmına mı gidecek?


Teşekkürler!!!!

İki bölüme ayırmanız gerekiyor:

1 Grafiğe uygulanan ilk zaman göstergesinde: prev_calculated =0 , i = 0, i ++ i = rates_total olana kadar döngüden çıkar (time[0] şimdiki değil geçmiştendir.)

2 Yeni çubuk başlatılır: prev_calculated rates_total'dan küçük olacaktır, bu nedenle koşul doğrudur, döngü yalnızca bu yeni çubukta çalışacaktır

 

Merhaba @Guin,

Sorunuzun henüz doğru yanıtlandığını sanmıyorum. Örnekteki kodu kullandıysanız, muhtemelen hiçbir anlam ifade etmeyen ve grafikte göremediğiniz görünmez bir gösterge elde edersiniz. Bunun nedeni, kodun bu bloktan asla geçmemesidir:

if(day_n < day_t){
        day_n = day_t;
        h_day = high[i];
        l_day = low[i]
}

Bunun nedeni, day_n'nin manuel olarak herhangi bir varsayılan değere ayarlanmaması ve day_n < day_t karşılaştırmasının her zaman false ile sonuçlanmasıdır. Hata ayıklayıcıya göre, açıkça ayarlanmadığında day_n'nin değeri "2076449103" şeklindedir.

Sadece day_n tanımını aşağıdaki gibi bir şeyle değiştirin:

int day_n = 0, day_t;


Umarım bu yardımcı olur.


Guin:

Mql5 programlamada yeniyim.


Bu örnek üzerinden öğrenmeye çalışıyordum, ancak gösterge yapısının sonundaki döngüde biraz kayboldum. day_n değişkenine tam olarak nerede bir değer atadı?


Çünkü döngü day_n<day_t olup olmadığını kontrol edecektir. Program day_n değerini nasıl bilebilir?

[Silindi]  

Harika bir makale,

Paylaşım için teşekkürler