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

 
Реter Konow :
Acemiyi onun için gereksiz bilgilerle bombaladılar.))

Bilginin yararlı olup olmadığına yeni başlayanlar karar verir.

Vasili Sokolov :

Güzel söyledin bilgilendirici teşekkürler

 
Alexey Viktorov :

Bu, arzularınızın bu şekilde reklamını yapmanıza gerek olmadığını gösterir. Aynı başarı ile Vladimir, C ++ öğrenmek veya montajcı öğrenmek gibi "uzmanların" saçmalıklarını değil, özellikle belirli bir işlev hakkında sorular sorabilir ve faydalı tavsiyeler alabilir. Delikli kartları inceleyerek başlayabilirsin.

Ben tamamen TS'nin planına göre öğrenmesinden yanayım ve başının üstünde "zıplama" değil. Her şeyin bir zamanı var. Ve elbette, MQL'yi ve doğru sırayla öğrenmeniz gerekiyor. Yukarıdaki tüm felsefe (Vasily ve benim tarafımdan) bilgiyi yapılandırmaya yardımcı olabilir, ancak boşluğu değil. Bu arada öğrenci öğrenmenin en başındadır, boşluğu bizim felsefi notasyonlarımıza göre yapılandırmaya çalışmak zorundadır.

Ders kitabına geri dönecekler ve şimdilik her türlü önemli konuyu unutacaklar - ihtiyacınız olan şey bu.
 
Vasiliy Sokolov :

Devam ediyoruz:

  • Birçok olay olduğundan, birçok olay işleyicisi vardır. Olaylar tutarsız olarak adlandırıldığından, işleyicileri de tutarsız olarak adlandırılır. Çağrı tutarsızlığı olduğu için olay işleyicileri birbirlerini kıskanamazlar ve birbirlerinin verilerine de bağımlı olamazlar. Bu katı gereksinimleri karşılayan tek yapı .
  • Fonksiyonlar birbirinden bağımsızdır. Bir işlev a + b'nin toplamını ve ikincisi a * b'nin çarpımını döndürürse, bu iki işlevin sonucu çağrıdaki sıraya bağlı olmayacaktır. İlk fonksiyonu 3 ve 5 argümanlarıyla çağırabilir ve 8'i alabiliriz. Sonra aynı argümanlarla ikinci fonksiyonu alabiliriz ve 24'ü alırız. Sonra onların çağrılarını değiştiririz. Sonuçlar canlı yayına konu olacak. Toplama işlevi, 3 ve 5 bağımsız değişkenleri verildiğinde her zaman 8 döndürür. Çarpma işlevi, aynı bağımsız değişkenler verildiğinde her zaman 24 döndürür.
  • Yukarıdan, yalnızca bir işlevin bir olay işleyicisi olabileceği açıkça ortaya çıkıyor. Yeni bir tick olayı meydana geldiyse, bu amaca özel OnTick fonksiyonu tarafından işlenir. Start olayı (tek seferlik bir komut dosyası başlatma) meydana geldiyse, bunun için özel olan OnStart işlevi tarafından işlenir.
  • İşlev evrenseldir. Olaylardan daha fazlasını işleyebilir. İşlev, geçerli saat gibi yararlı bir şey döndürebilir. Bir fonksiyon, geçtiği argümanlarla karmaşık hesaplamalar yapabilir ve bu hesaplamaların sonucunu tek bir değer olarak döndürebilir. Son olarak, bir işlev bir veri sağlayıcı olabilir: bir işlevi çağırırsınız ve ondan tırnak işaretleri gibi ihtiyacınız olan verileri alırsınız.
  • MetaTrader dahili olarak yaklaşık 1500 bini kullanıcılar tarafından sağlanan binlerce farklı fonksiyondan oluşmaktadır. Bunlar çok kullanışlı özellikler. Sistem zamanını öğrenmenize izin verir, bunlar aracılığıyla istediğiniz enstrüman hakkında veri alabilirsiniz. Fonksiyonlar aracılığıyla ticaret emirleri gönderilir. MKL referans kitabını açabilir ve tamamen işlevlerden ve bunlara ilişkin argümanlardan oluştuğundan emin olabilirsiniz. Onlar. Kullanıcı programları açısından MetaTrader, büyük bir işlevler kümesidir.
  • Yeterli evrensel işlev yok. Sistemde ne kadar yeni özellik görünürse görünsün, her zaman bir eksiklik olacaktır. Bunun nedeni herkesin ihtiyaçlarının farklı olmasıdır. Tüm durumlar için evrensel bir işlev yoktur. En yaygın ve çok yönlü işlevler MetaTrader'a zaten dahil edilmiştir ve bize nazikçe sağlanmıştır. Ancak, kullanıcı ihtiyaçları sonsuzdur. MetaQuotes, terminallerinin 100.000 kullanıcısının bireysel ihtiyaçlarını karşılayamaz. Bunun yerine daha esnek davrandılar: Kullanıcılara ihtiyaç duydukları işlevleri yaratma fırsatı verdiler. Bundan sadece kullanıcılar yararlanır. Kendilerine pek uygun olmayan bir sistem fonksiyonu kullanmak yerine, ideal olarak tam olarak görevlerini çözen kendi fonksiyonlarını yazabilirler. Çok yönlülüğü nedeniyle hiçbir sistem işlevi mükemmel değildir.
  • Kullanıcının kendi fonksiyonlarını ne kadar iyi yazacağını ve yaptığı işin özünü ne kadar iyi anladığını ve programcının ne kadar nitelikli olduğunu gösterir. Programın, gelen olayları sırayla işlemeyen farklı bir işleyiciler kümesi (fonksiyonlar biçiminde) olduğunu anlarsa, bu iyidir. Kendi fonksiyonlarını nasıl yazacağını biliyorsa - başka bir artı. Birkaç işlevin (hem kendisinin hem de sistemin) çalışmasını ortak bir algoritmada birleştirebilirse, bu onun için başka bir artıdır.
  • MetaTrader'da (dördüncü ve beşinci) her şeyin bir şekilde işlevlerle ilgili olduğunu, işlevlere dayalı olduğunu, işlevler üzerinde çalıştığını anlarsanız, aniden her şey netleşir. Yardım artık bir dizi farklı kod parçası içeren kalın bir Talmud olarak değil, mevcut işlevlere ve ne yaptıklarına dair bir kılavuz olarak sunulmaktadır. Veri türleri, diziler, yapılar, sınıflar gibi diğer her şey önemli değildir. Bütün bunlar, bir şeyi iade edebilmeleri ve bir şeyi kabul edebilmeleri için işlevleri desteklemek içindir.

(şimdiye kadar)

Sınıf!!! Vasily, öğretmen olarak doğal bir yeteneğin var. Özellikle tamamen sıfır olanlar için her şey anlaşılır ve anlaşılır. Sergey Kovalev'in "MQL4 Eğitimi" yazdığına benzer bir kitap yazmayı hiç düşündünüz mü, ancak şimdi buna Vasily Sokolov tarafından "MQL5 Eğitimi" denecek mi?

Belki bu konu böyle bir girişime ivme kazandıracaktır , ne düşünüyorsun Vasily?

Saygılarımla, Vladimir.

 
Vasily, diğerlerinden daha önemli olduklarına inanarak, dikkatinizi yalnızca bazı bireysel yönlere odaklar. Örneğin, İşlev veya Etkinlik. S. Kovalev'in işlevleri hakkında okuyun ve daha az (ve hatta daha fazla) ayrıntılı ve erişilebilir açıklama bulacaksınız, ancak bunlara odaklanmadan diğer konuların zararına. Bu nedenle ders kitabını okumalısınız.

Evet, Vasily çok iyi yazdı, ancak öznel anlayışıyla biraz "çarpık".

"Benden öğren, nasıl doğru yapılacağını biliyorum!" demiyorum, "ders kitabından öğren ve doğru temeli al ve konuyla ilgili şu anda beni neyin heyecanlandırdığına dair aceleyle formüle ettiğim kavramları değil" diyorum. "

not Ancak, size kalmış.
 
Реter Konow :
Vasily, diğerlerinden daha önemli olduklarına inanarak, dikkatinizi yalnızca bazı bireysel yönlere odaklar. Örneğin, İşlev veya Etkinlik. S. Kovalev'in işlevleri hakkında okuyun ve daha az (ve hatta daha fazla) ayrıntılı ve erişilebilir açıklama bulacaksınız, ancak bunlara odaklanmadan diğer konuların zararına. Bu nedenle ders kitabını okumalısınız.

Evet, Vasily çok iyi yazdı, ancak öznel anlayışıyla biraz "çarpık".

"Benden öğren, nasıl doğru yapılacağını biliyorum!" demiyorum, "ders kitabından öğren ve doğru temeli al ve konuyla ilgili şu anda beni neyin heyecanlandırdığına dair aceleyle formüle ettiğim kavramları değil" diyorum. "

not Ancak, size kalmış.

Peter, sana ve Vasily'ye birlikte iyi bir iş yapıp MQL5 üzerine böyle bir kitap yazmanızı önerebilirim.

Kitap yazmak, insanlık tarihine, özellikle de programlama tarihine iz bırakmanın en iyi yoludur . Düşünmek!

Saygılarımla, Vladimir.

 
MrBrooklin :

Peter, sana ve Vasily'ye birlikte iyi bir iş yapıp MQL5 üzerine böyle bir kitap yazmanızı önerebilirim.

Kitap yazmak, insanlık tarihine, özellikle de programlama tarihine iz bırakmanın en iyi yoludur . Düşünmek!

Saygılarımla, Vladimir.

Öneriniz için teşekkürler, ancak Vasily, böyle bir kitapta ihtiyaç duyulan klasik yaklaşım açısından beni kolayca "yenecek". Kendimden, programlama prizması aracılığıyla dinamik etkileşimlerinde Nesne ve Çevre hakkında yalnızca soyut bir anlayış sunabilirim, ancak bu son bölüm olacak.))))
 
Реter Konow :
Öneriniz için teşekkürler, ancak Vasily, böyle bir kitapta ihtiyaç duyulan klasik yaklaşım açısından beni kolayca "yenecek". Kendimden, programlama prizması aracılığıyla dinamik etkileşimlerinde Nesne ve Çevre hakkında yalnızca soyut bir anlayış sunabilirim, ancak bu son bölüm olacak.))))

Açık. Şimdi Vasily'nin kitap yazma teklifim hakkındaki fikrini öğrenmek istiyorum.

Şu anda "Evrensel Uzman Danışman: Özel İzleyen Duraklarla Çalışma (Bölüm 6)" adlı makalesini inceliyorum.

Saygılarımla, Vladimir.

 

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. Gerçek şu ki, programlamada bir fonksiyon temel öneme sahiptir. 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. "Ve çalışılacak ne var. İşte okumak ve iş yapmak için bir paragraf. Ve sonra diziler, süre için..." - 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.

 
MrBrooklin :

Açık. Şimdi Vasily'nin kitap yazma teklifim hakkındaki fikrini öğrenmek istiyorum.

Şu anda "Evrensel Uzman Danışman: Özel İzleyen Duraklarla Çalışmak (Bölüm 6)" adlı makalesini inceliyorum.

Saygılarımla, Vladimir.

Değil. Kitap olmayacak. Belki birkaç makale. Ama yakın gelecekte kesinlikle değil.

 
MrBrooklin :

Peter, sana ve Vasily'ye birlikte iyi bir iş yapmanızı ve MQL5 hakkında böyle bir kitap yazmanızı önerebilirim.

Bu kesinlikle olası değildir. Peter'la çok farklı görüşlerimiz var. Ne kadar farklı olduğunu görmek için bazı kodlarımıza bakabilirsiniz)