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

 
Igor Petrov :

Çok teşekkürler !!!

Lütfen söyleyin, bir danışmanı test ederken bunu (CHARTEVENT_CLICK) kullanmak mümkün mü?
 
Yuriy Vins :
Lütfen söyleyin, bir danışmanı test ederken bunu (CHARTEVENT_CLICK) kullanmak mümkün mü?

Ne yazık ki hayır.

 
ukrop1203 :

"Geçmiş Merkezi" menüsünde MetaQuotes Software Corp'tan veri indirdim ve işte aracının verileri.

Terminalin kimden indirildiği, oradan MT4'e çekilir. Daha doğrusu ve büyük olasılıkla - yükleme sırasında hesabı oradan giriş yapan ve hikayeyi çeken.

 
Vladimir Baskakov :
Neden bahsediyorsun?

Sizin gibi insanların Satıcı statüsünden mahrum bırakılması gerektiği hakkında. Kanalizasyon çıraklarına gidin.

[Silindi]  
Andrei Novichkov :

Sizin gibi insanların Satıcı statüsünden mahrum bırakılması gerektiği hakkında. Kanalizasyon çıraklarına gidin.

İyi günler
 

Merhaba,

Danışmana emirleri kapatma düğmesini koydum ve terminaldeki tüm emirleri kapatıyor. Ve sadece mevcut grafikte gereklidir. yardım et lütfen

 //----------------------------------------------------------------------
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//---            
   if (sparam== "CloseButton" )
      {
      CloseAllOpenPositions(MaxSlippage); 
       ObjectSetInteger ( 0 , "CloseButton" , OBJPROP_STATE , false );    
      }   
       if (sparam== "CloseBuy" )
      {
      CloseAllBuy(MaxSlippage); 
       ObjectSetInteger ( 0 , "CloseBuy" , OBJPROP_STATE , false );    
      }         
         if (sparam== "CloseSell" )
      {
      CloseAllSell(MaxSlippage); 
       ObjectSetInteger ( 0 , "CloseSell" , OBJPROP_STATE , false );    
      }         
//---      
  }
  
//+------------------------------------------------------------------+
void CloseAllOpenPositions( int intMaxSlippage)
  {
   bool checkOrderClose = true ;        
   int index = OrdersTotal ()- 1 ;   
   while (index >= 0 && OrderSelect (index, SELECT_BY_POS , MODE_TRADES )== true )
      {
         
       if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
         {         
         checkOrderClose = OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), MaxSlippage, CLR_NONE); 
         
         if (checkOrderClose == false )
            {
             int errorCode = GetLastError ();
            
             if (errorCode == 1 || errorCode == 2 || errorCode == 5 || errorCode == 6 || errorCode == 64 || errorCode == 65 || errorCode == 132 || errorCode == 133 || errorCode == 139 ) break ;
             else continue ;        
            }          
         }           
      index--;
     }     
  }
   //----------------------------------------------------------------------------
 
Carcass77 :

Merhaba,

Danışmana emirleri kapatma düğmesini koydum ve terminaldeki tüm emirleri kapatıyor. Ve sadece mevcut grafikte gereklidir. yardım et lütfen

Kapat işlevini değiştirin

 //+------------------------------------------------------------------+
void CloseAllOpenPositions( int intMaxSlippage)
  {
   bool checkOrderClose= true ;
   int index= OrdersTotal ()- 1 ;
   while (index>= 0 && OrderSelect (index, SELECT_BY_POS , MODE_TRADES )== true )
     {
       if ( OrderSymbol ()== Symbol ())   //Добавил   
        {

         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
           {
            checkOrderClose= OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (),intMaxSlippage,CLR_NONE);

             if (checkOrderClose== false )
              {
               int errorCode= GetLastError ();

               if (errorCode== 1 || errorCode== 2 || errorCode== 5 || errorCode== 6 || errorCode== 64 || errorCode== 65 || errorCode== 132 || 
                errorCode== 133 ||errorCode== 139 ) break ;
               else continue ;
              }
           }

        }
      index--;
     }
  }
//+------------------------------------------------------------------+
 
Alekseu Fedotov :

Kapat işlevini değiştirin

kazanıldı. kalbimin derinliklerinden teşekkür ederim

 
Ayrıca, her ticarette adım atmak için bir çarpan işlevi eklemek istedim. Bana söyler misin?
 
Carcass77 :
Ayrıca, her ticarette adım atmak için bir çarpan işlevi eklemek istedim. Bana söyler misin?

Halihazırda açık olan siparişlerin maksimum lotuna göre yeni bir siparişin lotunu artırmaktan bahsediyorsak, o zaman siparişleri sayarken, lotun maksimum değerini hatırlayın.

aşağı yukarı şöyle:

 //_______________________________________________________________________
//возвращает суммарное кол-во открытых рыночных ордеров, в переменных
// lotmaxbuy_ и lotmaxsell_ вернет максимальные лоты по типам ордеров
int NumberOfOrders( int magic_, double &lotmaxbuy_, double &lotmaxsell_)
  {
   int i,ot,buy_= 0 ,sell_= 0 ,k= OrdersTotal ();
   lotmaxbuy_= 0.0 ; lotmaxsell_= 0.0 ;
   for (i= 0 ; i<k; i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         ot= OrderType ();
         if (( OrderMagicNumber ()==magic_) && ( OrderSymbol ()== _Symbol ))
           {
             if (ot== OP_BUY ) { buy_++;  lotmaxbuy_  = fmax (lotmaxbuy_, OrderLots ());  }
             if (ot== OP_SELL ){ sell_++; lotmaxsell_ = fmax (lotmaxsell_, OrderLots ()); }
           }
        }
     }
   return (buy_+sell_);
  }
//+------------------------------------------------------------------+