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
Mükemmelliğin sınırı olmadığı için, koda birkaç yorum daha ekleyeceğim:
Önemsiz iki yeri sarı renkle vurguladım.
1) Lütfen kodun ilk if ve sonrakinde tekrarlandığını unutmayın. Fark sadece son satırda ve son işlemdedir (OpenBUY, OpenSell).
2) else bloğuna girme koşulları açık değildir. Bolluktan mı kaynaklanıyor?? görüntülenmez. Aslında, yalnızca son satıra bağlıdırlar:
Bu, burada bir özelliğin eksik olduğuna dair kesin bir işarettir.
Bir pozisyon açma zamanı belirtilene karşılık geliyorsa true döndüren bir fonksiyon yazmanız gerekiyor (biraz sonra yazacağım)
Evet Vasily haklısın fonksiyon yazmak gerçekten gerekliydi.
Saygılarımla, Vladimir.
Bu arada, programınızın genel boyutuna dikkat edin. Zaten önemli. Nasılsınız? Bu arada, yeni başlayan biri artık böyle bir kod hacmi yazamaz: değişkenler karışmaya başlar, köşeli parantezler ölçek dışına çıkar, derleme hataları yağmurdan sonra mantar gibi görünmeye başlar. Bu boyutta bir program derledikten sonra başarısız olmaya başlarlar ve kimse neyin yanlış olduğunu anlayamaz. Ve her şey bir nedenden dolayı sizin için çalışıyor) ve ne olduğu ve nasıl olduğu işlevler açısından yapısal olarak açıktır. Tek kelimeyle güzellik.
Teşekkürler Vasili! İşte çalışmanızın büyük bir kısmı çünkü. takip eden durdurma şablonu sizin tarafınızdan sağlandı. Sadece fonksiyonları kodla doldurmam gerekiyor. Şimdi bir trol üzerinde çalışıyorum. Zaten bir şeyler yapıldı, ancak danışmanın son halini herkesin görebileceği şekilde sunmak için hala çözmem gereken noktalar var.
Saygılarımla, Vladimir.
Birkaç özellik ekledim. Bu kodu aldım:
Sihirle çalışmak benim için hala net değil. Netleştirmede anlamsızdır. Her durumda, yalnızca bir işlevde yapıldığından bu kontrolü kolayca kaldırabilirsiniz.onInit bloğu da aşırı tasarlanmış ve hala tam olarak doğru yazılmamış. İlk olarak, sayıları değil tanımlayıcıları yazmaya çalışmanız gerekir. Döndürme -1 değil ve INIT_FAILED 0 değil, INIT_SUCCEEDED. İkincisi, anahtar burada gereksizdir. Ya if ya da geçiş yazmanız gerekir. Önce bir şey yazın, çünkü diğeri tereyağı yağı.
Üçüncüsü, hesap türü için tüm seçenekleri kontrol etmeniz gerekir. Demo var, gerçek var. Bir de Yarışma var. Ancak üçüncü bir hesap olmasa bile, diğer tüm seçenekleri yakalayacak bir saplama olmalıdır:
Pekala, pastadaki kiraz: yorumlar. Fonksiyonları yazdığımızda, çok fazla alan var, elin kendisi gerekli kod parçalarını yorumlarla sağlamak için uzanıyor:
Aynı kod, bazı ana işlevlerin gövdesine "aynı anda" yazıldığında, olabildiğince kısa ve yorumsuz hale gelir:
Bu nedenle, daha fazla fonksiyon yazın, sizi gerekli yorumları yazmaya teşvik ederler ve kodu daha ayrıntılı hale getirseler de daha anlaşılırdırlar.
Üçüncü nokta: buraya yazıyorsunuz:
Neden başka bir yorum türü ekleyesiniz? Sadece blokta olanı yorumunuzla değiştirin:
Unutmayın, yorumlar sizin için, siz yorumlar için değil. Eskileri silin ve yerine kendinizinkini ekleyin. Biçime bağlı kalın - işlevin başlığında, bu işlevin ne yaptığını ve hangi durumlarda hangi değerlerin döndüğünü yorumlarda kısaca ama açıkça belirtin.
Bu arada, bir pozisyonun kapanma koşulları zamanla ayrı bir fonksiyona ayrılınca, yanlış yazıldığı ortaya çıktı:
Dahili içeriği kodunuzdan aldım. Pozisyonun sadece bir dakika içinde kapatılacağı açıktır. 23:50'de. Bu kod çalışacaktır, ancak 23:50'de bir şeyler ters giderse, pozisyon 23:51'de asılı kalacaktır. Yani en azından şunu yazmalısın:
Ve bu bile ideal değil. Daha güçlü bir çözüm, ticaret modlarını kullanmaktır. Ancak, bu bir sonraki beceri seviyesidir. Şimdiye kadar bu tasarım işe yarayacak.
Merhaba Vasili! Zamanında tavsiye ve desteğiniz için çok teşekkür ederiz. İşlevlerin rolü ve program kodu oluşturma ilkeleri hakkındaki mesajlarınız MQL5 programlama dilini öğrenmemde bana çok yardımcı oldu:
Artık kafadaki bilgiler zaten yapılandırılmış bir şekil aldığında, sadece benim tarafımdan değil, diğer programcılar tarafından da yazılan kodu algılamak çok daha kolay. Bu konunun tüm yeni başlayanlar için MQL5 programlama dilini sıfırdan öğrenmelerine yardımcı olacağını umuyorum.
Saygılarımla, Vladimir.
Aferin. İyi kodlayıcıların genellikle iyi algoritmaları vardır ve görevleri vardır ve onların kalecileri vardır... Her şey doğru hedeflerle ve doğru görevlerle başlar. Hemen bir ev inşa edebilir ve sonra su bulabilirsiniz. Önce su bulabilir ve yakındaki suyu dikkate alarak bir ev inşa edebilirsiniz. Hedefler/amaçlar ve problem ifadeleri olasılıklardandır.... Hemen algoritmaya geçersiniz.... Ama genel olarak, çok eşit!
Bu arada, bir pozisyonun kapanma koşulları zamanla ayrı bir fonksiyona ayrılınca, yanlış yazıldığı ortaya çıktı:
Dahili içeriği kodunuzdan aldım. Pozisyonun sadece bir dakika içinde kapatılacağı açıktır. 23:50'de. Bu kod çalışacaktır, ancak 23:50'de bir şeyler ters giderse, pozisyon 23:51'de asılı kalacaktır. Yani en azından şunu yazmalısın:
Ve bu bile ideal değil. Daha güçlü bir çözüm, ticaret modlarını kullanmaktır. Ancak, bu bir sonraki beceri seviyesidir. Şimdiye kadar bu tasarım işe yarayacak.
Vasily, sen harika bir öğretmensin!
Herhangi bir kitapçıkta veya ders kitabında böyle bir açıklama bulamazsınız. Önerdiğiniz her şeyi, danışmanın son versiyonunda kesinlikle uygulayacağım.
Saygılarımla, Vladimir.
Konudan biraz sapacağım ve hayatımdan bir öğretmen (öğretmen) hakkında bir hikaye anlatacağım. Enstitümüzde, uzmanlık devam ederken, harika bir insan öğretti. O zamanlar mantığın cebirini inceliyorduk. Birçok öğrenci 1+1'in nasıl 1'e eşit olduğunu uzun süre anlayamadı. 1x1 ise, elbette 1'e eşit olacaktır. Ve işte sana!!! Bu öğretmen basit örneklerle bize mantıklı bir "VEYA"nın ne olduğunu ve bir ömür boyu hatırladığı mantıklı bir "VE" nin ne olduğunu açıklamıştır.
Düşünün, öğretmen, sabahları dersler için enstitüye gelmeniz gerektiğini söylüyor. Enstitüye troleybüs veya tramvay ile ulaşabilirsiniz. Durağa geldiniz, ancak ne troleybüs (koşul yanlış veya 0 ile aynı) ne de tramvay (koşul yanlış veya 0 ile aynı). Doğal olarak enstitüye gelemeyeceksiniz (koşul yanlış veya 0 ile aynı). 0+0=0 kontrol ediliyor. Harika! Bir durağa geldiyseniz ve bir troleybüs ( gerçek durum veya 1 ile aynı), VEYA bir tramvay ( gerçek durum veya 1 ile aynı), VEYA bir troleybüs ve tramvay birlikteyse, o zaman kesinlikle enstitüye varacaksınız. ve koşul doğru veya 1 ile aynı! Kontrol ediyoruz: 1+0=1 , 0+1=1 ve 1+1=1 . Her şey uyuyor!
Aynı örnekleri bir troleybüs ve tramvay ile kullanarak bize mantıklı VE'nin ne olduğunu anlattı.
Bir öğretmenin yeteneğinin gücü işte bu anlama gelir! Hayatımın geri kalanı için hatırlıyorum!
Saygılarımla, Vladimir.
Aferin. İyi kodlayıcıların genellikle iyi algoritmaları vardır ve görevleri vardır ve onların kalecileri vardır... Her şey doğru hedeflerle ve doğru görevlerle başlar. Hemen bir ev inşa edebilir ve sonra su bulabilirsiniz. Önce su bulabilir ve yakındaki suyu dikkate alarak bir ev inşa edebilirsiniz. Hedefler/amaçlar ve problem ifadeleri olasılıklardandır.... Hemen algoritmaya geçersiniz.... Ama genel olarak, çok eşit!
Valery, bu konuya ve yapıcı diyaloga katıldığınız için teşekkür ederiz.
Saygılarımla, Vladimir.