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

 

이것은 몇 가지 게시물에 대한 내 답변에서 나온 것입니다. . . 가장 간단한 방법입니다. . .

" 특정 시간, 특히 23:00 GMT+2에 두 개의 보류 중인 주문 을 설정했습니다. 보류 중인 주문 중 하나는 매도 스탑이고 다른 하나는 바이 스탑입니다. 두 주문은 모두 오픈에서 동일한 거리에 떨어져 있습니다. 23:00 캔들, 이 경우 14핍. 둘 다 TakeProfit은 28핍(이 경우)이고 StopLoss는 55핍입니다. "

23:00 캔들을 참조하여 원래 TP가 어디에 있었는지 계산하고 주문을 확인하고 여전히 원래 TP로 설정되어 있는지 확인할 수 있습니다. 그렇다면 수정할 수 있습니다. . . 그렇지 않은 경우 이미 수정되었으므로 다시 수정하지 마십시오.

 

이 시도 . . . . 컴파일되지만 아직 전략 테스터 에서 시도하지 않았습니다. . .

파일:
madmax.mq4  10 kb
 
RaptorUK :

이 시도 . . . . 컴파일되지만 아직 전략 테스터에서 시도하지 않았습니다. . .

SL과 TP가 맞는 것처럼 보이고 'OrderSend'가 이전 코드와 다소 같은 방식으로 배치되어 있는데도 어떤 이유로 'OrderSend error 130 '이 발생합니다. 왜 이런 일이 발생합니까?

코드의 이 부분을 가져왔습니다.

   int CountOpenOrders = 0 ;
   double Candle23Open; 
   int Spread = MarketInfo ( Symbol (), MODE_SPREAD);
   
   Candle23Open = Open[ iBarShift ( NULL , 0 , StrToTime ( "23:00" ) ) ]; // price value of the Open of the 23:00 hour candle
   
   for ( int iPos = OrdersTotal ()- 1 ; iPos >= 0 ; iPos--)
      {
       if ( OrderSelect (iPos,SELECT_BY_POS) && 
         OrderMagicNumber () == MagicNumber &&
         OrderSymbol () == Symbol () &&
         OrderType () < 2                //  less than 2 is either OP_BUY (0) or OP_SELL (1) 
         )
      CountOpenOrders++;
      } // end of for(int iPos  

   if (CountOpenOrders == 2 )   //  we have 2 open orders,  should we modify or have the already been modified ?
      {
       for (iPos = OrdersTotal ()- 1 ; iPos >= 0 ; iPos--)
         {
         if ( OrderSelect (iPos,SELECT_BY_POS) && 
             OrderMagicNumber () == MagicNumber &&
             OrderSymbol () == Symbol () 
            )
            {
             if ( OrderType () == 1 )               //  OP_SELL (1)  
               {
               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 ))
                     {
                     Print ( "Error modifying order : " , GetLastError ());
                     return ( 0 );
                     }
               }
            
             if ( OrderType () == 0 )               //  OP_BUY (0)
               {
               if ( OrderTakeProfit () < Candle23Open + ((TakeProfitModified - 1 ) * Point ) )       //  check if TakeProfit has already been modified
                   if (! OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (), Candle23Open + (TakeProfitModified * Point ), 0 , Blue ))
                     {
                     Print ( "Error modifying order : " , GetLastError ());
                     return ( 0 );
                     }
                  
               }
                  
            }         
         }
      }
   
        
   } 

이전 EA(원본)에 배치하고 주문을 열지만 수정하지는 않습니다. 귀하가 제공한 EA에서 OrderSend 오류가 수정된다면 작동할 수 있다고 생각합니다.

아 그리고 이 부분에서

 if (! OrderModify

이것은 ! 을 위한?

매우 감사합니다,

매드맥스3

 
madmax3 :


아 그리고 이 부분에서

이것은 ! 을 위한?

매우 감사합니다,

매드맥스3

OrderModify()에 대한 문서를 확인 했습니까? 그것은 무엇을 반환합니까?
 
madmax3 :

SL과 TP가 정확하고 'OrderSend'가 이전 코드와 다소 같은 방식으로 배치되어 있음에도 불구하고 'OrderSend 오류 130'이 발생합니다. 왜 이런 일이 발생합니까?

5자리 브로커를 고려하여 TP 및 SL을 조정하셨습니까? 귀하의 브로커는 5자리 브로커입니까?
 

나는 그것을 작동 시켰고 변수를 채우는 것을 놓쳤습니다 (묻고 입찰한 거리). OrderModify 문서는 설명하지 않습니다! 나는 믿는다.
코드가 잘 작동하는 것 같지만 한 가지 문제는 두 거래가 열려 있을 때 매수 거래만 수정하고 매수 및 매도 거래가 모두 수정되지 않는다는 것입니다. 왜 이렇게 하는지 잘 모르겠습니다. 어떤 아이디어가 있습니까?

감사해요,

매드맥스3

 
madmax3 :

나는 그것을 작동 시켰고 변수를 채우는 것을 놓쳤습니다 (묻고 입찰한 거리). OrderModify 문서는 설명하지 않습니다! 나는 믿는다.
코드가 잘 작동하는 것 같지만 한 가지 문제는 두 거래가 열려 있을 때 매수 거래만 수정하고 매수 및 매도 거래가 모두 수정되지 않는다는 것입니다. 왜 이렇게 하는지 잘 모르겠습니다.

감사해요,

매드맥스3

OrderModify는 bool을 반환합니다. . . 그래서 ! bool 과 관련하여 는 NOT 입니다. . . 그래서 !OrderModify()는 . . . OrderModify가 false를 반환하는 경우, 즉 실패합니다.

귀하의 코드를 다시 살펴보겠습니다. . . 또는 그것에 대한 내 모드.

 
madmax3 :

나는 그것을 작동 시켰고 변수를 채우는 것을 놓쳤습니다 (묻고 입찰한 거리). OrderModify 문서는 설명하지 않습니다! 나는 믿는다.
코드가 잘 작동하는 것 같지만 한 가지 문제는 두 거래가 열려 있을 때 매수 거래만 수정하고 매수 및 매도 거래가 모두 수정되지 않는다는 것입니다. 왜 이렇게 하는지 잘 모르겠습니다. 어떤 아이디어가 있습니까?

감사해요,

매드맥스3


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

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

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

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

 
madmax3 :

코드가 잘 작동하는 것 같지만 한 가지 문제는 두 거래가 열려 있을 때 매수 거래만 수정하고 매수 및 매도 거래가 모두 수정되지 않는다는 것입니다. 왜 이렇게 하는지 잘 모르겠습니다. 어떤 아이디어가 있습니까?

로그에서 오류를 확인하십시오. . . 전략 테스터 에서 실행 중인 경우 저널 탭을 확인하고 라이브 또는 데모에서 실행 중인 경우 전문가 탭을 확인합니다. 당신이 무엇을 찾았는지 알려주십시오. . .
 
RaptorUK :
로그에서 오류를 확인하십시오. . . 전략 테스터에서 실행 중인 경우 저널 탭을 확인하고 라이브 또는 데모에서 실행 중인 경우 전문가 탭을 확인합니다. 당신이 무엇을 찾았는지 알려주십시오. . .
2012.04.09 21:21:27 2012.01.17 00:59 테스터: 주문 #1, 0.01 EURUSD 매도 1.26498에서 열림
2012.04.09 21:21:27 2012.01.17 02:21 테스터: 주문 #2, 0.01 EURUSD 매수 1.26795에서 시작

2012.04.09 21:21:27 2012.01.17 02:21 MadMax EURUSD,H1: 수정 #2 1.26795에서 0.01 EURUSD 매수 sl: 1.26218 tp: 1.27352 ok
2012.04.09 21:21:27 2012.01.17 03:00 MadMax EURUSD,H1: 수정 #2 1.26795에서 0.01 EURUSD 구매 sl: 1.26218 tp: 1.27480 확인

어떤 이유로 구매 거래를 두 번 수정하고 있습니다(두 번째 수정은 필요한 TP로 이동하지만 일부 거래에서는 9:00 또는 10:00와 같은 특정 전체 시간에 수정을 계속하는 것으로 보입니다). 실제 오류가 있습니다.