MQL5 dilini sıfırdan kendi kendine öğrenme - sayfa 47

 

Vladimir Simakov :

Yardımcı bu edepsizliğe baktı ve dedi ki: 250 tükürük. maaşım ve 75 tükürüğüm. iki küçüğüme ve bu saçmalığı altı ay içinde yeniden yazacağız ya da çöpe atacağız.

bu doğru çözüm, kuruluma bakılırsa, açıklanan yaklaşımla her zaman GPU ile ilgili sorunlar olacaktır.

 
MrBrooklin :

Global değişkenlerle ilgili tüm mesajları okudum ve bu tartışmadaki tüm katılımcıların bana tam olarak ne iletmek istediğini anladım. Global değişkenleri kullanmamaya çalışarak program kodu yazmayı öğreneceğim. Tüm yapıcı tavsiyeler için teşekkürler!

Saygılarımla, Vladimir.

Programcılar, değerlerini değiştirirken oluşan hatalardan dolayı global değişkenleri kullanmaktan korkarlar. Her işlev onları değiştirebileceğinden, hatanın yerelleştirilmesi zor olduğunda bir durum oluşturulur. Doğal olarak, global kapsamda yalnızca tüm program işlevlerinin görmesi gereken değişkenler bulunmalıdır. Başka bir şekilde olamaz.

Global değişkenleri kullanmayı her zaman sevmişimdir, çünkü bunlar işlevselliğin hızla artmasını ve programın devasa, aktif bir inşaat sahasına dönüşmesini sağlar. Kodu yazma şeklim sıklıkla kınandı, ancak inşaat bunun içindir, binanın inşaatıyla ilgili ana iş tamamlandıktan sonra temizlik getirilir ve ev inşa edildiğinde, yüzleşmeye, boyamaya, temizlemeye başlayabilirsiniz. bölge. O zamana kadar kalıp montajı ve beton dökümü öncelikli olmaya devam ediyor.)

Ancak, programcılar farklı düşünüyor. İki buçuk satır uzunluğunda olsa bile kodlarını "yıkayacak" ve "temizleyecekler". "Martı burnu" olan bir program, ancak parlayacaklar ... yeni bir madeni para gibi.)) Koda böyle bir tutum, içinde yaşadıkları meslekleri tarafından doğrulanıyor, ancak yaratıcı bir bakış açısıyla, sıkıştırılmış ve kötü gelişir. İşte böyle ortaya çıkıyor...

Tavsiyem: doğru yazmayı öğrenin, ancak bazen daha çeşitli bir deneyim yaşamak için kurallardan sapmanıza ve denemelere izin verin. Bu, öğrenmeye yardımcı olacak ve materyali hızlı bir şekilde öğreneceksiniz.
 
MrBrooklin :

MQL5 programlama dilini öğrenmeye devam ediyorum. Yine bu konudaki katılımcılardan gelen ipuçlarını dikkate alarak değiştirilmiş script kodunu yayınlıyorum. Komut dosyası tüm modlarda test edilmiştir. Herhangi bir sorun tespit edilmedi. Başlangıç olarak, minimum sayıda giriş parametresi uyguladım. Senaryo kodu İngilizce olarak yazılmıştır ve materyalin özümsenmesini kolaylaştırmak için koda yapılan yorumlar Rusça'dır. Bu senaryoda, daha önce söz verdiğim gibi, bir programlama okulunun 1. sınıf öğrencisinin erişebileceği bir sunumda her şeyi açıklamaya çalıştım.

Umarım şimdi tam olarak bu konunun katılımcılarının bana anlattığı gibi yaptım, ama yanılıyor olabilirim.

Saygılarımla, Vladimir.

bool yeterli_zaman global değişkenini nasıl ve nereye taşıyacağınızı bulmanız harika. ilerleme kaydediyorsun.
 
Реter Konow :
bool yeterli_zaman global değişkenini nasıl ve nereye taşıyacağınızı bulmanız harika. ilerleme kaydediyorsun.

Bana verdiğin destek ve yardım için teşekkür ederim Peter. Bu konuda daha önce katılımcılar tarafından bana verilen ipuçları sayesinde global değişkenleri fonksiyonun içine taşıdım. Artık bilgi kafada biraz organize edildiğinden, yeni olan her şeyi algılamak çok daha kolay hale geliyor.

Saygılarımla, Vladimir.

 

Herkese günaydın ve iyi bir ruh hali!

Programlama alanındaki sevgili uzmanlar! Benimle paylaştığınız tüm ipuçları ve yapıcı tavsiyeler için size en içten teşekkürlerimi sunarım!

Saygılarımla, Vladimir.

 
MrBrooklin :

Herkese günaydın ve iyi bir ruh hali!

Sevgili programlama alanındaki uzmanlar! Benimle paylaştığınız tüm ipuçları ve yapıcı tavsiyeler için size en içten teşekkürlerimi sunarım!

Saygılarımla, Vladimir.


Hızlı ilerliyorsun... :-)
Bunun nedeni, yanılmıyorsam temel yüksek teknik eğitimdir.

 
Aleksey Masterov :

Hızlı ilerliyorsun... :-)
Bunun nedeni, yanılmıyorsam temel yüksek teknik eğitimdir.

Merhaba Alexey! Evet, doğru, üretimdeki süreçlerin otomasyonu ile ilgili Sovyet yüksek teknik eğitimim ve aynı Sovyet zamanlarında ES bilgisayarlarının onarımı ile uğraşan bir organizasyonda elektronik mühendisi olarak iş deneyimim var.

Saygılarımla, Vladimir

 
MrBrooklin :

Merhaba Alexey! Evet, doğru, üretimdeki süreçlerin otomasyonu ile ilgili Sovyet yüksek teknik eğitimim ve aynı Sovyet zamanlarında ES bilgisayarlarının onarımı ile uğraşan bir organizasyonda elektronik mühendisi olarak iş deneyimim var.

Saygılarımla, Vladimir


Bu, sizin için hemen fark edilir, benim için ... fantezileri koda çevirme "sanatı"ndaki hareketinizin seviyesi ve hızı açısından, özellikle son senaryonuzdaki gibi felsefi olanlar !!! :-)
IMHO, böyle bir hızla devam ederseniz, burada bir uzman proggers burnunuzu sileceksiniz... :-)
MetaQuotes MT5 ekibine uzaktan katılmayı isteyin!!!
 
Vasiliy Sokolov :

devam

Odak noktasının işlevler üzerinde olduğu yukarıdaki gönderiden açıktı. Her şey onlara adanmıştı ve onlardan başka hiçbir şey yoktu. Bunun açık bir öznel çarpıtma veya bir tür karmaşık "felsefe" olduğu düşünülebilir. Ancak burada felsefe yoktur. Ve işlevlere bu kadar dikkat edilmesi tesadüfi değildir. Mesele şu ki, programlamada fonksiyon temeldir. Ayrıca matematikte fonksiyon da çok önemli ve temel bir kavramdır. Geçen yüzyılın 20'li yıllarında Alonzo Church, fonksiyonlara dayalı bir hesap sistemi geliştirdi. Lambda hesabı olarak adlandırılmıştır. Bu sistem, hesaplanabilirlik kavramını ve birbirine sıkı sıkıya bağlı bilgisayar hesaplamaları ve matematiği resmileştirdi. Lambda hesabını temel alarak, dünyanın önde gelen programcıları, önde gelen yerin fonksiyonlara verildiği sözde fonksiyonel programlama dillerini geliştirdiler. Örneğin, işlevsel programlama dili Haskell'in bir for döngüsü veya buna benzer bir şeyi bile yoktur. Bunun yerine, istenen değeri hesaplamak için işlevi özel bir şekilde, özyinelemeli olarak çağırmanız önerilir. Yalnızca işlevler verildiğinde ve atama yapılmadan Turing-complete bir programlama dili yazmanın mümkün olduğu kanıtlanabilir. Prosedürel veya OOP dili gibi herhangi bir Turing-complete dilinde mümkün olan her şeyi yazmanın mümkün olacağı bir dildir.

MQL işlevsel bir dil değil, daha ziyade sınıflar tarafından genişletilmiş, güçlü yazım ve zengin bir alana özgü API (aynı işlevler biçiminde, oh sürpriz) ile prosedürel bir dildir. Öte yandan, fonksiyonlar teorisi sağlam bir matematiksel temele dayanır, fonksiyonların olduğu herhangi bir programlama dilini kullanmak için basit ve etkili modeller sunar, bu nedenle fonksiyonları ve arkasındaki matematiksel temeli reddetmek en azından uzak görüşlü değildir. . Bu nedenle, fonksiyonlara çok dikkat ediyorum. Dizi cihazını ne kadar iyi anladığınız önemli değil, bazı veri türlerinde hata yapmanız önemli değil. Bu hızlı bir şekilde düzeltilir ve düzeltilir. Ancak işlevleri ve birbirleriyle nasıl ilişkili olduklarını anlamazsanız, ortalama bir programcı bile işinize yaramaz.

Böylece, normal olarak nasıl prog yapılacağını öğrenmek için, yani. programınızın işlevselliğini zamanla doğrusal olarak genişletin, aşağıdakileri öğrenmeniz gerekir:

  • MetaTrader 4.5 olay modelini açıkça (belki tamamen değil ama açıkça gerekli) sunun.
  • Sistem fonksiyonları ile çalışabilme. Sonuçlarını kendi fonksiyonlarınızda genelleştirin. Sistem işlevi çağrılarını kendinizle birleştirin.
  • Kendi fonksiyonlarını yazabilme ve sevebilme.
  • İşlev çağrısı zincirlerini anlayın: örneğin, işlev a() işlevi b() işlevini çağırdığında ve b() c() ve e() işlevini çağırdığında ve e() işlevi c() işlevini çağırdığında.
  • "Saf" işlevler yazabilme ve neden saf işlevler yazmanız gerektiğini anlayabilme. Saf fonksiyonun ne olduğunu daha sonra açıklayacağım.

Fonksiyonlar basit görünüyor. "Bir şeyi incelemenin ne anlamı var. İşte okunacak bir paragraf ve biraz iş. Ve sonra diziler, for, while..." - Hayır, değil. İşlevler gerçekten de görünüşte basit bir şekilde düzenlenmiştir (ve sorun değil). Ancak problemleri gerçekten verimli bir şekilde çözebilmeleri için fonksiyonların belirli özelliklere sahip olması ve birbirleriyle belirli bir şekilde birleşmesi gerekir . Bütün bunlar nasıl yapılır, daha sonra yazacağım.

Merhaba Vasili! Lütfen size zor gelmiyorsa fonksiyonun özellikleri ile ilgili bir devam yazınız. Fonksiyonların belirli özelliklere sahip olması ve birbirleriyle belirli bir şekilde birleşmesi gerektiğini bilmek benim için olduğu kadar programlamaya yeni başlayanlar için de çok önemli ve faydalı.

Fonksiyonlarla ilgili tüm mesaj bloklarınız zaten benim için tek bir Word dosyasında toplandı.

Saygılarımla, Vladimir.

 
Aleksey Masterov :

... Metaquotes MT5 ekibine uzaktan katılmayı isteyin!!!

Alexey, şaka mı yapıyorsun? Evet, önce temel bilgileri öğrenmek istiyorum!

Saygılarımla, Vladimir.

Neden: