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

 
İlk hedef en basit sondaki durdurmayı uygulamaksa, betiği for ve while döngülerini ekleyerek yazmaya devam etmelisiniz.

"Yeterli sabır" komut dosyasının mantıksal bir uzantısı olup olmadığından emin değil. Aşağıdakilerin varlığının uygulanmasını gerektiren yeni bir fikre geçmek muhtemelen daha iyidir:

1. if-else koşullarının ağacı.
2. Tahmini fonksiyonlar.
3. Döngüler.

Algoritmik ticaret alanında çalışmanız gerekeceğinden, komut dosyasının bir ticaret stratejisi ile ilişkilendirilmesi daha uygundur. Düşünmek.

 
Döngülerin özünün daha iyi anlaşılması için:

Döngü, gövdesinde kapalı olan bir kod bölümünden tekrar tekrar geçmenizi sağlar. Her geçişin sonuçları diğer geçişlerin sonuçlarından farklı olacaktır çünkü çağrılan değişkenlerin/fonksiyonların değerleri her birinde farklılık gösterebilir. Döngünün yineleme sayısı programcı tarafından, bir değişkenin değeri veya bir fonksiyon tarafından belirlenir - belirli koda bağlıdır.
 
MrBrooklin :

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

Saygılarımla, Vladimir.


Fazla değil. Dinamiklere, temelinize, teorinize ve pratiğinize bakılırsa, bu sizin başlangıç ve bitiş profiliniz. Öyleyse neden olmasın... şimdi değil, biraz sonra. . . Rahat ettiğinizde ve sizin için kodla birlikte olacak.
 
Реter Konow :
İlk hedef en basit sondaki durdurmayı uygulamaksa, betiği for ve while döngülerini ekleyerek yazmaya devam etmelisiniz.

"Yeterli sabır" komut dosyasının mantıksal bir uzantısı olup olmadığından emin değil. Aşağıdakilerin varlığının uygulanmasını gerektiren yeni bir fikre geçmek muhtemelen daha iyidir:

1. if-else koşullarının ağacı.
2. Tahmini fonksiyonlar.
3. Döngüler.

Algoritmik ticaret alanında çalışmanız gerekeceğinden, komut dosyasının bir ticaret stratejisi ile ilişkilendirilmesi daha uygundur. Düşünmek.

New7.mq5 betiğini sonla donatma arzumu desteklediğin için teşekkür ederim Peter, özellikle şimdi döngüleri incelemeye başladım. Bu arada, uyku işlevinin komut dosyasında nasıl çalıştığını zaten denedim. Bu işlevin bir takip eden durak yazarken kullanılması önerildi. Nereden başlamalı? Muhtemelen, ilk başta tüm takip eden algoritmayı kelimelerle tanımlamak ve ardından kod yazmaya geçmek daha mı iyidir?

Saygılarımla, Vladimir.

 
Aleksey Masterov :

Fazla değil. Dinamiklere, temelinize, teorinize ve pratiğinize bakılırsa, bu sizin başlangıç ve bitiş profiliniz. Öyleyse neden olmasın... şimdi değil, biraz sonra. . . Rahat ettiğinizde ve sizin için kodla birlikte olacak.

Alexey, bana olan inancın için teşekkür ederim. Sadece bizi hayal kırıklığına uğratmamak için kalır!

Saygılarımla, Vladimir.

 
MrBrooklin :

New7.mq5 betiğini sonla donatma arzumu desteklediğin için teşekkür ederim Peter, özellikle şimdi döngüleri incelemeye başladım. Bu arada, uyku işlevinin komut dosyasında nasıl çalıştığını zaten denedim. Bu işlevin bir takip eden durak yazarken kullanılması önerildi. Nereden başlamalı? Muhtemelen, ilk başta tüm takip eden algoritmayı kelimelerle tanımlamak ve ardından kod yazmaya geçmek daha mı iyidir?

Saygılarımla, Vladimir.

Nesnel olarak konuşursak, bir komut dosyasında basit bir sondaki durak yazılamaz. Açıklamama izin verin: takip kendi başına bir "vakumda" yoktur, açık bir pozisyona "bağlıdır", bu da bir stratejiye "bağlıdır" ve bu sadece bir Uzman Danışmanda uygulanır. .

Bir komut dosyasında izlemeyi uygulamanın sorunu ve karmaşıklığı, bir döngüde açık konumlar ve bunların sıraları hakkında bilgi toplamanız ve ardından istenen sembol üzerinde istenen sırayı seçip onu nasıl değiştireceğinizi bulmanız gerekmesidir. Bu karmaşık ve kafa karıştırıcıdır, ancak Expert Advisor'da her şey çok daha basittir. İlk olarak, hangi sıranın değiştirilmesi gerektiğini zaten bileceksiniz ve ikincisi, OnTick olayı geldiği için ne zaman değiştireceğinizi bileceksiniz.

Ve böylece scriptte bir gecikme belirlersiniz, o zaman çalışır, bir pozisyon açılır ve stop izlenebilir... Bunun için gerekenler:

1. Komut dosyasını döngüye alın.
2. Mevcut sembol üzerinde fiyat değişikliği olayını sabitlemek için bir fonksiyon yazın.
3. Bir durdurma emri değiştirme fonksiyonu yazın.
4. Bir pozisyonu kapattıktan sonra betiği boşaltmak (sonsuz döngüden çıkmak) için bir koşul yazın.

Senaryonun planını kabaca özetledi, ancak bunun hakkında daha ciddi düşünmeniz gerekiyor.

not Uyku işlevi, gerektiğinde kod yürütülmesini geciktirmek için kullanılır. Örneğin, sunucuya istekte bulunurken veya bir olay beklerken. Sondaki bir komut dosyasında, bu işleve şüphesiz ihtiyaç duyulacaktır.
 
Реter Konow :
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.

Öyle bir gözlem var ki, bir kez koltuk değneğine basmaya başlayınca daha sonra durmak zor oluyor, sonuç olarak proje kodu o müstehcenliğe dönüşüyor, buna g..code deniyor.

Açıklarım:

  1. Ara çalışma çözümüne sahip bir proje var ve uygulanan özelliklerin sayısı = 0.
  2. Bir görev var - ++ sayımı özelliğini dosyalamak.
  3. Bir özelliği vidalamak için ihtiyacınız olan:
    • nesneler ağacında, yöntemleri yazın ve olay işleyicilerde her şeyi mantıkla bağlayın (tahmini süre 3 saat * sayı ; sayı = 0)
    • global değişken olarak bir koltuk değneği yazın ve ihtiyaç duyduğumuz birkaç yöntemle çekin (yaklaşık süre 15 dk * sayım.)
  4. Otomatik numaralandırma hatası (bu, meta alıntılar için bir hata raporudur ).
  5. Doğal olarak, koltuk değneği seçeneği seçildi (bu durumda kendinizi çalışmaya zorlamak gerçekten zor)
  6. eğer (biz yaptık) 2'ye git
  7. yoksa her şey cehenneme gitti, yardım edin diye bağırırız ve bunu nasıl yapamayacağınıza dair komik yorumları okuruz.

Umarız uygulanan özelliklerin sayacının bir sonraki özelliğin uygulama süresini artırdığını fark etmişsinizdir, ancak doğru uygulandığında bundan sonra sıfırlanıyor mu?

Tabii ki çok abartılı, ama gerçek hayatta olan tam olarak bu.

Demek istediğim bu, tüm özellikler girdikten sonra projeyi yeniden yazmayın, bu yüzden okunamaz bir ayak örtüsü ile üretime geçecektir. Ve sonra, herhangi bir projenin yaşam döngüsü, yönetim için bir baş ağrısına yol açar: ya tüm ekibi, batırdıkları her şeyi küresel olarak yeniden düzenlemeye sokun (ve rakipler uyumuyor, yeni özellikler gören çok kötü insanlar), veya sürekli akışa tırmanan koltuk değneği ve yama hataları yazmaya devam edin.

 
Реter Konow :
Nesnel olarak konuşursak, bir komut dosyasında basit bir sondaki durak yazılamaz. Açıklamama izin verin: takip kendi başına bir "vakumda" yoktur, açık bir pozisyona "bağlıdır", bu da bir stratejiye "bağlıdır" ve bu sadece bir Uzman Danışmanda uygulanır. .

Bir komut dosyasında izlemeyi uygulamanın sorunu ve karmaşıklığı, bir döngüde açık konumlar ve bunların sıraları hakkında bilgi toplamanız ve ardından istenen sembol üzerinde istenen sırayı seçip onu nasıl değiştireceğinizi bulmanız gerekmesidir. Bu karmaşık ve kafa karıştırıcıdır, ancak Expert Advisor'da her şey çok daha basittir. İlk olarak, hangi sıranın değiştirilmesi gerektiğini zaten bileceksiniz ve ikincisi, OnTick olayı geldiği için ne zaman değiştireceğinizi bileceksiniz.

Ve böylece scriptte bir gecikme belirlersiniz, o zaman çalışır, bir pozisyon açılır ve stop izlenebilir... Bunun için gerekenler:

1. Komut dosyasını döngüye alın.
2. Mevcut sembol üzerinde fiyat değişikliği olayını sabitlemek için bir fonksiyon yazın.
3. Bir durdurma emri değiştirme fonksiyonu yazın.
4. Bir pozisyonu kapatırken komut dosyasını boşaltmak (sonsuz döngüden çıkmak) için bir koşul yazın.

Senaryonun planını kabaca özetledi, ancak bunun hakkında daha ciddi düşünmeniz gerekiyor.

not Uyku işlevi, gerektiğinde kod yürütülmesini geciktirmek için kullanılır. Örneğin, sunucuya istekte bulunurken veya bir olay beklerken. Sondaki bir komut dosyasında, bu işleve şüphesiz ihtiyaç duyulacaktır.

Peter, yani sondaki kodu senaryoda mı oluşturuyoruz? İyi! Şimdi temel bölümler olarak listelediklerini alıyorum ve onları kelimelerle açıklamaya başlıyorum, böylece daha sonra fonksiyonları, döngüleri vb. nasıl yazmam gerektiği açık. Her şey yolunda mı?

Saygılarımla, Vladimir.

 
MrBrooklin :

Peter, yani sondaki kodu senaryoda mı oluşturuyoruz? İyi! Şimdi temel bölümler olarak listelediklerini alıyorum ve onları kelimelerle açıklamaya başlıyorum, böylece daha sonra fonksiyonları, döngüleri vb. nasıl yazmam gerektiği açık. Her şey yolunda mı?

Saygılarımla, Vladimir.

Evet bu doğru.
 
Vladimir Simakov :

Öyle bir gözlem var ki, bir kez koltuk değneğine basmaya başlayınca daha sonra durmak zor oluyor, sonuç olarak proje kodu o müstehcenliğe dönüşüyor, buna g..code deniyor.

Açıklarım:

  1. Ara çalışma çözümüne sahip bir proje var ve uygulanan özelliklerin sayısı = 0.
  2. Bir görev var - ++ sayımı özelliğini dosyalamak.
  3. Bir özelliği vidalamak için ihtiyacınız olan:
    • nesneler ağacında, yöntemleri yazın ve olay işleyicilerde her şeyi mantıkla bağlayın (tahmini süre 3 saat * sayı ; sayı = 0)
    • global değişken olarak bir koltuk değneği yazın ve ihtiyaç duyduğumuz birkaç yöntemle çekin (yaklaşık süre 15 dk * sayım.)
  4. Otomatik numaralandırma hatası (bu, meta alıntılar için bir hata raporudur ).
  5. Doğal olarak, koltuk değneği seçeneği seçildi (bu durumda kendinizi çalışmaya zorlamak gerçekten zor)
  6. eğer (biz yaptık) 2'ye git
  7. yoksa her şey cehenneme gitti, yardım edin diye bağırırız ve bunu nasıl yapamayacağınıza dair komik yorumları okuruz.

Umarız uygulanan özelliklerin sayacının bir sonraki özelliğin uygulama süresini artırdığını fark etmişsinizdir, ancak doğru uygulandığında bundan sonra sıfırlanıyor mu?

Tabii ki çok abartılı, ama gerçek hayatta olan tam olarak bu.

Demek istediğim bu, tüm özellikler girdikten sonra projeyi yeniden yazmayın, bu yüzden okunamaz bir ayak örtüsü ile üretime geçecektir. Ve sonra, herhangi bir projenin yaşam döngüsü, yönetim için bir baş ağrısına yol açar: ya tüm ekibi, batırdıkları her şeyi küresel olarak yeniden düzenlemeye sokun (ve rakipler uyumuyor, yeni özellikler gören çok kötü insanlar), veya sürekli akışa tırmanan koltuk değneği ve yama hataları yazmaya devam edin.

Merhaba Vladimir! Senden büyük, hatta çok büyük bir isteğim var! Bu mesaj çoğunlukla Peter'a yönelik olmasına rağmen, mesajlarınızı tam olarak anlamak için argo olmadan yazmanızı rica ediyorum, yani. bir programlama okulunun 1. sınıfındaki bir öğrencinin erişebileceği bir dilde, çünkü sıfırdan başlayanlar için tema.

Saygılarımla, Vladimir.

Neden: