Rustam Bikbulatov : Herkese merhaba. Bana bu kodu nasıl değiştireceğimi söyle for(int i=OrdersTotal()-1;i>=0;i--){
Şu anda son açılanları kapatıyor. Ve tam tersine, ilklerin önce kapanması gerekiyor!
for ( int i = 0 ; i < OrdersTotal (); i++ ) { if ( /*Функция закрытия. Если вернула истину*/ ) i--; }
Böyle deneyin. Yorum yerine, siparişi kapatma işlevi. İşlevselliği kontrol etmedi. Ve burada, sanırım, sayıyı her seferinde tam olarak sayma işlevini çağırmak gerekecek, çünkü sipariş sayısı azalacaktır.
Bu seçeneği de deneyebilirsiniz:
while ( OrdersTotal () > 0 ) /*Функция закрытия ордера*/
Rustam Bikbulatov : Herkese merhaba. Bana bu kodu nasıl değiştireceğimi söyle for(int i=OrdersTotal()-1;i>=0;i--){
Şu anda son açılanları kapatıyor. Ve tam tersine, ilklerin önce kapanması gerekir !
//+------------------------------------------------------------------+ //| Закрыть все позиции начиная с первых | //+------------------------------------------------------------------+
double CloseOrders()
{ for ( int i= 0 ; i< OrdersTotal (); ) { if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) break ;
if ( OrderMagicNumber () != mn) break ;
int type = OrderType ();
bool result = false ;
switch (type) { //Close opened long positions caseOP_BUY : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ), Slippage, CloseColor ); break ;
//Close opened short positions caseOP_SELL : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ), Slippage, CloseColor ); break ; }
Rustam Bikbulatov : bir şekilde garip bir şekilde kapanır)
Bir bütün olarak sunduğum varyant, kapanış için saçma.
Eskiden yeniye kapatılması gerekenlerden bahsediyorsanız, ızgarayı kapatıyorsunuz demektir. Şebekeler konusunda biraz deneyimim olduğu için, sadece pozisyonun eski konumuna göre değil, lot büyüklüğüne göre seçim yapmanız gerektiğini ve daha büyük bir lottan daha küçük bir lota kapatmanız gerektiğini güvenle söyleyebilirim. Şebeke tek lot ise kapanışta sıra farkı yoktur. Kapatmak için hazır işlevleri kullanın ve daha önce icat edilmiş olanı icat etmeyin)
Bir bütün olarak sunduğum varyant, kapanış için saçma.
Eskiden yeniye kapatılması gerekenlerden bahsediyorsanız, ızgarayı kapatıyorsunuz demektir. Şebekeler konusunda biraz deneyimim olduğu için, sadece pozisyonun eski konumuna göre değil, lot büyüklüğüne göre seçim yapmanız gerektiğini ve daha büyük bir lottan daha küçük bir lota kapatmanız gerektiğini güvenle söyleyebilirim. Şebeke tek lot ise kapanışta sıra farkı yoktur. Kapatmak için hazır işlevleri kullanın ve daha önce icat edilmiş olanı icat etmeyin)
Beyler geliştirdi! Hepinize iyi günler. Oluştururken bir uzman şablonu (komut dosyası) oluşturma sorusuyla ilgileniyorum. Bu bir yerde düzenlenebilir mi ve nasıl yapılır?
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Herkese merhaba. Bana bu kodu nasıl değiştireceğimi söyle for(int i=OrdersTotal()-1;i>=0;i--){
Herkese merhaba. Bana bu kodu nasıl değiştireceğimi söyle for(int i=OrdersTotal()-1;i>=0;i--){
{
if ( /*Функция закрытия. Если вернула истину*/ )
i--;
}
Böyle deneyin. Yorum yerine, siparişi kapatma işlevi. İşlevselliği kontrol etmedi. Ve burada, sanırım, sayıyı her seferinde tam olarak sayma işlevini çağırmak gerekecek, çünkü sipariş sayısı azalacaktır.
Bu seçeneği de deneyebilirsiniz:
/*Функция закрытия ордера*/
bir şekilde garip bir şekilde kapanır)
doğru değil, ama şu ana kadar (bazı yapılara kadar) işe yarıyor: i'nin başarılı bir şekilde kapanması üzerine--
Herkese merhaba. Bana bu kodu nasıl değiştireceğimi söyle for(int i=OrdersTotal()-1;i>=0;i--){
//| Закрыть все позиции начиная с первых |
//+------------------------------------------------------------------+
double CloseOrders()
{
for ( int i= 0 ; i< OrdersTotal (); )
{
if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
break ;
if ( OrderMagicNumber () != mn)
break ;
int type = OrderType ();
bool result = false ;
switch (type)
{
//Close opened long positions
case OP_BUY : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_BID ), Slippage, CloseColor );
break ;
//Close opened short positions
case OP_SELL : result = OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( OrderSymbol (), MODE_ASK ), Slippage, CloseColor );
break ;
}
if (result == false )
{
Print ( "Order " , OrderTicket () , " failed to close. Error:" , GetLastError () );
i++;
}
}
return ( True );
}
// End
bir şekilde garip bir şekilde kapanır)