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

 
alph :
Lütfen söyle bana, test cihazının böyle bir göstergesi hayatta gerçek mi? Ve 3000 $ depo ile yıl için iyi mi yoksa kötü bir sonuç mu?

Simülasyon kalitesi %99,9 olsa bile strateji test cihazı her zaman yalan söyler!

Danışmanı kontrol etmenin tek yolu, bir demo hesabında gerçek zamanlı olarak bir VPS sunucusuna koymaktır... Microsoft Azure'da bir ay boyunca neredeyse ücretsiz bir sunucu veriyorlar, 1 dolara ihtiyacınız var, YouTube'a bakın!... Başka VPS servisleri de vardır, ancak maksimum 10 gün ücretsiz kullanım vardır.

 

Çocuklar! Danışmanda programlı olarak manuel ticaret yasağı koymak mümkün müdür?

 

Lütfen bana bu bloğun neden terminalde ayarlanmış herhangi bir sembol için bekleyen tüm durdurma emirlerini kaldırdığını, sihir ve _Symbol'ü yok saydığını söyleyebilir misiniz?

 //--------------------------------------------------------------------------------------------------------------
//       Блок удаления отложенников по типу ордера
//--------------------------------------------------------------------------------------------------------------
int dell_ord_by_type( int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
  
   int orders= OrdersTotal ();
   for ( int i= 0 ;i<orders;i++) //--- пробежим по списку ордеров
   {     
         if ( OrderGetString ( ORDER_SYMBOL ) == Symbol () && OrderGetInteger ( ORDER_MAGIC )==_magic && OrderGetInteger ( ORDER_TYPE ) ==type_ord)   
         {  
             if ( OrderGetInteger ( ORDER_TYPE )== ORDER_TYPE_BUY_STOP || OrderGetInteger ( ORDER_TYPE )== ORDER_TYPE_SELL_STOP )
            {       
               for (j=Appempts; j> 0 ; j--) 
               { 
               //----------------------------------------------------------------------
               MqlTradeResult result={ 0 }; 
             MqlTradeRequest request={ 0 };
            request.order= OrderGetTicket (i);
            request.symbol = _Symbol ;
            request.magic = _magic;
            request.action= TRADE_ACTION_REMOVE ;
            ticketmdf= OrderSend (request,result);
            
                   if (ticketmdf== true )
                  {
                     Print ( "Успешно удалён ордер" );
                     Sleep ( 2000 );
                     break ;                    
                  }
                   if (ticketmdf== false )                     
                  {
                     Print ( "Ошибка при удалении ордера # " ,+ GetLastError ());
                     Sleep ( 7000 );
                  }
               }                            
            }                       
         }                        
   }
   return ( true );  
}
 
Aleksandr Prishenko :

Lütfen bana bu bloğun neden terminalde ayarlanmış herhangi bir sembol için bekleyen tüm durdurma emirlerini kaldırdığını, sihir ve _Symbol'ü yok saydığını söyleyebilir misiniz?

1. Önce sipariş seçilmelidir;

2. Döngü, son siparişten oluşturulmalıdır, yani. for( i = sipariş-1; i >= 0; i-- )

 
Aleksandr Prishenko :

Lütfen bana bu bloğun neden terminalde ayarlanmış herhangi bir sembol için bekleyen tüm durdurma emirlerini kaldırdığını, sihir ve _Symbol'ü yok saydığını söyleyebilir misiniz?

Siparişleri seçmeniz gerekiyor:

...
   int orders= OrdersTotal ();
   for ( int i= 0 ;i<orders;i++) //--- пробежим по списку ордеров
     {
       if ( OrderSelect (ххх,ххх,хххх)== true )
        {
         if ( OrderGetString ( ORDER_SYMBOL )== Symbol () && OrderGetInteger ( ORDER_MAGIC )==_magic && OrderGetInteger ( ORDER_TYPE )==type_ord)
           {
...
 
Vladimir Tkach :

Çocuklar! Danışmanda programlı olarak manuel ticaret yasağı koymak mümkün müdür?

Tabii ki değil.
 
Açıklama doğru. Uygulama doğru değil. OrderSelect() için nereden bilet alabilirsiniz?
 

bu doğru olur mu?

Alexey Kozitsyn ve Karputov Vladimir , tavsiye için teşekkürler!

 int dell_ord_by_type( int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
 int orders= OrdersTotal ();
   for ( int i= 0 ;i<orders;i++) //--- пробежим по списку ордеров
   { 
   ResetLastError ();    
   ulong ticket= OrderGetTicket (i);
       if (ticket!= 0 ) // если ордер успешно скопирован в кэш, работаем с ним  

      {      
         if ( OrderGetString ( ORDER_SYMBOL ) == _Symbol && OrderGetInteger ( ORDER_MAGIC )==_magic && OrderGetInteger ( ORDER_TYPE ) ==type_ord)   
         {  
             if ( OrderGetInteger ( ORDER_TYPE )== ORDER_TYPE_BUY_STOP || OrderGetInteger ( ORDER_TYPE )== ORDER_TYPE_SELL_STOP )
            {       
               for (j=Appempts; j> 0 ; j--)
               { 
 

Size yukarıda yazmışlar: siparişleri silerken döngü tersine çevrilmelidir. Emir silindikten sonra kalan emirlerin endeksleri kaydırılır.

 int dell_ord_by_type( int type_ord, int _magic)
{
   ulong nOrderTicket = 0 ;
   
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)   //--- пробежим по списку ордеров
   {
      nOrderTicket = OrderGetTicket (i);
        
      if (nOrderTicket > 0 && OrderGetString ( ORDER_SYMBOL ) == Symbol () && OrderGetInteger ( ORDER_MAGIC ) == _magic && OrderGetInteger ( ORDER_TYPE ) == type_ord)   
      {  
         if ( OrderGetInteger ( ORDER_TYPE ) == ORDER_TYPE_BUY_STOP || OrderGetInteger ( ORDER_TYPE ) == ORDER_TYPE_SELL_STOP )
         {       
            // удаляем
         }
      }
   }
        
   return ( 0 );  
}
 
Bu arada, sürümünüzde true döndürüyorsa ve her zaman bir işlevi neden int olarak ilan ediyorsunuz? )