MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 133

 
안녕하세요. 이 코드를 변경하는 방법을 알려주세요(int i=OrdersTotal()-1;i>=0;i--){
현재는 마지막으로 열린 것을 닫습니다. 그리고 반대로 맨 처음의 것이 먼저 닫히는 것이 필요합니다!
 
Rustam Bikbulatov :
안녕하세요. 이 코드를 변경하는 방법을 알려주세요(int i=OrdersTotal()-1;i>=0;i--){
현재는 마지막으로 열린 것을 닫습니다. 그리고 반대로 맨 처음의 것이 먼저 닫히는 것이 필요합니다!
for ( int i= 0 ; i< OrdersTotal (); i++)
 
Rustam Bikbulatov :
안녕하세요. 이 코드를 변경하는 방법을 알려주세요(int i=OrdersTotal()-1;i>=0;i--){
현재는 마지막으로 열린 것을 닫습니다. 그리고 반대로 맨 처음의 것이 먼저 닫히는 것이 필요합니다!
for ( int i = 0 ; i < OrdersTotal (); i++ )
   {
     if ( /*Функция закрытия. Если вернула истину*/ )
       i--;
   }

이렇게 시도하십시오. 댓글 대신 주문을 마감하는 기능. 기능을 확인하지 않았습니다. 그리고 여기에서는 매번 정확히 숫자를 세기 위한 함수를 호출 해야 할 필요가 있을 것이라고 생각합니다. 왜냐하면 주문건수가 줄어듭니다.

이 옵션을 시도해 볼 수도 있습니다.

while ( OrdersTotal () > 0 )
   /*Функция закрытия ордера*/
 
Vitaly Muzichenko :
for ( int i= 0 ; i< OrdersTotal (); i++)
어쩐지 어색하게 닫힘)
 
Rustam Bikbulatov :
어쩐지 어색하게 닫힘)
올바른 - 마감할 주문을 기억하고 필요에 따라 이 목록을 정렬하고 이 순서로 마감합니다.

정확하지 않지만 지금까지는 (일부 빌드 까지 ) 작동합니다.



 
Rustam Bikbulatov :
안녕하세요. 이 코드를 변경하는 방법을 알려주세요(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
 
Rustam Bikbulatov :
어쩐지 어색하게 닫힘)
내가 전체적으로 제안한 변형은 닫기에 터무니없다.
오래된 것에서 새로운 것으로 닫아야 할 것에 대해 이야기하고 있다면 그리드를 닫고 있는 것입니다. 그리드에 대한 약간의 경험이 있으므로 위치의 이전 위치가 아니라 로트 크기에 따라 선택해야 하며 더 큰 로트에서 작은 로트로 마감해야 한다고 자신 있게 말할 수 있습니다. 그리드가 단일 로트인 경우 마감 시 순서에 차이가 없습니다. 닫기를 위해 기성품 기능을 사용하고 이미 발명된 것을 발명하지 마십시오)
 
고마워요! 나는 이미 깨달았다!!!
 
Vitaly Muzichenko :
내가 전체적으로 제안한 변형은 닫기에 터무니없다.
오래된 것에서 새로운 것으로 닫아야 할 것에 대해 이야기하고 있다면 그리드를 닫고 있는 것입니다. 그리드에 대한 약간의 경험이 있으므로 위치의 이전 위치가 아니라 로트 크기에 따라 선택해야 하며 더 큰 로트에서 작은 로트로 마감해야 한다고 자신 있게 말할 수 있습니다. 그리드가 단일 로트인 경우 마감 시 순서에 차이가 없습니다. 닫기를 위해 기성품 기능을 사용하고 이미 발명된 것을 발명하지 마십시오)
괜찮은. 당신 말이 맞아!
 
여러분, 발전했습니다! 모두에게 좋은 하루. 전문가 템플릿(스크립트)을 만들 때 만드는 질문에 관심이 있습니다. 이것은 어딘가에서 편집할 수 있으며 어떻게 수행됩니까?