절반 부지를 폐쇄합니다.

 

그래서 나는 보류 주문 을 삭제하고 정지가 이동 평균과 동기화된다는 것을 기반으로 다른 주문을 다시 적용하는 루프를 통합할 수 있었습니다. 로트는 정지할 진입로의 핍 거리를 기반으로 계산됩니다. 이 뿐만 아니라, 정지 거리를 비율로 사용하여 이익 목표가 어떻게 작동하는지 알아냈습니다(extern int - 내가 1-2-3 R;R 등을 선택하는 것) - 그래서 이것도 역시 움직입니다.

따라서 내 코드 및 기타 비트와 밥 출력과 관련하여 이전 게시물에 대한 의견을 보내주셔서 감사합니다!


어쨌든 - 가격이 내 2배 비율 이익 목표의 50%에 도달하면 포지션의 절반을 청산하려고 합니다... 저널에 인쇄해야 한다는 것을 알고 있으며 현재 그것을 쓰고 있습니다. 하지만 누가 말할 수 있습니까? 어쨌든 내가 이것을 잘못 쓰고 있다면? 아마도 "OrderLots()/2"와 관련하여?

"btp" = 특정 가격을 반환합니다.

         if (Bid == btp-OrderOpenPrice()/ 2 +OrderOpenPrice()){
         
         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)
               
               CloseHalfLong = OrderClose(OrderTicket(),OrderLots()/ 2 ,Bid, 3 , CLR_NONE );
         
             if (CloseHalfLong!=TRUE) Print ( "LastError = " , GetLastError ());
         }
         }
 
DomGilberto :

그래서 나는 보류 주문을 삭제하고 정지가 이동 평균과 동기화된다는 것을 기반으로 다른 주문을 다시 적용하는 루프를 통합할 수 있었습니다. 로트는 정지할 진입로의 핍 거리를 기반으로 계산됩니다. 이 뿐만 아니라, 정지 거리를 비율로 사용하여 이익 목표가 어떻게 작동하는지 알아냈습니다(extern int - 내가 1-2-3 R;R 등을 선택하는 것) - 그래서 이것도 역시 움직입니다.

따라서 내 코드 및 기타 비트와 밥 출력과 관련하여 이전 게시물에 대한 의견을 보내주셔서 감사합니다!


어쨌든 - 가격이 내 2배 비율 이익 목표의 50%에 도달하면 포지션의 절반을 청산하려고 합니다... 저널에 인쇄해야 한다는 것을 알고 있으며 현재 그것을 쓰고 있습니다. 하지만 누가 말할 수 있습니까? 어쨌든 내가 이것을 잘못 쓰고 있다면? 아마도 "OrderLots()/2"와 관련하여?

"btp" = 특정 가격을 반환합니다.

나는 OrderLots()/2가 모든 상황에서 그것을 잘라낼 것이라고 생각하지 않습니다(말장난을 사면하십시오), 나는 당신이 MarketInfo() MODE_LOTSTEP 및 MODE_MINLOT에 대해 청산하려는 포지션 크기를 검증해야 한다고 확신합니다

여기를 보십시오: https://www.mql5.com/en/forum/143966

 
RaptorUK : 나는 OrderLots()/2가 모든 상황에서 그것을 잘라낼 것이라고 생각하지 않습니다(말장난을 사면하십시오), 나는 당신이 MarketInfo() MODE_LOTSTEP 및 MODE_MINLOT에 대해 청산하려는 포지션 크기를 검증해야 한다고 확신합니다.
정확히. 내 CloseOrder() 보기
 

감사합니다 RaptorUK - 귀하의 링크에서 WHRoeder를 어디에서 찾고 있는지 잘 모르겠지만 감사합니다.

저만 그런 건가요, 아니면 오픈 포지션에서 로트를 청산하는 과정이 조금 직관적이지 않은 건가요... 내가 하고 싶은 일을 고려할 때 불필요하게 복잡한 것 같습니다...

이 코드를 하루 동안 충분히 살펴본 것 같습니다. MarkerInfo()를 OrderClose와 함께 사용하는 방법을 이해하지 못하고 있습니다. 불필요하게 복잡해 보입니다.

 
DomGilberto :

감사합니다 RaptorUK - 귀하의 링크에서 WHRoeder를 어디에서 찾고 있는지 잘 모르겠지만 감사합니다.

저만 그런 건가요, 아니면 오픈 포지션에서 로트를 청산하는 과정이 조금 직관적이지 않은 건가요... 내가 하고 싶은 일을 고려할 때 불필요하게 복잡한 것 같습니다...

이 코드를 하루 동안 충분히 살펴본 것 같습니다. MarkerInfo()를 OrderClose와 함께 사용하는 방법을 이해하지 못하고 있습니다. 불필요하게 복잡해 보입니다.

주문 위치 크기가 0.3 랏이고 절반을 0.15 랏으로 청산하려는 경우 브로커의 MODE_LOTSTEP가 0.1이면 0.15는 유효하지 않은 로트 크기입니다. . . 따라서 OrderClose()를 사용하기 전에 닫으려는 위치 크기를 확인하십시오.
 
아 알았다! RaptorUK 감사합니다! 마지막 질문, 로트 크기를 확인한다고 말할 때 If 문을 사용하여 비교하는 것입니까?
 
DomGilberto : 귀하의 링크에서 WHRoeder를 어디에서 찾고 있는지 잘 모르겠지만 감사합니다.
해당 페이지의 최상위 링크
 
아 갓챠! 멋진 코딩이네요... :o!

언젠가 그 수준의 프로그래밍을 유지할 수 있기를...


WHRoeder님 감사합니다!
 
DomGilberto :
아 알았다! RaptorUK 감사합니다! 마지막 질문, 로트 크기를 확인한다고 말할 때 If 문을 사용하여 비교하라는 말입니까?

아니요, MODE_LOTSTEP 및 MODE_MINLOT를 준수하도록 조정하는 것입니다. . . 내가 게시한 링크를 보면 유효합니다(검증됨). . .

mlots = MathFloor (mlots / lotstep) * lotstep; 

mlots가 0.15mlots(MODE_MINLOT)가 0.1이고 lotstep(MODE_LOTSTEP)이 0.1이라고 가정하면 코드가 다음을 수행합니다.

mlots = MathFloor ( 0.15 / 0.1 ) * 0.1 ; 
//  MathFloor(0.15 / 0.1) ==  MathFloor( 1.5 )  gives 1

//  mlots = 1 * 0.1;  

따라서 mlots는 0.15에서 0.1로 조정되고 유효합니다.

 
아 자리에! 문제를 해결해 주셔서 감사합니다. 알겠습니다!