EA에 필요한 단순 코드(2개의 미결 주문 수정) - 페이지 5

 
deVries :


동일한 핍으로 매수 및 매도 거래 모두에 대해 StopLoss를 수정하고 싶습니까?

그것이 당신이 원하는 것인지 다시 생각하고 왜 그렇게 수정하지 않는지 알 수 있습니다....

또한 올바른 방향으로 모든 새로운 포인트로 거래를 수정하지 마십시오.

"!" 코딩이 아닌 것과 같습니다.

현재 두 거래에서 TakeProfit만 수정되기를 원하며 StopLoss는 전체 거래에서 동일합니다(현재 테스트의 경우).
 

알겠습니다. 문제를 찾았습니다. . . 스프레드는 포인트 수로 반환됩니다. . .

따라서 이 줄을 변경하십시오. . .

 if ( OrderTakeProfit () > Candle23Open - ((TakeProfitModified - 1 ) * Point ) + Spread )       //  check if TakeProfit has already been modified
                   if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (), Candle23Open - (TakeProfitModified * Point ) + Spread, 0 , Blue ))

이에 . . .

 if ( OrderTakeProfit () > Candle23Open + ((Spread - TakeProfitModified + 1 ) * Point )  )       //  check if TakeProfit has already been modified
                   if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (), Candle23Open + ((Spread - TakeProfitModified) * Point ) , 0 , Blue ))
 
RaptorUK :

알겠습니다. 문제를 찾았습니다. . . 스프레드는 포인트 수로 반환됩니다. . .

따라서 이 행을 변경하십시오. . .

이에 . . .

그것은 작동합니다, 감사합니다! 매수 및 매도 거래는 모두 지금 수정되지만 어떤 이유로 인해 거래 전반에 걸쳐 몇 번 수정되며 이익 실현은 때때로 입력이 요구하는 것보다 더 많이 가는 것 같습니다. 이것은 2:00 또는 7:00와 같이 항상 발생하는 것 같습니다. 왜 이런 일이 발생하는지 잘 모르겠습니다. 혹시 항상 변화하는 스프레드와 관련이 있습니까? 이것은 매수 및 매도 거래 모두에서 발생하므로 스프레드가 될 수 없다고 생각합니다. 내가 생각할 수 있는 유일한 방법은 23:00의 촛불이 바뀌는 것처럼 보인다는 것입니다. 비록 그것이 말이 되지 않고 어떻게 테스트할 수 있을지 모르겠습니다.

 
여기 저기에 몇 가지 Print 문을 추가하여 변수가 무엇을 하는지 보여주면 무엇이 잘못되었는지 파악하고 수정할 수 있습니다.
 

나는 이것을 사용하려고합니다 :

 Print (Open [ iBarShift ( NULL , 0 , StrToTime ( "23:00" ) )]);

바의 시가 는 바뀌지만 매번 무작위로 인쇄되는 것 같습니다.

또한 어느 날 나는 거래가 무슨 일이 있어도 22:59에 거래를 마감하는 모든 마감 규칙을 따르지 않는다는 것을 알게 되었는데, 이것이 작동을 멈춘 것 같습니다.

나는 이것을 사용하고있다

   if ( TimeDayOfWeek ( TimeCurrent ())== 5 && TimeCurrent ()>= StrToTime ( "22:59" )) { CloseAll(); return ( 0 ); }

 void CloseAll()
   {
   for ( int cnt= OrdersTotal ()- 1 ;cnt>= 0 ;cnt--)
      {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
         
       //
       //
       //
       //
       //
         
       if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL)
         {
         for ( int c= 0 ; c< 3 ; c++)
            {
             RefreshRates ();
             if ( OrderType ()==OP_BUY)
                  { double cp = Bid;}  
             else   {        cp = Ask;}
               
             OrderClose ( OrderTicket (), OrderLots (),cp, 0 , Yellow );
             int err= GetLastError ();
             if (err== 4 || err== 136 || err== 137 || err== 138 || err== 146 )
               {
               Sleep ( 5000 ); continue ;
               }  
               break ;                     
            }
             break ;

지정된 시간에 거래를 마감합니다.

 

모두 대문자로 된 게시물이 삭제되었습니다 .

글을 올릴 때 대문자를 과도하게 사용하지 마세요. 소리를 지르는 행위로 간주되어 매우 무례합니다.