도움말: EA가 거래를 마감하지 않는 이유 - 페이지 4

 

SRC 버튼을 사용하여 코드를 게시하지 않으면 아무도 답장을 보내지 않는다는 문제가 있습니다. D

 
crossy :

안녕 친구,


OrderT는 주문 티켓 번호,




내 문제는: EA는 때때로 거래를 아주 잘 마감하지만 때로는 EA가 지연을 마감하지만 이미 마감되었음에도 불구하고 이를 마감할 티켓을 계속 찾고 있습니다.

("알 수 없는 티켓 번호.." 오류가 발생합니다.

제가 논리적 오류가 있는 것 같아요.

친절한 도움을 주셔서 감사합니다.

와이

아주 간단합니다. . . .

이 간단한 질문에 답하면 답이 나옵니다. . .

티켓을 닫을 수 있도록 TICKET 번호를 함수 에 전달합니다. . . . 왜 다른 모든 주문을 반복합니까? 종료해야 하는 티켓 번호 를 이미 알고 있습니다. . . 루프가 왜?

 
...
   for ( int cnt = OrdersTotal ()- 1 ; cnt >= 0 ; cnt--) 
   {
      CodeY = false;
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES) )
      {
         CodeY    = true;
         OrderS   = OrderSymbol ();
         OrderT   = OrderTicket ();
         OrderM   = OrderMagicNumber ();
         OrderTyp = OrderType ();
         OrderL   = OrderLots ();
      }   
       if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... )
    
         CLOSE_Single_P(Pair1, "LONG" ,OrderT,OrderL);

//-----------------------------------------------+
void CLOSE_Single_P( string SYMB, string TREN, int TICKET, double LOTT)
{
   double PRC;
   bool Check = false;

   for ( int cntt= 0 ; cntt< 20000 ; cntt++ )
   {
       if ( Check )
      {
         Check_Ini();
         return ;
      }
       for ( int vvv = OrdersTotal ()- 1 ; vvv >= 0 ; vvv-- )
      {  
         if ( OrderSelect (vvv, SELECT_BY_POS, MODE_TRADES) )
         {   
            Check = false;
             if ( TREN == "LONG" )
              PRC = MarketInfo (SYMB,MODE_BID);
             else
             if ( TREN == "SHORT" )
               PRC = MarketInfo (SYMB,MODE_ASK);
         
            Check = OrderClose (TICKET,LOTT,PRC,Slippage, Yellow );
             if ( Check )
               break ;
         }      
      } 
   }
   return ;
}
//-----------------------------------------------+

이제 더 명확해지기를 바랍니다.

감사해요

 
RaptorUK :

아주 간단합니다. . . .

이 간단한 질문에 답하면 답이 나옵니다. . .

티켓을 닫을 수 있도록 TICKET 번호를 함수에 전달합니다. . . . 왜 다른 모든 주문을 반복합니까? 종료해야 하는 티켓 번호 를 이미 알고 있습니다. . . 루프가 왜?


Raptor에게 감사합니다. ORDERSELECT 없이 한 번 해보았지만 같은 실수가 있었습니다.

와이.

 
나는 이미 첫 페이지에서 단서를 주었다. https://www.mql5.com/en/forum/139543
 

onewithzachy 감사합니다. 제안한 대로 수행했는데 오류가 발생했습니다.

TICKET을 찾지 못한 마사지..

 
crossy :

안녕 친구,


OrderT는 주문 티켓 번호,




내 문제는: EA는 때때로 거래를 아주 잘 마감하지만 때로는 EA가 지연을 마감하지만 이미 마감되었음에도 불구하고 이를 마감할 티켓을 계속 찾고 있습니다.

("알 수 없는 티켓 번호.." 오류가 발생합니다.

제가 논리적 오류가 있는 것 같아요.

친절한 도움을 주셔서 감사합니다.

와이

아주 간단합니다. . . .

이 간단한 질문에 답하면 답이 나옵니다. . .

티켓을 닫을 수 있도록 TICKET 번호를 함수 에 전달합니다. . . . 왜 다른 모든 주문을 반복합니까? 종료해야 하는 티켓 번호 를 이미 알고 있습니다. . . 루프가 왜?

 
onewithzachy :
나는 이미 첫 페이지에서 단서를 주었다. https://www.mql5.com/en/forum/139543
그리고 나도 답을 주었다. . . https://www.mql5.com/en/forum/139543
 
crossy :


Raptor에게 감사합니다. ORDERSELECT 없이 한 번 해보았지만 같은 실수가 있었습니다.

당신은 내가 쓰고 질문한 것을 읽지 않고 있습니다. . . . 루프가 왜? 이 상황에서 루프의 기능 은 무엇입니까?
 
...
   for ( int cnt = OrdersTotal ()- 1 ; cnt >= 0 ; cnt--) 
   {
      CodeY = false;
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES) )
      {
         CodeY    = true;
         OrderS   = OrderSymbol ();
         OrderT   = OrderTicket ();
         OrderM   = OrderMagicNumber ();
         OrderTyp = OrderType ();
         OrderL   = OrderLots ();
      }   
       if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... )
    
         CLOSE_Single_P(Pair1, "LONG" ,OrderT,OrderL);

//-----------------------------------------------+
void CLOSE_Single_P( string SYMB, string TREN, int TICKET, double LOTT)
{
   double PRC;
   bool Check = false;

   for ( int cntt= 0 ; cntt< 20000 ; cntt++ )
   {
       if ( Check )
      {
         Check_Ini();
         return ;
      }
      Check = false;
       if ( TREN == "LONG" )
         PRC = MarketInfo (SYMB,MODE_BID);
       else
       if ( TREN == "SHORT" )
         PRC = MarketInfo (SYMB,MODE_ASK);
         
      Check = OrderClose (TICKET,LOTT,PRC,Slippage, Yellow );
   }
   return ;
}
//-----------------------------------------------+

확인 여기에 수정된 버전이 있습니다. 동일한 실수가 있습니다.

와이.