danışman projesi

 
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?
 
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?

Peki bu ne kadar... Dosyalara bölemeyecek kadar çok mu?

 
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?
Evet, her şey çok basit: Tek tek işlevleri doğru bir şekilde belgelemeniz ve bunları ayrı bir dosyaya ayırmanız gerekiyor. Ana dosya hemen küçülecek ve daha okunabilir hale gelecektir.
 

İki ana ilke:

1. Kodu işlevlere bölün. Bir işlev, bir bakışta kapsayabilmek için az çok mantıksal olarak eksiksiz olmalı ve birden fazla ekran olmamalıdır.

2. Genel değişkenlerin sayısını azaltın. Global değişkenlerden sadece program çalışması sırasında değişmeyen parametrelerin kullanılması arzu edilir.

...ve ilerisi:

3. Nesneye yönelik programlama.

4. Kodu birkaç dosyaya yerleştirme (hata ayıklama burada biraz daha karmaşık hale gelir, ancak mantıklıdır).

 
STARIJ :
Evet, her şey çok basit: Tek tek işlevleri doğru bir şekilde belgelemeniz ve bunları ayrı bir dosyaya ayırmanız gerekiyor. Ana dosya hemen küçülecek ve daha okunabilir hale gelecektir.

Her zaman bir mq4/mq5 dosyam ve sınıfları olan bir grup mqh dosyam vardır, her sınıfın ayrı bir dosyası vardır. Genel olarak, endüstriyel gelişmede, tam olarak yaptıkları şey budur. Her şeyin serpiştirildiği tıka basa dolu kilometre dosyaları yok.

Ve sonra bazen tüm danışman OnTick'e sığdığında başyapıtlarla karşılaşırsınız, bu çirkin sayfada siparişleri 20 kez açmak için aynı kod parçaları vardır. Hemen bir kusmuk torbası almak istiyorum))

 
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?

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

 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 ());
                 }
              }
           }
        }
     }
  }

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

 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 ());
    }
}}}}


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 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.

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

 
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.

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

 
STARIJ :

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

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!
 
Vasiliy 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!

Fikirleriniz de ilgiyi hak ediyor. Onları tartışmak için getirin

 

Uzun zamandır sormak istiyordum. MKL5'te dahil edilen dosyalardan, sınıflardan gösterge verileri alırsak, optimizasyon daha hızlı olur mu?

Yani, EA'nın kendi kodunda hiçbir gösterge tutamacı çağrılmaz.