Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 137

 

Ve sonra mesajların çıktısını yorum olarak değil, nesneler olarak, daha büyük hale getirmesi gerekecek ...

Yani bir insan asla kendi başına düşünmeyi öğrenemez.

 
artmedia70 :
Sadece yeniden başlattığınızda değişkenin yeniden başlatıldığını unutmayın. Bu nedenle, bu yaklaşım bir testçi için kabul edilebilir, ancak gerçek ticaret için geçerli değildir.


Bilgi için teşekkürler, o zaman ne yapmalıyım? GV'de değeri artırmak için??? Yoksa gerçek için başka bir seçenek var mı ...

 
ALXIMIKS :

Bilgi için teşekkürler, o zaman ne yapmalıyım? GV'de değeri artırmak için??? Yoksa gerçek için başka bir seçenek var mı ...
Küresel bayrakları unutun. Neden bayraklara ihtiyacınız olduğunu ve neyi gösterdiklerini bilmiyorum. Bu yüzden durumunuzu söylemek zor.
 
Zolotai :
İnsanlar, bana göstergeyi söyleme. Genel olarak, iki hareketli ortalamaya dayanmaktadır. Ve kavşakta ok şeklinde yön verir. Bulamazsınız efendim.
i-PSI@MA_Sinyal buradan .
 
ALXIMIKS :

İyi günler, zor değilse de yeni başlayanlara söyleyin:

1) Belirli bir değişkenin değerine eşit boyutta bir dizi nasıl bildirilir? (i=7 ise double Muss[7] dizisini ilan ederiz ve böyle devam eder);

zaten cevaplandı

2) Koşul her zaman yanlışsa, bir kullanıcı işlevindeki bir dizi neden bildirilmiş ve yeterince kullanılmış olarak kabul edilir?

while (yanlış){

Uyarı("aaaaaaaaa");

statik çift Buf_max[9000000];

statik çift Buf_min[9000000];}

çünkü statik ilan edildi. MQL'de, init() işlevi çağrılmadan önce tüm statik değişkenler başlatılır.

3) Özel bir işlevde ve genel olarak basit bir dizi ile statik bir dizi arasında bir fark var mı?

sadece dizi, bildirildiği işleve ilk girdiğinizde başlatılacaktır. Ancak, çıkışta daha önce boyutunu değiştirdiyseniz, yeni değer sıfırlanmayacak ve işlev bir sonraki çağrıldığında, dizi geçen sefer bıraktığımızla aynı boyutta olacaktır.

Onlar. Genel olarak, basit ve statik arasındaki fark yalnızca başlatma anındadır.

 
"1" --> hatasıyla ne yapılabilir (hata yok, ancak sonuç bilinmiyor) ?
 

Burada bekleyen emirleri silmek için bir fonksiyon yazdım. Ama nedense onları silmiyor. İşte kod:

 void DeletePendingOrders()
{
    int NumberOfTry = 0 ,
        err,
        ticket;

   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
      if (! OrderSelect (i, SELECT_BY_POS,MODE_TRADES)) continue ;
      if (OrderMagicNumber() != i_magic) continue ;
      if (OrderSymbol() != Symbol ()) continue ;
      if (OrderType() > 1 )
      {
         ticket = OrderTicket();
      
         while (NumberOfTry < 3 )
         {
            while (!IsTradeAllowed()) Sleep ( 5000 );
      
            if (OrderDelete(ticket, Red))
                NumberOfTry = 3 ;
            else
                err = GetLastError ();
      
            if (err > 0 )
            { 
              Print (NumberOfTry, " #" ,ticket, " Error modifing order: (" , err , ") " );
              Sleep ( 5000 ); RefreshRates(); NumberOfTry++;
            }
         }
      }
   }
}

Neden düzgün çalışmıyor? Farklı şekilde yeniden yazabileceğiniz açık, ancak bu kodun neden amacını yerine getirmediğini anlamak istiyorum.

 
hoz :

Burada bekleyen emirleri silmek için bir fonksiyon yazdım. Ama nedense onları silmiyor. İşte kod:

Neden düzgün çalışmıyor? Farklı şekilde yeniden yazabileceğiniz açık, ancak bu kodun neden amacını yerine getirmediğini anlamak istiyorum.

Özellikle kodu değiştirmemek için bir satır eklerdim:

             while (!IsTradeAllowed()) Sleep ( 5000);
            err= 0 ;
             if (OrderDelete(ticket, Red))
                NumberOfTry = 3 ;
             else
                err = GetLastError ();
      
             if (err > 0 )
 
Sepulca :

Özellikle kodu değiştirmemek için bir satır eklerdim:


Ve bize ne verecek? Daha önce olduğu gibi, siparişler kapanmaz ve hata olmaz.

Kod değişti:

 void DeletePendingOrders()
{
    int NumberOfTry = 0 ,
        err,
        ticket;

   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
   {
      if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
      if (OrderMagicNumber() != i_magic) continue ;
      if (OrderSymbol() != Symbol ()) continue ;
      if (OrderType() > 1 )
      {
         ticket = OrderTicket();
      
         while (NumberOfTry < 3 )
         {
            while (!IsTradeAllowed()) Sleep ( 5000 );
                err = 0 ;
              Print ( "IsTradeAllowed() = " , IsTradeAllowed());
              Print ( "err = " , err);

            if (OrderDelete(ticket, Red))
            {
                NumberOfTry = 3 ;
                Print ( "NumberOfTry" , NumberOfTry);
            }
            else
            {
                err = GetLastError ();
                Print ( "err = " , err);
            }
      
            if (err > 0 )
            { 
              Print (NumberOfTry, " #" ,ticket, " Error modifing order: (" , err , ") " );
              Sleep ( 5000 ); RefreshRates(); NumberOfTry++;
            }
         }
      }
   }
}

Günlüğün gerekli kısmı:

 2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 05  Perevorot EURUSD,M5: modify # 10 sell stop 0.01 EURUSD at 1.29279 sl: 0.00000 tp: 1.29179 ok
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 05  Perevorot EURUSD,M5: open # 10 sell stop 0.01 EURUSD at 1.29279 ok
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: Ôóíêöèÿ DeletePendingOrders çàâåðøåíà
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: NumberOfTry3
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: delete # 9 sell stop 0.64 EURUSD at 1.29279 sl: 0.00000 tp: 1.29179 ok
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: err = 0
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: IsTradeAllowed() = 1
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: Ôóíêöèÿ ClosePosBySortLots çàêðûëà âñå ðûíî÷íûå îðäåðà
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: close # 3 sell 0.01 EURUSD at 1.29303 tp: 1.29203 at price 1.29487
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: close # 4 buy 0.02 EURUSD at 1.29403 tp: 1.29503 at price 1.29480
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: close # 5 sell 0.04 EURUSD at 1.29286 tp: 1.29186 at price 1.29487
2013.09 . 11 22 : 24 : 19     2012.01 . 02 08 : 02  Perevorot EURUSD,M5: close # 6 buy 0.08 EURUSD at 1.29386 tp: 1.29486 at price 1.29480
Siparişin silindiği ortaya çıktı. Ama bir. Ve bir tane daha vardı. Kaldırılmamış. Döngü tüm siparişler için olmasına rağmen.
 

NumberOfTry değişkeninizi izleyin

her bilet için sıfıra ayarlanmalıdır, aksi takdirde 3 veya daha fazla bir değer atanır ve tüm biletler için diğer koşullar yerine getirilmez.

sadece biri koşulu sağlayacak