[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 165

 
')' hatası nerede - yanlış parametre sayısı ve 4 kez? Belki de böyle yazılmaması gerekir?
 //-----------------------------------------------------------------------------+ 
//  Удаление объекта OBJ_HLINE горизонтальная линия  /Blue/Red          |  
//-----------------------------------------------------------------------------+   
 void DelHLine( color cl, string nm= "" , double p1= 0 , int st= 0 , int wd= 1 )  
  { 
     int     obj_total= ObjectsTotal ( OBJ_HLINE ); 
   
   for ( int i= 0 ;i<obj_total;i++) 
   {
     if ( ObjectType ( OBJ_HLINE )==true) 
     {
         if ( ObjectGet ( OBJPROP_COLOR )== Red )
         { 
           if ( ObjectGet (OBJPROP_PRICE1)>Ask) ObjectDelete (FrDnNam);
         } 
     }
  }
    
     for (i= 0 ;i<obj_total;i++) 
       {
         if ( ObjectType ( OBJ_HLINE )==true)
         {
           if ( ObjectGet ( OBJPROP_COLOR )== Blue ) 
         { 
           if ( ObjectGet (OBJPROP_PRICE1)<Bid) ObjectDelete (FrApNam); 
       }
       
    } 
   }

     return ; 
  }
 
ObjectGet()'i kontrol edin, iki parametre olmalıdır.
 
Roger :

NormalizeDouble(lot,2) işlevini kullanın

Sayesinde. Aradığım şeyin bu olduğundan şüpheleniyorum.

splxgf :

Tartışma için teşekkürler. Bilgileriniz de işinize yarayacaktır.

 
Operr :
')' hatası nerede - yanlış parametre sayısı ve 4 kez? Belki de böyle yazılmaması gerekir?
ObjectType() ve ObjectGet() işlevlerinin nesne adları eksik
 
Operr :
')' hatası nerede - yanlış parametre sayısı ve 4 kez? Belki de böyle yazılmaması gerekir?

 //------------------------------------------------------------+ 
//  Удаление объекта OBJ_HLINE горизонтальная линия  /Blue/Red|  
//------------------------------------------------------------+   
void DelHLine( string nm= "" )  
{ int obj_total= ObjectsTotal ();
   for ( int i= 0 ;i<obj_total;i++) 
  { if (nm== ObjectName (i)&& ObjectType (nm)== OBJ_HLINE )
   { color cl= ObjectGet (nm, OBJPROP_COLOR ); double pr= ObjectGet (nm,OBJPROP_PRICE1);
     if ((cl== Red &&pr>Ask)||(cl== Blue &&pr<Bid)) ObjectDelete (nm);}}}
 
Sevgili, söyle bana, MT4'te bir derleme güncellemesini zorlamak mümkün mü? Ve sonra yeniden başlattığınızda terminal güncellenmiyor.
 

Beyler profesyoneller, yine yardımınıza ihtiyacım var!

Aşağıda, anlaşmaları kapatmaktan sorumlu bir kod parçacığı var, ancak gerçek şu ki, bekleyen siparişler yürütülmezse, onları silmez, nedenini anlayamıyorum. Ancak yürütülen bekleyen emri kapatmanız gerektiğinde, her şey yolunda gider ve emir yürütülmezse, yürütülene kadar askıda kalır...

OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();
orderticket = OrderTicket();

if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)
{
eğer (H1_BUY_5 == 0 || H1_BUY_1 == 0)
{
OrderClose(orderticket, lot, Bid, 5, Yellow);
if (OrdersTotal() == 1) OrderDelete(orderticket, Brown);
}

}

 

Xaoss1990 :

Aşağıda, anlaşmaları kapatmaktan sorumlu bir kod parçacığı var, ancak gerçek şu ki, bekleyen siparişler yürütülmezse, onları silmez, nedenini anlayamıyorum.


if (OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0 )


müdahale eder
 

Danışmana fonksiyonlar ekliyorum, böylece stop loss başabaş noktasında tetiklendiğinde, açık partinin 1/3'ünü kapatıyor, ancak bir nedenden dolayı çalışmıyor.

Sevgilim, bana neyin yanlış olduğunu söyle?

 //=======================================================================================     
void BuyCloseOneThird( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double pr= 0 ;
   int     i, k= OrdersTotal (), np=- 1 ;

   if (sy== "0" ) sy= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy || sy== "" ) && OrderType ()==OP_BUY) {
         if (mn< 0 || OrderMagicNumber ()==mn) {
           if (Bid> OrderOpenPrice () && Bid== OrderStopLoss ()) {
     if ( OrderSelect (np, SELECT_BY_POS, MODE_TRADES)) {
      ClosePosBySelect();}
    }
  }
}
}
}
}
//=======================================================================================     
void SellCloseOneThird( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double pr= 0 ;
   int     i, k= OrdersTotal (), np=- 1 ;

   if (sy== "0" ) sy= Symbol ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy || sy== "" ) && OrderType ()==OP_BUY) {
         if (mn< 0 || OrderMagicNumber ()==mn) {
           if (Ask< OrderOpenPrice () && Ask== OrderStopLoss ()) {
     if ( OrderSelect (np, SELECT_BY_POS, MODE_TRADES)) {
      ClosePosBySelect();}
    }
  }
}
}
}
}

//+------------------------------------------------------------------+
void ClosePosBySelect() {
   bool    fc;
   color   clClose;
   double pa, pb, pp;
   int     err, it;
double ll = MathCeil ( OrderLots () / 3.0 * 10.0 ) / 10.0 ;

   if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
     for (it= 1 ; it<= 5 ; it++) {
       if (! IsTesting () && (! IsExpertEnabled () || IsStopped ())) break ;
       while (! IsTradeAllowed ()) Sleep ( 5000 );
       RefreshRates ();
      pa= MarketInfo ( OrderSymbol (), MODE_ASK);
      pb= MarketInfo ( OrderSymbol (), MODE_BID);
       if ( OrderType ()==OP_BUY) {
        pp=pb; clClose= Red ;
      } else {
        pp=pa; clClose= Blue ;
      }
      ll= OrderLots ();
      fc= OrderClose ( OrderTicket (), ll, pp, Slippage, clClose);
       if (fc) {
         PlaySound ( "wave" ); break ;
      } else {
        err= GetLastError ();
         if (err== 146 ) while ( IsTradeContextBusy ()) Sleep ( 1000 * 11 );
         Print ( OrderTicket (), "  Ask=" ,pa, "  Bid=" ,pb, "  pp=" ,pp);
         Print ( "sy=" , OrderSymbol (), "  ll=" ,ll, "  sl=" , OrderStopLoss (),
               "  tp=" , OrderTakeProfit (), "  mn=" , OrderMagicNumber ());
         Sleep ( 1000 * 5 );
      }
    }
  } 
}
 
Sancho77 :

Danışmana fonksiyonlar ekliyorum, böylece stop loss başabaş noktasında tetiklendiğinde, açık partinin 1/3'ünü kapatıyor, ancak bir nedenden dolayı çalışmıyor.

Sevgilim, bana neyin yanlış olduğunu söyle?


Muhtemelen önce lotu hesapladığınız ve sonra

ll= OrderLots ();
fc= OrderClose ( OrderTicket (), ll, pp, Slippage, clClose);