danışman projesi - sayfa 2

 
Vasiliy Sokolov :

Parantezleri yeniden düzenlemek onu daha az saçma yapmaz. Tavsiye vermeden önce - seviyenizi en azından ortalamaya yükseltin.

Seviyemde sorun ne?

 
STARIJ :

Yorum, program metninin yarısını işgal etmelidir.

Genelde bazı şeyler yazarım - önce uzun yorumlar "burada ne olmalı" ve sonra aralarında onu uygulayan kod :-) bu arada, yeni başlayanlara benzer bir yaklaşım kullanmalarını tavsiye ederim
 
Maxim Kuznetsov :
Genelde bazı şeyler yazarım - önce uzun yorumlar "burada ne olmalı" ve sonra aralarında onu uygulayan kod :-) bu arada, yeni başlayanlara benzer bir yaklaşım kullanmalarını tavsiye ederim
İlk olarak, işlevin ne yapacağını ve geri döneceğini (bir şey) açıklayan bir saplama. Daha sonra kod
 
Vitaly Muzichenko :

Bu tarzda her zaman sabit olan ve asla değişmeyen fonksiyonlar yazmayın.

Bunları kısaca yazın, zaten kimse onlara bakmaz ve bu satırların yarısını alır


Sürekli olarak kod hakkında yorum yapın, bu kod parçasının neden sorumlu olduğu, zor değil ve sonlandırırken, kodun ne olduğunu her zaman bileceksiniz ve çalışma süresini azaltacaksınız.


Vitaly, doğru mu anladım, 12" laptop ekranınız var mı?

Eski zamanlarda, 24 satır x 80 karakter alfanümerik ekrana sahip bir CV-1420'de hatırlıyorum, ayrıca yerden tasarruf etmeye çalıştım)) Şimdi bir şekilde daha hızlı anlayacağım şekilde yazmaya çalışıyorum.

 
Vitaly Muzichenko :

Bu tarzda her zaman sabit olan ve asla değişmeyen fonksiyonlar yazmayın.

Bunları kısaca yazın, zaten kimse onlara bakmaz ve satırlar bunun yarısını alır.


Sürekli olarak kod hakkında yorum yapın, bu kod parçasının neden sorumlu olduğu, zor değil ve sonlandırırken, kodun ne olduğunu her zaman bileceksiniz ve çalışma süresini azaltacaksınız.

Ve sonra, alttaki 4 parantezin ne anlama geldiğini gözlerinizle araştırın. Bu çok kötü bir kod stili. Genel olarak, MS en iyisine sahiptir ve MQ'nun K & R tarzına sahip olduğu gerçeği, takip etmek için bir neden değildir. Delikli kartların ve 80x24 monitörlerin günleri geride kaldı.

 void CloseOrders( int cmd) {
 for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--) {
   if ( OrderSelect (i, SELECT_BY_POS )) {
   if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic) {
     if ( OrderType ()== OP_BUY && cmd== OP_BUY ) {
     if (! OrderClose ( OrderTicket (), OrderLots (), Bid ,Slippage,Blue)) Print ( "Order BUY not close! Error = " , GetLastError ());
    }
     if ( OrderType ()== OP_SELL && cmd== OP_SELL ) {
       if (! OrderClose ( OrderTicket (), OrderLots (), Ask ,Slippage,Red)) Print ( "Order SELL not close! Error = " , GetLastError ());
    }
}}}}
Vasili Sokolov :
Hayır, o zaman kodun hemen% 90'ı yorumlardır. Aynı zamanda, daha fazla yorum koyabilmeniz için mümkün olduğunca anlamsız ve zayıf okunabilir koda ihtiyacınız var!

Ancak yaşlılıkta yorumları "Forex ve Ben") şeklinde yayınlamak mümkün olacak)))) Hayır, böyle daha iyi - "Ben ve Forex"

 
Alexey Volchanskiy :

Ve sonra, alttaki 4 parantezin ne anlama geldiğini gözlerinizle araştırın. Bu çok kötü bir kod stili. Genel olarak, MS en iyisine sahiptir ve MQ'nun K & R tarzına sahip olduğu gerçeği, takip etmek için bir neden değildir. Delikli kartların ve 80x24 monitörlerin günleri geride kaldı.


Ancak yaşlılıkta yorumları "Forex ve Ben") şeklinde yayınlamak mümkün olacak)))) Hayır, böyle daha iyi - "Ben ve Forex"

Çalışma ekranı 27"

Yazıyı tekrar okumayacağım, alıntı yapacağım: " Bu tarzda her zaman sabit olan ve asla değişmeyen fonksiyonlar yazmayın "

Platform yayınlandığında bir kez yazılan ve gelecekte asla değişmeyecek bir fonksiyona neden gözünüzü dikiyorsunuz? Parti büyüklüğünü,sipariş sayısını ve tipik olanları almak için işlevlerdeki kodu sık sık değiştiriyor/düzenliyor musunuz? O zaman neden 32" bir monitörün 3 ekranına uzatalım?

PS Kod eklenmiştir, kod tabanından alınmıştır.

 
Vitaly Muzichenko :

27" çalışma ekranı

Yazıyı tekrar okumayacağım, alıntı yapacağım: " Bu tarzda her zaman sabit olan ve asla değişmeyen fonksiyonlar yazmayın "

Platform yayınlandığında bir kez yazılan ve gelecekte asla değişmeyecek bir fonksiyona neden gözünüzü dikiyorsunuz? Parti büyüklüğünü,sipariş sayısını ve tipik olanları almak için işlevlerdeki kodu sık sık değiştiriyor/düzenliyor musunuz? O zaman neden 32" bir monitörün 3 ekranına uzatalım?

Yani yattıkları dosya her üç yüz yılda bir aynı şekilde açılıyor.

Ama açıldığında - git yığında bul }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} }}}} ne var ne için.

Yazdıysan, test ettiysen ve depolama için bir kütüphaneye veya sınıfa gönderdiysen neden kendin için bir tuzak yazıyorsun. Her şey. Ama orada ne olduğuna dair hafızanızı tazelemeniz gerektiğinde (temelde bir şeyler yapabilir, ama asla bilemezsiniz ... başka eklemeniz gerekir) - oturun, parantezleri hareket ettirin ...

 
Vitaly Muzichenko :

Çalışma ekranı 27"

Yazıyı tekrar okumayacağım, alıntı yapacağım: " Bu tarzda her zaman sabit olan ve asla değişmeyen fonksiyonlar yazmayın "

Platform yayınlandığında bir kez yazılan ve gelecekte asla değişmeyecek bir fonksiyona neden gözünüzü dikiyorsunuz? Parti büyüklüğünü,sipariş sayısını ve tipik olanları almak için işlevlerdeki kodu sık sık değiştiriyor/düzenliyor musunuz? O zaman neden 32" bir monitörün 3 ekranına uzatalım?

PS Kod eklenmiştir, kod tabanından alınmıştır.

Vitaliy, fonksiyonunun ilk varyantında hangi kapatma braketinin hangi açılış braketine ait olduğu belli, ikinci varyantta ise bir çift arayışı içinde gözlerinizi kıracaksınız...

Kural olarak, kullanıcı tanımlı fonksiyonlar ekrana sığmayacak kadar büyük değildir. Ve derlenmiş Expert Advisor'da, parantezlerin oraya nasıl yerleştirildiği gerçekten önemli değil.

 
Artyom Trishkin :

Yani yattıkları dosya her üç yüz yılda bir aynı şekilde açılıyor.

Ama açıldığında - git yığında bul }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} }}}} ne var ne için.

Yazdıysan, test ettiysen ve depolama için bir kütüphaneye veya sınıfa gönderdiysen neden kendin için bir tuzak yazıyorsun. Her şey. Ama orada ne olduğuna dair hafızanızı tazelemeniz gerektiğinde (belki yapılacak bir şey temelinde, ama asla bilemezsiniz ...) - oturun, parantezleri hareket ettirin ...

Hayır, dosyada hiçbir şey yok, açgözlü değilim ve arkadaşlarımla çok sık program paylaşıyorum ve arşiv göndermek yerine sadece bir dosya gönderiyorum.

Tüm işlevler altta ayrı ayrı yer alır, ancak yürütme kodu her zaman iyi yazılmış ve yorumlanmıştır ve çocuk onu orada çözecektir.

 
Gregory Kovalenko :
Merhaba.
Kod miktarının artması ile bazen zorluklar ve kafa karışıklığı ortaya çıkmaktadır.
EA kodunu çok sayıda kod satırıyla gördüm, EA'ların ne kadar karmaşık tasarlandığını merak ediyorum, belki bu kadar karmaşık algoritmalarla çalışmak için bazı araçlar veya teknikler vardır?

Herhangi bir Expert Advisor'da birkaç bin satır kodum var. (İçerenler aracılığıyla otomatik olarak etkinleştirilirler.)

Aslında EA , OnInit , OnTick ve diğer işlevleri içeren CExpert şablon sınıfından oluşur. Dahil edilen EA şablonunda, tüm genel olay işlevleri, bu türdeki bir nesnenin karşılık gelen işlevlerini çağırır.

Başlatma sırasında - CExpert, iş için gerekli her şeyi oluşturabilen önceden tanımlanmış bir global işlev aracılığıyla "uzman parça fabrikası" ister.

Aynı zamanda, danışman dosyasının kendisi beş satırdan oluşur. Bu dosya, uzmanın parça fabrikası nesnesinin kendisini bildirir ve içeriği içerir.

Şahsen, sanal arayüzlere ve uygulamaya bölünme ile OOP yaklaşımını gerçekten seviyorum. İlk olarak, tüm fonksiyonların sanal olduğu ve sıfıra eşit olduğu soyut bir sınıf olan arayüz dosyasını tanımlıyoruz. Bu sınıf "etkileşim protokolünü" tanımlar. Ve sonra, ondan - tüm bu işlevlerin tamamen uygulandığı gerçek sınıflar miras alınır (bazen - işlevlerin tanımı "seviyelere göre" aralıklı olduğunda tüm bir sınıf hiyerarşisi elde edilir).

Bu yaklaşım, tüm projenin daha fazla desteklenmesini ve sınıfların yeniden kullanılmasını büyük ölçüde kolaylaştıran varlıkları ayırmanıza olanak tanır.