루프 및 주문 마감 또는 삭제 - 페이지 3

 

이와 같은 루프를 수행하면 어떻게 될까요?

   for ( int i= 0 ; i< OrdersTotal (); i++) // For market and pending orders
     {
       if (( OrderSelect (i, SELECT_BY_POS )== true )     //If there is the next one
      && ( OrderSymbol ()== Symbol ()) && OrderMagicNumber () == Magic_A )               
        {

이것은 순서에 대한 배열을 생성하기 위해 책 mql4에 제공된 루프입니다.

OrdersTotal()은 주문이 마감될 때마다 저절로 감소합니까?

//************************************************ ***************************

나는 책을 살펴보았고 아래는 주문을 마감하기 위해 주어진 루프이므로 대답은 예입니다. ( https://book.mql4.com/trading/orderclose )

 for ( int i= 1 ; i<= OrdersTotal (); i++)           // Order searching cycle
     {
       if ( OrderSelect (i- 1 , SELECT_BY_POS )== true ) // If the next is available
        {                                       // Order analysis:
         //----------------------------------------------------------------------- 3 --
         if ( OrderSymbol ()!= Symb) continue ;   
 
ffoorr :

이와 같은 루프를 수행하면 어떻게 될까요?

이것은 순서에 대한 배열을 생성하기 위해 책 mql4에 제공된 루프입니다.

OrdersTotal()은 주문이 마감될 때마다 저절로 감소합니까?


네, 그럴 것입니다. . . 그러나 사실은 모든 주문이 종료되지 않습니다. 이 스레드의 처음 2개의 게시물을 읽으십시오. . . 자세히 설명되어 있습니다.
 
int TotalNumberOfOrders;   //  <-- this variable will hold the number of orders currently in the Trade pool

TotalNumberOfOrders = OrdersTotal ();     // <-- we store the number of Orders in the variable

for (PositionIndex = TotalNumberOfOrders - 1 ; PositionIndex >= 0 ; PositionIndex --)   //  <-- for loop to loop through all Orders . .   COUNT DOWN TO ZERO !  

TotalNumberOfOrders = OrdersTotal() 을 선언하지 않아도 괜찮습니까?

내 말은 즉시 OrdersTotal()을 사용한다는 것입니다.

( x = OrdersTotal() - 1 ...... )

 
질문하는 대신에 시도해보는 것은 어떨까요? 그것은 당신의 경험이 될 것입니다.
 
나는 현재 그것을 사용하고 있지만 동일하더라도 출력에 대한 확신이 없습니다. OrdersTotal()이 for 루프에 있으므로 1개의 주문을 닫으면 OrdersTotal에 계속해서 영향을 줍니까?
 
둘 다 시도하고 차이점을 발견할 수 있는지 확인하십시오.
 
juniorlcq :
나는 현재 그것을 사용하고 있지만 동일하더라도 출력에 대한 확신이 없습니다. OrdersTotal()이 for 루프에 있으므로 1개의 주문을 닫으면 OrdersTotal에 계속해서 영향을 줍니까?

아니요, OrdersTotal을 확인 하지 않기 때문에 루프를 계속하기 위한 조건으로 PositionIndex를 확인하고 있습니다.

 for (PositionIndex = TotalNumberOfOrders - 1 ; PositionIndex >= 0 ; PositionIndex --)
 

이 주제를 잘 설명했습니다! 그래픽 없이는 설명이 불가능합니다... 잘 하셨습니다.

내가 카운트다운 방식 대신 카운트업 방식을 사용하도록 강요받은 유일한 시간은 브로커에 있었던 것입니다.

그것은 정말 FIFO에 대한 xxx이었고 내가 먼저 최신 거래를 마감하게 하지 않을 것입니다.... 얼마나 어리석은.

다시 한 번 말하지만 ... 잘했다 ...

 
Jimdandy : 내가 카운트다운 방법 대신 카운트업 방법을 사용하도록 강요받은 유일한 시간은 FIFO에 대해 정말 분석적이고 최신 거래를 먼저 마감하지 못하게 하는 브로커에 있었습니다.
이 경우 모든 관련 티켓 번호(배열에서)를 캡처한 다음 닫습니다. 세지 말고 닫으십시오.
 

안녕하세요 전문가 여러분, 이 솔루션에 대해 어떻게 생각하십니까?

 while ( OrdersTotal ()> 0 )
  {
   if ( OrderSelect ( 0 ,SELECT_BY_POS,MODE_TRADES))
     {
       switch (OrderType())
        {
         case OP_BUY:   if (!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),MaxSlippage,CloseColor)) Print ( "OrderClose error " , GetLastError ()); break ;
         case OP_SELL: if (!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),MaxSlippage,CloseColor)) Print ( "OrderClose error " , GetLastError ()); break ;
         case OP_BUYSTOP:
         case OP_SELLSTOP:
         case OP_BUYLIMIT:
         case OP_SELLLIMIT: if (!OrderDelete(OrderTicket())) Print ( "OrderDelete error " , GetLastError ());
        }
     }
   else Print ( "OrderSelect error " , GetLastError ());
  }