순환 연산자 'for' 질문 - 페이지 13

 

사이먼,

"당신의 while 루프는 어떤 티켓도 찾지 못했습니다 ...."

히스토리 풀에서 티켓 인덱스를 "아마도" 찾지 못했고 찾았습니다. 그렇지 않으면 다음 기능이 실행되지 않았을 것입니다. :)


" 풀 인덱스 != 티켓 번호 우리는 전에 이것을 겪지 않았습니까?"

이제 명확히 하자면,

주문 티켓 번호는 요청이 전송된 후 주문에 할당된 고유한 티켓 번호 입니다.

주문 위치 번호는 배열과 유사한 주문 풀 인덱스 ( 이해하는 것이 중요 )에서 주문의 위치입니다.


"닫힌 USDJPY 주문이 완전히 다른 풀인 히스토리 풀에서 같은 위치에 있게 되는 이유는 무엇입니까?"

별도의 수영장이기 때문에 안됩니다.

내가 제시한 코드에서-

   if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}
   if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}
   if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))
   if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))
     {      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );

       if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== true )
      
       Print (OrderCloseTime());
     }

이것은 분명히 기록 풀에서 주문을 선택하는 것입니다. 맞습니까? 적어도 이것은 내가 Documentation에서 수집한 것입니다. 또한 최근에 별도의 통화 쌍 에 대해 약 5개의 주문을 열고 닫은 다음 EA를 켰는데 여전히 Print(OrderCloseTime());을 포함한 모든 기능을 수행했습니다.


고맙습니다.

 
WhooDoo22 :

사이먼,

"당신의 while 루프는 어떤 티켓도 찾지 못했습니다 ...."

히스토리 풀에서 티켓 인덱스를 "아마도" 찾지 못했고 찾았습니다. 그렇지 않으면 다음 기능이 실행되지 않았을 것입니다. :)

티켓 번호를 사용하는 기능 은 무엇입니까? 귀하의 OrderSelects는 모두 SELECT_BY_POS입니다. . . POS는 POSition을 의미하므로 반복합니다. while 루프는 Order 풀에서 인덱스를 찾는 티켓을 찾지 못합니다.


내역 풀에서 선택하는 것은 인덱스 위치 i 의 주문입니다. 방금 마감한 주문이 i 위치에 있다는 것을 어떻게 니까? 대답은 당신이 모른다 입니다 . . . i 의 값은 USDJPY 주문이 주문 풀에 있었던 위치입니다. . . . 수영장은 완전히 분리되어 있으며 어떤 모양이나 형태로 연결되어 있지 않습니다.
 

사이먼,

"당신의 while 루프는 주문 풀에서 인덱스를 찾는 티켓을 찾지 못합니다."

네, 저는 이것을 이해한다고 믿습니다. 이것은 문제가되어서는 안됩니다.


"풀은 완전히 분리되어 있으며 어떤 형태나 형태로 연결되어 있지 않습니다."

이것은 이해되지만 OrderClose() 함수 코드 블록은 의도한 대로 작동하는 것 같습니다. 처리하려는 작업을 계속할 수 있도록 코드 블록을 조정하여 주문 티켓 번호 값을 저장하겠습니다. 동의?

먼저 다음 질문을 드리겠습니다 . 주문의 히스토리 풀 포지션 번호가 현재 풀 포지션 번호와 같지 않은 이유는 무엇입니까? 나는 숫자가 같다고 믿는다.


고맙습니다.

 
WhooDoo22 :

사이먼,

"당신의 while 루프는 주문 풀에서 인덱스를 찾는 티켓을 찾지 못합니다."

네, 저는 이것을 이해한다고 믿습니다. 이것은 문제가되어서는 안됩니다.


"풀은 완전히 분리되어 있으며 어떤 형태나 형태로 연결되어 있지 않습니다."

이것은 이해되지만 OrderClose() 함수 코드 블록은 의도한 대로 작동하는 것 같습니다.

OrderClose() 호출에는 변경 사항이 없으므로 계속 작동해야 합니다.


그러나 이것은 개념에 치명적인 결함이 있기 때문에 의도한 대로 작동하지 않습니다. . . 계속하는 것이 의미가 없는 이유를 이해할 때까지. . .

 if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}
   if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}
   if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))


   if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))
     {      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );

       if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== true )
      
       Print (OrderCloseTime());
     }
 
WhooDoo22 :


먼저 다음 질문을 드리겠습니다 . 주문의 히스토리 풀 포지션 번호가 현재 풀 포지션 번호와 같지 않은 이유는 무엇입니까? 나는 그 숫자가 같다고 믿는다.


테스트한 데모 계정 으로 이동합니다. . . 얼마나 많은 미결 주문이 있습니까? 계정 내역 탭의 내역에 몇 개의 주문이 있습니까?
 

사이먼,

'계정 내역'에는 56개가 포함되어 있습니다.

'무역'(오픈 주문)이 3개 들어 있습니다.


"후두가 효과가 있는 것 같아요. :)"

훗, 반환된 Print() 함수 티켓 번호를 확인했는데 USDJPY 주문과 다른 티켓 번호가 반환되었습니다.

작동하지 않습니다. 확인했습니다. 시도한 것이 기쁩니다. 이 수업은 토론할 가치가 있었습니다.

고맙습니다.

 
WhooDoo22 :

사이먼,

'계정 내역'에는 56개가 포함되어 있습니다.

'트레이드'(오픈 오더) 3개가 들어 있습니다.

새 USDJPY 주문을 만들고 코드를 실행하고 이 새 주문을 찾으면 값이 3 됩니다. USDJPY 주문을 닫을 때 내역 풀에서 어떤 위치를 차지하게 될까요? 이미 56개가 있으므로 위치 3이 이미 사용되었으며 위치 4, 5, 6, 7도 마찬가지입니다. . . 55
 

사이먼,

57.

   if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}
   if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}
   if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))
   if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))
     {      
       int usdjpy_ticket_number=OrderTicket();
      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );

       if ( OrderSelect (usdjpy_ticket_number,SELECT_BY_TICKET,MODE_TRADES)== true )
      
       Print ( "Ticket number for USDJPY = " ,usdjpy_ticket_number);
       Print ( "Order close time = " ,OrderCloseTime());
     }

고맙습니다.

 
WhooDoo22 :

사이먼,

57.

고맙습니다.

i 는 3이므로 히스토리 풀에서 위치 3의 주문을 선택하면 위치 57의 주문을 어떻게 관리할 수 있습니까? ?
 

사이먼,

그렇지 않습니다. 나는 최근에 이것을 재발견했다.

고맙습니다.

사유: