Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 548

 
edutak :

İlk sürüm çok inatçı olduğu için kodu göstermek istemiyorum. Optimizasyon olmadan 10 yıl dayandı. Şimdi bunu biraz daha karmaşık ve daha karlı hale getirmek istiyorum.

Kod çok basit.

Aynı şekilde, mantıktaki bir hata nedeniyle siparişler her tikte açılabilir mi?

Bir pozisyon açmadan önce, halihazırda açık olup olmadığını kontrol edin.
[Silindi]  
Vitalii Ananev :
Bir pozisyon açmadan önce, halihazırda açık olup olmadığını kontrol edin.
Böyle?
 for ( int pos= 0 ; pos< OrdersTotal (); pos++)
     {
       OrderSelect (pos, SELECT_BY_POS , MODE_TRADES );
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magik)
         kolpos++;
     }
[Silindi]  

Kapatmadan önce.

 if ( OrdersTotal ()!= 0 )
         if ( OrderSelect (pos, SELECT_BY_POS , MODE_TRADES ))
             if ( OrderType ()== OP_BUY )
 
edutak :
Böyle?
   for ( int pos= OrdersTotal ()- 1 ; pos>= 0 ; pos--)         
   {
       if (! OrderSelect (pos, SELECT_BY_POS , MODE_TRADES )) continue ;
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magik)  kolpos++;
   }

Aşağı yukarı böyle.

Bunu bir fonksiyon olarak yazmak daha iyidir.

 int CountOrder( string Smb, int Magik)
{
   int Total = OrdersTotal ();
   if (Total== 0 ) return ( 0 );
   int kolpos = 0 ;
   for ( int pos=Total- 1 ; pos>= 0 ; pos--)         
   {
       if (! OrderSelect (pos, SELECT_BY_POS , MODE_TRADES )) continue ;
       if ( OrderSymbol ()==Smb && OrderMagicNumber ()==Magik)  kolpos++;
   }
   return (kolpos);
}
 
edutak :

Kapatmadan önce.

Kapatmadan önce sihir ve sembol için bir çekiniz yok. Başka bir danışmanın anlaşmalarını kapatabilir veya manuel olarak açabilir.
[Silindi]  
Vitalii Ananev :
Aşağı yukarı böyle.

Hayır, sorun çözülmedi. o bu blokta değil.

Lütfen benimkiyle sizinki arasındaki farkın ne olduğunu açıklayabilir misiniz?

 
edutak :

Hayır, sorun çözülmedi. o bu blokta değil.

Lütfen benimkiyle sizinki arasındaki farkın ne olduğunu açıklayabilir misiniz?

Yani yanlış bir şey yapıyorsun, kodunla ilgilen.

benimki daha iyi :)

...

Böylece tek bir siparişi kaçırmazsınız. Sürümünüzde, şu anda bazı pozisyonlar kapalıysa veya bir emir silinmişse, kalanlardan bazılarını atlayabilirsiniz.

[Silindi]  
Vitalii Ananev :

Yani yanlış bir şey yapıyorsun, kodunla ilgilen.

benimki daha iyi :)

...

Böylece tek bir siparişi kaçırmazsınız. Sürümünüzde, şu anda bazı pozisyonlar kapalıysa veya bir emir silinmişse, kalanlardan bazılarını atlayabilirsiniz.

Global bir değişken olarak bildirildi ancak bir hata veriyor.

 int CountOrder;
 
edutak :

Global bir değişken olarak bildirildi ancak bir hata veriyor.

Sana yazdıklarım bir fonksiyondur.

İşte bir kullanım örneği.

 int Count = CountOrder( Symbol (), 12345 );

if (Count== 0 )
{
//можно открывать
}
[Silindi]  
Vitalii Ananev :

Sana yazdıklarım bir fonksiyondur.

İşte bir kullanım örneği.

Kafası karışmış