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

 
WhooDoo22 :


나는 당신이 내 요점을 놓치고 있다고 생각합니다. . . 중괄호를 추가하면 더 명확해질 것입니다. . . 당신은 이것을 했다. . .

이거 하려고 했던거 같은데...

조건을 원했기 때문입니다...

중괄호(" { } ") 안의 코드 섹션에 적용됩니다.

그렇다면 최신 버전의 코드에서 변경하지 않은 이유는 무엇입니까? . . . 하려고 했는데 왜 안 했어?

 
WhooDoo22 :

사이먼,


이미지의 0은 아마도 . . .


으응! ;)

문서화 차선으로 여행을 떠나볼까요? 하하하.

날짜시간 주문닫기 시간( )
현재 선택한 주문의 마감 시간을 반환합니다. 주문 마감 시간이 0이 아니면 주문이 선택되고 마감되어 계정 기록에서 검색된 것입니다. 미결 및 보류 주문 마감 시간은 0입니다.

참고: 주문은 OrderSelect() 함수로 미리 선택되어 있어야 합니다.


먼저, 내가 최근에 코딩한 OrderClose() 함수 코드 블록을 둘 다 살펴보겠습니다...

다음으로 둘 다 '전문가' 창의 스냅샷에서 표시된 결과를 엿볼 수 있습니다...

Aaah, 우리는 여기에 무엇을 가지고 있습니까? :)

나는 당신이 여기서 무엇을 주장하려고 하는지 잘 모르겠습니다. 설명 부탁드립니다. Print(OrderCloseTime())은 분명히 잘못되었지만 여전히 코드에 있습니다. 그 이유는 무엇입니까? 내가 제안한 2줄의 코드를 추가했을 때 무슨 일이 일어났습니까?
 

사이먼,

그렇다면 최신 버전의 코드에서 변경하지 않은 이유는 무엇입니까? . . . 하려고 했는데 왜 안 했어?

잠시만 기다려 줘. 봐주세요.

나는 이것을 이전에 코딩하려고 했지만 현재 이것을 코딩 한다는 의미 아닙니다. 이걸 코딩할 이유가 없다...

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

내가 대신 이것을 코딩할 수 있을 때...

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

모든 'if' 조건은 중괄호("{}") 안에 있는 내용에 적용됩니다. 이 코드 블록에 중괄호를 추가하는 것은 비효율적이며 아무 소용이 없습니다.


고맙습니다.

 

사이먼,


나는 당신이 여기서 무엇을 주장하려고 하는지 잘 모르겠습니다. 설명 부탁드립니다.

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

// replace above code block with...

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

EA에 데모 계정의 터미널에서 ( Print() 함수 없이) 스핀을 제공한 다음 '전문가' 창을 클릭하고 '전문가'의 나머지 결과에서 0이 없는지 시각화합니다. ' 창.

0이 없다는 사실에 주목하세요. 흠, 맞죠? ;)

이제 EA에 스핀을 제공합니다(Print() 함수가 포함됨).

'전문가' 창에 0이 표시됩니다.


이전에 '전문가' 창 결과에 0이 있었던 이유에 대해 교육받은 추측을 했고 당신이 옳았습니다(메시지 시작 부분에 긁힌 "Nah-uh-uh! ;)".

이미지의 0은 아마도 . . .

 Print (OrderCloseTime());

기억하다? 물론이죠. :)


Print(OrderCloseTime())은 분명히 잘못되었지만 여전히 코드에 있습니다. 그 이유는 무엇입니까?

왜 틀렸다고 생각하는지 설명해 주십시오.

나는 당신에게 요점 을 보여주기 위해 그것을 코드에 가지고 있습니다. 요점이 코드가 코드에 있기 때문에 '전문가' 창에 0이 표시된다는 것입니다.


내가 제안한 2줄의 코드를 추가했을 때 무슨 일이 일어났습니까?

나는 현재 이 일을 적절하게 하고 있다. :)


고맙습니다

 
WhooDoo22 :

Print(OrderCloseTime())은 분명히 잘못되었지만 여전히 코드에 있습니다. 그 이유는 무엇입니까?

왜 틀렸다고 생각하는지 설명해 주십시오.

나는 당신에게 요점 을 보여주기 위해 그것을 코드에 가지고 있습니다. 요점이 코드가 코드에 있기 때문에 '전문가' 창에 0이 표시된다는 것입니다.


게시한 마지막 이미지는 USDJPY 주문이 01:45:35에 마감되었음을 보여줍니다. . . 주문을 마감한 줄 다음에 오는 코드의 다음 줄은 Print(OrderCloseTime())입니다. 결과 값은 0 입니다. . . 날짜 시간이 1970년 1월 1일 자정이므로 OrderCloseTime()의 반환 값 0은 주문이 열려 있거나 보류 중인 주문일 수 있음을 올바르게 지적했기 때문에 주문을 닫을 때가 아닙니다. 귀하의 주문이 마감되었습니다. 귀하의 주문이 마감되었음을 알 수 있습니다. 귀하의 마지막 이미지가 이를 증명했습니다. . . 그래서 어떻게 0 값이 정확할 수 있습니까? 정답은 정답이 아니므로 틀리다는 뜻입니다.

 

사이먼,

현재 이 작업을 하고 있습니다...

   if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))       
   if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}
   if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}           
   if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))
     {
       int ClosedTicketNum = OrderTicket();   //  <---- add this line
      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );
      
       OrderSelect (ClosedTicketNum, SELECT_BY_TICKET);   //  <---- add this line

       Print (OrderCloseTime());
       GetLastError ();
     }

고맙습니다.

 
WhooDoo22 :

사이먼,

그렇다면 최신 버전의 코드에서 변경하지 않은 이유는 무엇입니까? . . . 하려고 했는데 왜 안 했어?

잠시만 기다려 줘. 봐주세요.

나는 이것을 이전에 코딩하려고 했지만 현재 이것을 코딩 한다는 의미 아닙니다. 이걸 코딩할 이유가 없다...

내가 대신 이것을 코딩할 수 있을 때...

모든 'if' 조건은 중괄호("{}") 안에 있는 내용에 적용됩니다. 이 코드 블록에 중괄호를 추가하는 것은 비효율적이며 아무 소용이 없습니다.

좋아요, 이 코드를 보고 있습니다. . . .

 if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))                                   // 1.
if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}                   // 2.
if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}                   // 3.
if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))   // 4.
     {  
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );                   // 5.
       Print (OrderCloseTime());                                                     // 6.
     }

논의하기 쉽도록 라인에 번호를 매겼습니다.

1행을 보면 OrderStopLoss() 및 OrderTakeProfit()이 둘 다 0 인 경우 번호가 매겨진 다른 코드 행 중 어느 것이 실행될 것입니까?

 

사이먼,

수정되어 의도한 대로 작동합니다.

 if (OrderType()==OP_BUY){bid_ask=MarketInfo( "USDJPY" ,MODE_BID);}                   // 2.
if (OrderType()==OP_SELL){bid_ask=MarketInfo( "USDJPY" ,MODE_ASK);}                   // 3.
if ((OrderStopLoss()!= 0 )&&(OrderTakeProfit()!= 0 ))                                   // 1.
if (( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== true )&&(OrderSymbol()== "USDJPY" ))   // 4.
     {  
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );                   // 5.
       Print (OrderCloseTime());                                                     // 6.
     }

2행과 3행.

고맙습니다.

 

사이먼,

   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 ClosedTicketNum=OrderTicket();
      
      OrderClose(OrderTicket(),OrderLots(),bid_ask, 3 , CLR_NONE );

       OrderSelect (ClosedTicketNum,SELECT_BY_TICKET);
      
       Print (OrderCloseTime());
     }

결과:

&#39;전문가&#39; 창 결과입니다.

주문 마감 시간이 이러한 형식(1357306061)으로 표시되는 이유는 무엇입니까?

Print() 함수가 작동하는 이유는 OrderSelect() 함수(중괄호 내)가 열린 주문이 아닌 닫힌 주문을 선택해야 하기 때문입니까? 중괄호 내에서 해야 하는 것 아닌가요? ;) 까다롭고 까다롭습니다.

고맙습니다.

 

사이먼,

여기 온다... BAM!

   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());
     }

더 좋아! ㅎㅎ;;

고맙습니다.

사유: