절반 부지를 폐쇄합니다. - 페이지 2

 

나는 MathFloor와 거기에 있는 당신의 링크를 읽어야 합니다. 이것은 저에게 모두 새롭고 이해하기 위해 고군분투하고 있습니다. 내일 처리하겠습니다.

고마워 얘들아!

 
         if (Bid == btp-OrderOpenPrice()/ 2 +OrderOpenPrice()){ // need to double check this.
               
               
         double   minLot  = MarketInfo( Symbol (), MODE_MINLOT),
                 lotStep = MarketInfo( Symbol (), MODE_LOTSTEP),
                 Lots    = OrderLots(),
                 half_close = MathFloor (Lots/ 2 /lotStep)*lotStep;
                 
                    
               
         for ( int q= OrdersTotal ()- 1 ; q >= 0 ; q--)
         {
             if ( OrderSelect (q,SELECT_BY_POS,MODE_TRADES)== true ){
               Print ( " Stop loss value for the order is " , OrderStopLoss());
               Print ( "lots for the order " ,OrderLots());
            }
             else if ( OrderSelect (q,SELECT_BY_POS,MODE_TRADES)== false ){
               Print ( " OrderSelect failed error code is " , GetLastError ());
            }
             if (OrderMagicNumber()==MagicNumber)
             if (OrderSymbol()== Symbol ())
               if (OrderType()==OP_BUYSTOP)
               if (half_close > minLot)

                
               CloseHalfLong = OrderClose(OrderTicket(),half_close,Bid, 3 , CLR_NONE );
               if (CloseHalfLong!=TRUE) Print ( "LastError = " , GetLastError ());
         }
         } 
누군가 내가 잘못 가고있는 부분에 대해 약간의 지침을 줄 수 있습니까? 이제 막 보기 시작했습니다. 내가 메모를 작성한 줄을 제외하고 누군가가 나를 올바른 방향으로 가리킬 수 있습니까?
 
어떤 아이디어?
 
DomGilberto :
어떤 아이디어?
OrderLots()의 절반을 닫으시겠습니까? 그러나 Order를 선택하기 전에 OrderLots()를 어떻게 사용할 수 있습니까?
 
웁스 - 네 정렬했습니다. 그래도 변한 건 없습니까?

내가 뭔가를 놓치고 있습니까?
 
DomGilberto :
웁스 - 네 정렬했습니다. 그래도 변한 건 없잖아요?

내가 뭔가를 놓치고 있습니까?

OrderSelect()가 실패한 경우에도 다음을 수행하는 이유는 무엇입니까?

 if (OrderMagicNumber()==MagicNumber)
             if (OrderSymbol()== Symbol ())
               if (OrderType()==OP_BUYSTOP)
               if (half_close > minLot)

보류 중인 주문 을 닫지 않았습니다. 오류 보고에서 무엇을 알 수 있었습니까?

 

나는 당신이 같은 거래를 두 번 선택하려고한다고 생각합니다.

이건 그냥 "기타"가 아니어야 합니까?

 else if ( OrderSelect (q,SELECT_BY_POS,MODE_TRADES)== false ){

처음 거래를 선택하려고 하면 실패하지만 두 번째에는 성공하면 충돌 메시지를 받을 수 있습니다.

 
오류가 안나네요...

좀 답답하네요... "OrderModify 오류 1"이 계속 표시되지만 나중에 살펴보겠습니다. 그 외에는 아무것도!
              if ( OrderSelect (NewOrder,SELECT_BY_TICKET,MODE_TRADES)== true ){
               Print ( " Stop loss value for the order is " , OrderStopLoss());
               Print ( "lots for the order " ,OrderLots());
            }
             else if ( OrderSelect (NewOrder,SELECT_BY_TICKET,MODE_TRADES)== false ){
               Print ( " OrderSelect failed error code is " , GetLastError ());
            }
            
             double   minLot = MarketInfo( Symbol (), MODE_MINLOT),
            lotStep     = MarketInfo( Symbol (), MODE_LOTSTEP),
            sizeCurr    = OrderLots(),
            sizeClose   = MathFloor (sizeCurr/lotStep)*lotStep/ 2 ,
            sizeRem     = sizeCurr - sizeClose;
           //if (sizeClose < minLot)                                     return(false);
             //if (sizeRem   < minLot){ sizeClose = sizeCurr;
                 
           if (OrderTakeProfit()-OrderOpenPrice()/ 2 +OrderOpenPrice() == Bid) // Does this make sense? I am wanting this "if" statement to be true, if price (bid) reaches the price in this comparison statement?

             if (OpenOrdersThisPair( Symbol ())== 1 )
               
               CloseHalfLong = OrderClose(OrderTicket(),sizeClose,Bid, 3 , CLR_NONE );
                
                 if (CloseHalfLong!=TRUE) Print ( "Last Error = " , GetLastError ());
         
         } 
나는 MathFloor가 답을 정수로 반올림한다는 인상을 받았습니다. MathFloor가 올바른지 확실하지 않습니까? 내가 사용하고 있는 브로커는 0.01을 로트 단계로 사용할 것입니다...
 
DomGilberto :
오류가 안나네요...

좀 답답하네요... "OrderModify 오류 1"이 계속 표시되지만 나중에 살펴보겠습니다. 그 외에는 아무것도! 나는 MathFloor가 답을 정수로 반올림한다는 인상을 받았습니다. MathFloor가 올바른지 확실하지 않습니까? 내가 사용하고 있는 브로커는 0.01을 로트 단계로 사용할 것입니다...

나는 당신에게 작동할 코드를 줬는데 왜 당신은 그것을 사용하지 않습니까? 무슨 일이 일어나고 있는지보기 위해 변수를 인쇄하지 않는 이유는 무엇입니까? 게시한 코드에 OrderModify()가 없습니다. 어떻게 관련이 있습니까? 내가 이미 말했듯이 . . . OrderSelect()가 실패한 경우 OrderSelect()에 의존하는 거래 함수 를 호출하는 이유는 무엇입니까?

코딩을 중지하고, 코드를 살펴보고, 한 줄씩 읽고, 실제로 수행하는 작업을 이해하고, 의도한 것과 다른 경우 수정해야 하는 문제가 있습니다.

 

MathFloor는 소수점 이하 자릿수를 가장 가까운 WHOLE 숫자로 반올림합니까?

FirstTarget은 "OrderClose()" 내에서 사용자 정의 매개변수 로 의미가 있습니까? "sizeClose"가 정확하다고 가정합니까? (인용 코드 참조)

귀하의 코드가 도움이 되지 않았습니다. 죄송합니다.

사용자 정의 변수를 인쇄할 수 있습니까? 그렇다면 저널에 표시되지 않기 때문에 내가 잘못하고 있는 것이 틀림없습니다.

OrderModify는 관련이 없습니다. 맞습니다.

           double FirstTarget = OrderTakeProfit()-OrderOpenPrice()/ 2 +OrderOpenPrice();
              CloseHalfLong = OrderClose(OrderTicket(),sizeClose,FirstTarget, 3 , CLR_NONE );
사유: