MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 26

 
trader781 :

Şimdi, kodunuzu taradıktan sonra, sizin için daha okunaklı hale gelecektir, mantığınızı anlaması gereken diğer kişilerden bahsetmiyorum bile. Bütün sürüler orada görünecek.

tamam, bu daha mı iyi?
Ve şimdi fazladan kaşlı ayraçları çıkarın ve gerisini normal olarak bloklar halinde düzenleyin ve pervazlarınızın mantıkta nerede olduğunu göreceksiniz.
 
Artyom Trishkin :
Ve şimdi fazladan kaşlı ayraçları çıkarın ve gerisini normal olarak bloklar halinde düzenleyin ve pervazlarınızın mantıkta nerede olduğunu göreceksiniz.
hangileri gereksiz
 
trader781 :
hangileri gereksiz
Kodunuzda çok fazla fazladan var - kodu bir şekillendirici ile işleyin ve hemen fazladan boş kaşlı ayraçlar göreceksiniz.
 
Artyom Trishkin :
Kodunuzda çok fazla fazladan var - kodu bir şekillendirici ile işleyin ve hemen fazladan boş kaşlı ayraçlar göreceksiniz.
Yapılmış
Dosyalar:
 
trader781 :
Yapılmış
Daha sonra bakacağım - işler yaklaşık dört saat, daha az değil ...
 
trader781 :
Yapılmış
1.sayım++; // program başlangıcından itibaren keneleri sayma

Böyle daha iyi: if(count<=20) count++; - sadece 21'e kadar ihtiyacınız varsa neden daha fazla sayasınız?

2.
   if (count> 20 ) //  если количество тиков больше начинаем работу ... и дальше код эксперта
     {
       if ( Bars < 801 || ( IsTradeAllowed ()== false )) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
         Print ( "Нет достаточного количества баров или торговля на текущем инструменте запрещена" );
       return ;
     }

Ve işte Kızılderili çadırı. Burada, yalnızca kontrol çubuk sayısı içindir ve count> 20 olduğunda yazdırılır , kodun geri kalanı count<= 20 olduğunda bile çalışır.

3.

if ( OrderSymbol ()== Symbol () && OrderType ()< 2 )
             continue ;

Yalnızca piyasadakileri hesaba katmanız gerekiyorsa (ve daha sonraki koda dayanarak), burada devam etmenize hiç gerek yoktur.

4.

         if (y== true && ( OrderType ()== 0 )) //+-----покупка
           {
            dummy=( OrderClose ( OrderTicket (), OrderLots (), Bid , 0 ,White));

              {
               if ((dummy== true ) && (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))== false ))

                   PlaySound ( "music" );
               Sleep ( 20000 );
               PlaySound ( "music" );
               Sleep ( 20000 );
               PlaySound ( "music" );
               Sleep ( 20000 );
               dummy= false ;
               ExpertRemove ();
              }
           }

Bir siparişi kapatır ve kendini kaldırır mı? Peki ya daha fazlası varsa? Evet ve uyumak için bir dakika ...

Daha fazla bakmadım, henüz test edilecek bir yer yok.

 

1 tamam düzelteceğim

2 mess, aşağıdaki blokların count< 20 ile çalışmaması gerekir

3 tamam ben hallederim

4 evet, bir dakika, ancak yalnızca mevcut enstrüman için başka piyasa emri kalmadığında başlatılması gerekir. Bunusipariş seçiminin olumsuz bir sonucu ile uygulamaya çalıştım, bu yüzden bir yerde bir iade koymanız gerekiyor ve void OnTick() içindeki dönüş bir şekilde iyi görünmüyor. Yine, OrdersTotal(), tüm enstrümanlar için çok sayıda emir verilirse yanlış bir sonuç verecektir.

 
trader781 :

2 mess, aşağıdaki blokların count< 20 ile çalışmaması gerekir

Ardından, else return bloğundan sonra eklemeniz gerekir;

4 evet, bir dakika, ancak yalnızca mevcut enstrüman için başka piyasa emri kalmadığında başlatılması gerekir. Bunusipariş seçiminin olumsuz bir sonucu ile uygulamaya çalıştım, bu yüzden bir yerde bir iade koymanız gerekiyor ve void OnTick() içindeki dönüş bir şekilde iyi görünmüyor. Yine, OrdersTotal(), tüm enstrümanlar için çok sayıda emir verilirse yanlış bir sonuç verecektir.

Ve neden sesin üç katı o zaman?

Ve böylece, her şeyi iki aşamada yapabilirsiniz: ilk döngüde emirleri kapatırsınız, bir sonrakinde açık kalmış olup olmadığını kontrol etmek için tüm piyasa emirlerini yeniden hesaplarsınız ve hiç yoksa, fanfare oynar.

Ama siparişler kapandıktan sonra müziğin ne alakası var hala anlamış değilim. Peki, bir dergide baskı yapabilir, postaya mesaj veya bir akıllıya bildirim gönderebilir, ancak danışmanı bir müzik kutusuna dönüştürebilirsiniz?
 
Vitalie Postolache :

Sonra else return bloğundan sonra eklemeniz gerekir;

Ve neden sesin üç katı o zaman?

Ve böylece, her şeyi iki aşamada yapabilirsiniz: ilk döngüde emirleri kapatırsınız, bir sonrakinde açık kalmış olup olmadığını kontrol etmek için tüm piyasa emirlerini yeniden hesaplarsınız ve hiç yoksa, fanfare oynar.

Ama siparişler kapandıktan sonra müziğin ne alakası var hala anlamış değilim. Peki, bir dergide baskı yapabilir, postaya mesaj veya bir akıllıya bildirim gönderebilir, ancak danışmanı bir müzik kutusuna dönüştürebilirsiniz?

Döngüler nasıl ayrılır?

Sesi tam olarak son kapatılana nasıl bağlarım? çünkü emir yoksa danışman çalışmaz

Sonuncusu. müzik seçeneği şu ana kadar bana uyuyor

 
trader781 :

Döngüler nasıl ayrılır?

Sesi tam olarak son kapalı olana nasıl bağlarım? çünkü emir yoksa danışman çalışmaz

Sonuncusu. müzik seçeneği şu ana kadar bana uyuyor

Peki ayrılmak ne demek? Hiçbir şeyi ayırmanıza gerek yoktur, genel olarak aynı, yalnızca birinde - OrderClose() ve diğerinde - sipariş sayacında iki döngü yazmanız gerekir. Sipariş seçiminin işaretleri aynıdır. Sayaç=0 ise - tüm siparişler kapatılır ve müzik çalabilirsiniz.

Evet, ben de fark ettim ki durum

         if (Uslovie1== true ) //Bid+ma6
           {
             if (( Bid >=ma1-X* Point && Bid <ma1) || ( Bid <=ma1+X* Point && Bid >ma1))
              {
                 {y= true ;}
              }
           }

belirli bir sıraya atıfta bulunmuyor gibi görünüyor, neden bir döngüde?

Kapanış döngüsünden önce kontrol ederdim.

Neden: