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

 
DomGilberto :
아 예 - 알았어요! 나는 그것을하는 방법을 알고 있다고 생각합니다 - 지금 플레이로 돌아가십시오 :)
 
int start()
   {
   if (IsNewCandle())
      {
      CheckForMaTrade();
       if (UseCandleTrail)AdjustTrail();
      }

   if (OpenOrdersThisPair( Symbol ())> 0 )
      {
       if (UseMoveToBreakEven)MoveToBreakEven();
       if (UseTrailingStop)AdjustTrail();
       if (Use_MA_Trail)MA_Trail();
      CloseHalfOrder(); // If there is an order call this void - loop inside the void - "if(OrderType()!=OP_BUY)continue;"
      }
   }
그게 효과가 있을까요? 거기에서 모든 틱 을 확인할까요? (CloseHalfOrder())

아래 업데이트 - 작동합니다 :)
 

죄송합니다. 시도하기 전에 101개 질문을 중단해야 합니다.:P

예 - 작동합니다. 이제 틱이 들어오고 입찰가가 >= OrderClose 가격이 지정되자 마자 닫힙니다.

올바른 방향으로의 멋진 큰 발걸음! 이제 가격이 OrderClose 함수 에 지정된 동일한 가격을 다시 방문할 때마다 계속해서 반으로 닫히지 않도록 하는 클램프를 설치합니다. :)

(그 성가신 OrderModify 오류 1도 제거했습니다!) 흠, 첫 번째 대상(1:1)이 완료한 후 대기하는 올바른 논리가 생각나지 않습니다... 어떤 생각이 있습니까? OrderTicket() 번호는 동일합니다... 그렇게 되면 안되나요? 나는 지금 그 부분에 붙어 있습니다 :) 이 비트를 가지고 나면 꽤 많이 금이 갔습니다. :)

당신의 도움에 정말 감사드립니다!

 
DomGilberto :


당신의 도움에 정말 감사드립니다!

당신을 환영합니다, 나는 자신을 먼저 돕고 기꺼이 듣고 싶어하는 사람들을 돕는 데 아무런 문제가 없습니다.
 
믿을 수 없는 1 2 4 5 6 7 8 9 10 11 12

얼마나 거대한 주제인가

절반 부지를 폐쇄합니다.

당신이 아는 순간에 어떻게 해야 하는지 다른 사람에게 설명할 수 있기를 바랍니다.

101문제... 다 읽고 싶은 사람...

(그 성가신 OrderModify 오류 1도 제거했습니다!)

이것은 이미 있는 설정으로 거래를 수정하려고 하면 대부분 발생합니다.

 

당신이 그것을 알아 내면 너무 보람이 있습니다! 물론 귀하의 의견에도 감사드립니다!

내가 막힌 마지막 비트는 해당 OrderClose() 종료 가격에서 열린 주문을 계속 절반으로 줄이지 않도록 루프에 지시하는 것입니다. 나는 솔직히 논리를 이해할 수 없습니까? WHEN과 WHAT 가격으로 부분적으로 닫는 것이 현물입니다. 주문이 한 번 반감되면 중지하라고 말해야 합니까?

문제는 OrderClose()가 열린 위치에서 반쯤 닫히면 "OP_BUY"가 열릴 때마다 "int start"가 "CloseHalfOrder()"를 호출하기 때문에 계속해서 호출된다는 것입니다. ... 이견있는 사람?

 //+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
   if(OrderType()==OP_BUY)
      {
      CloseHalfOrder();
      } 
} // ---// <<<<<<<<<<<<< I haven't bothered copying and pasting all of in start() functions. Just showing you how the "CloseHalfOrder" is being called...


//+--------------------------------------------------------------------------------------------------+
//| Close OP_BUY Half lots @ 1:1 Function                                                            |
//+--------------------------------------------------------------------------------------------------+
void CloseHalfOrder()
{   
   
   double minLot=MarketInfo( Symbol (),MODE_MINLOT);
   //Print("The minimum lots are: ",DoubleToStr(minLot,Digits));

   double lotStep=MarketInfo( Symbol (),MODE_LOTSTEP);
   //Print("The Lotstep is: ",DoubleToStr(lotStep,Digits));

   double half= MathFloor (OrderLots()/ 2 /lotStep)*lotStep;
   Print ( "The Lots to close is: " ,DoubleToStr(half, Digits ));

for ( int c= OrdersTotal ()- 1 ; c>= 0 ; c--)
      {
       if ( OrderSelect (c,SELECT_BY_POS,MODE_TRADES)== true )
         {
         Print ( "Order Ticker Number = " ,OrderTicket());
         Print ( "Order Lots Open = " ,OrderLots());
         }
       else
          {
           Print ( "Order Select returned the error of " , GetLastError ()); // Order Select does not seem to want to work?
           continue ;
          }

       double FirstTarget_Buy=OrderOpenPrice()+(( OrderTakeProfit()-OrderOpenPrice())/ 2 );
       Print ( "FirstTarget_Buy: " ,DoubleToStr(FirstTarget_Buy, Digits ));
      
       if (OrderMagicNumber()==MagicNumber)
         if (OrderSymbol()== Symbol ())
             if (OrderLots()>minLot)
            {
             Print ( "Current Bid: " ,DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " ,DoubleToStr(FirstTarget_Buy, Digits ));
             int HalfCloseTicket = OrderTicket();
            
             if (OrderType()==OP_BUY && Bid>=FirstTarget_Buy+( Point / 2 )) // Doesn't seem to even go further than this as I do not get an error from OrderClose?
               {
               Print ( "Bid >= FirstTarget_Buy - Current Bid: " ,DoubleToStr(Bid, Digits ), " FirstTarget_Buy: " ,DoubleToStr(FirstTarget_Buy, Digits ));
               bool Close_Half_Order_Buy=OrderClose(HalfCloseTicket,half,Bid, 3 , CLR_NONE );
               if (Close_Half_Order_Buy!=TRUE) Print ( "Close_Half_Order_Buy Last Error = " , GetLastError ());
               if (Close_Half_Order_Buy==True) Print ( "First Target Closed: " , OrderLots());
               }
            }
         if (Close_Half_Order_Buy==True)
         {
         MoveToBreakEven(); // This is a void.
         EMA_Exit(); // This is another void being called on the basis I can get this loop above to just close the OP_BUY once...
         }    
     }
}
 
deVries :
믿을 수 없는 1 2 4 5 6 7 8 9 10 11 12

얼마나 거대한 주제인가

절반 부지를 폐쇄합니다.

당신이 아는 순간에 어떻게 해야 하는지 다른 사람에게 설명할 수 있기를 바랍니다.

101문제... 다 읽고 싶은 사람...

(그 성가신 OrderModify 오류 1도 제거했습니다!)

이것은 이미 있는 설정으로 거래를 수정하려고 하면 대부분 발생합니다.


친구 미결 주문을 부분적으로 마감하는 간단하고 효과적인 방법을 설명하는 스레드를 작성하게 되어 기쁩니다. 마지막으로 한 비트만 남으면 작동하는 민트입니다! 다른 사람들이 사용할 수 있도록 하나의 간결한 주제/스레드로 모든 것을 조합할 것입니까? (이 작업을 수행하는 방법을 잘 모르겠습니까?)

위의 마지막 게시물을 참조하십시오. 거의 완료했습니다. 루프가 동일한 OrderClose() 종료 가격으로 반을 닫는 것을 계속해서 지시하는 논리를 이해할 수 없습니까?

OrderModify 오류 1과 관련된 팁도 주셔서 감사합니다. :)
 
DomGilberto :

친구 미결 주문을 부분적으로 마감하는 간단하고 효과적인 방법을 설명하는 스레드를 작성하게 되어 기쁩니다. 마지막으로 한 비트만 남으면 작동하는 민트입니다! 다른 사람들이 사용할 수 있도록 하나의 간결한 주제/스레드로 모든 것을 조합할 것입니까? (이 작업을 수행하는 방법을 잘 모르겠습니까?)

위의 마지막 게시물을 참조하십시오. 거의 완료했습니다. 루프가 동일한 OrderClose() 종료 가격으로 반을 닫는 것을 계속해서 지시하는 논리를 이해할 수 없습니까?

OrderModify 오류 1과 관련된 팁도 주셔서 감사합니다. :)

먼저 티켓을 손익분기점으로 이동한 다음 거래의 일부를 닫으십시오 .... if OrderLots() >= .......
 
deVries :

먼저 티켓을 손익분기점으로 이동한 다음 거래의 일부를 닫으십시오 .... if OrderLots() >= .......

이것 때문에? 내가 먼저 깰려고 움직여도 상관없지... 첫 번째 걸림돌은 이 부분이 이해가 안 가는데? 내가 먼저 손익분기점을 이동한 다음 반을 청산하더라도 "CloseHalfOrder();"를 호출하여 동일한 가격으로 모든 미결 포지션과 OrderClose()를 다시 호출합니까?

 int start()
   {
    
   if (OrderType()==OP_BUY)
      {
      CloseHalfOrder();
      } 
      
   }
 
DomGilberto :

이것 때문에? 내가 먼저 깰려고 움직여도 상관없지... 첫 번째 걸림돌은 이 부분이 이해가 안 가는데? 내가 먼저 손익분기점을 이동한 다음 반을 청산하더라도 "CloseHalfOrder();"를 호출하여 동일한 가격으로 모든 미결 포지션과 OrderClose()를 다시 호출합니까?


SL이 아직 BE에 있지 않은 경우에만 BE로 이동하고 절반을 닫습니다.