오류 4756 - 페이지 2

 
angevoyageur :
주문을 보내거나 수정하는 데 어떤 기능, 클래스/방법을 사용하고 있습니까?
MqlTradeRequest 설정 후 OrderSend()
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
RaptorUK :
MqlTradeRequest 설정 후 OrderSend()

이것을 보았습니까( OrderSend 문서 에서)?

OrderSend() 메서드 작업이 성공적으로 완료되었다고 해서 시장가 주문을 할 때 항상 성공적인 거래 완료를 의미하는 것은 아닙니다. 거래 서버 반환 코드가 포함 retcode 반환된 결과 에서 작업 유형 에 따른 거래 또는 주문 필드의 값을 확인합니다 .


코드 보는 것이 더 쉬울 것입니다.

 
angevoyageur :

이것을 보았습니까( OrderSend 문서 에서)?


코드 보는 것이 더 쉬울 것입니다.

반환된 결과를 확인하고 TRADE_RETCODE_PLACED 또는 TRADE_RETCODE_DONE을 반환하는 경우에만 SL 및 TP를 배치하려고 합니다.

         if ( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
            {
            SetTPandSL = false ;
             Print ( "Return code # " , result.retcode, " Bid " , result.bid, " Ask " , result.ask, " Deal price " , result.price);
            }
         else SetTPandSL = true ;

         if (SetTPandSL && ECN)
            {
             // now modify Position to add SL & TP
             ZeroMemory (request);
             ZeroMemory (result);
            request.action = TRADE_ACTION_SLTP ;                   // setting the TP & SL
            request.symbol = _Symbol ;                             // symbol
            request.sl = lastTick.ask - SL_Size * _Point ;         // Stop Loss
            request.tp = lastTick.ask + TP_Size * _Point ;         // Take Profit  
            
             //--- send a trade request
             OrderSend (request,result);
            
             //--- write the server reply to log  
             Print ( __FUNCTION__ , ": Placeing SL & TP " ,result.comment, " Return code # " , result.retcode);  
             if ( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) 
               Print ( "Return code # " , result.retcode, " Bid " , lastTick.bid, " Ask " , lastTick.ask, " Deal price " , 
                  result.price, " SL: " , request.sl, " TP: " , request.tp, " Freeze: " , Freeze, " Stoplevel: " , Stop );
            }
 
RaptorUK :

반환된 결과를 확인하고 TRADE_RETCODE_PLACED 또는 TRADE_RETCODE_DONE을 반환하는 경우에만 SL 및 TP를 배치하려고 합니다.


OrderSend() 메서드 작업이 성공적으로 완료되었다고 해서 시장가 주문을 할 때 항상 성공적인 거래 완료를 의미하는 것은 아닙니다. 거래 서버 반환 코드가 포함 retcode 반환된 결과 에서 작업 유형 에 따른 거래 또는 주문 필드의 값을 확인합니다 .

거래 티켓 번호를 확인해야 합니다.

   if ( (result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) || result.deal == 0 ) 

이것은 마지막 단어가 아닙니다. 거래 티켓이 0이면 SL/TP 수정은 어쨌든 실행되지 않습니다. 아직 찾고있는 중...


 
angevoyageur :

거래 티켓 번호를 확인해야 합니다.

이것은 마지막 단어가 아닙니다. 거래 티켓이 0이면 SL/TP 수정은 어쨌든 실행되지 않습니다. 아직 찾고있는 중...

나는 그렇게 할 수 있지만 문제는 거래가 성공적이었고 포지션이 열렸다는 것입니다. . 그러나 SL 및 TP를 추가하려고 할 때 유효하지 않은 중지 가 유효하지 않은 경우에도 실패했습니다. TP & SL 설정 요청을 보내기 전에 어떤 일이 일어나기를 기다려야 하는 것 같습니다. . . 하지만 내가 기다려야 하는 공식 문서화된 것이 무엇인지 잘 모르겠습니다.

답장을 보내 주셔서 감사합니다 :-)

 
RaptorUK :

나는 그렇게 할 수 있지만 문제는 거래가 성공적이었고 포지션이 열렸다는 것입니다. . 그러나 SL 및 TP를 추가하려고 할 때 유효하지 않은 중지가 유효하지 않은 경우에도 실패했습니다. TP & SL 설정 요청을 보내기 전에 어떤 일이 일어나기를 기다려야 하는 것 같습니다. . . 하지만 내가 기다려야 하는 공식 문서화된 것이 무엇인지 잘 모르겠습니다.

답장을 보내 주셔서 감사합니다 :-)

알아요. 나는 응답을 찾기 위해 모든 mql5 사이트를 확인 하고 있습니다 :-D

편집하다:

이 사이트 에는 거래 실행 유형의 시장 에서 sl /tp 를 넣는 방법에 대한 설명 전혀 없습니다.

실제로 동일한 문제가 있지만 OrderSend 대신 PositionOpen을 사용하면 수동으로 할 수도 있습니다.

 
angevoyageur :

알아요. 나는 응답을 찾기 위해 모든 mql5 사이트를 확인하고 있습니다 :-D

편집하다:

이 사이트 에는 거래 실행 유형의 시장 에서 sl /tp 를 넣는 방법에 대한 설명 전혀 없습니다.

실제로 동일한 문제가 있지만 OrderSend 대신 PositionOpen을 사용하면 수동으로 할 수도 있습니다.

나는 찾았다. EA와 거래 서버 간의 동기화 문제입니다. 이벤트 핸들러 OnTradeTransaction()을 사용해야 합니다.

OrderSend() 함수가 보낸 서버에서 거래 요청을 실행한 결과는 OnTradeTransaction 핸들러에서 추적할 수 있습니다. OnTradeTransaction 핸들러는 하나의 거래 요청을 실행할 때 여러 번 호출됩니다.

예를 들어, 시장 구매 주문을 보낼 때 처리되고 해당 계정에 대해 적절한 구매 주문이 생성된 다음 해당 주문이 실행되어 미결 주문 목록에서 제거된 다음 주문 내역에 추가됩니다. 거래가 기록에 추가되고 새 위치가 생성됩니다. OnTradeTransaction 함수는 이러한 각 이벤트에 대해 호출됩니다.

RTFM ;-) 한번 해보세요...내일 저를 위해.
 
angevoyageur :

나는 찾았다. EA와 거래 서버 간의 동기화 문제입니다. 이벤트 핸들러 OnTradeTransaction()을 사용해야 합니다.

RTFM ;-) 한번 해보세요...내일 저를 위해.
아하 감사합니다 한번 보겠습니다. :-)
 
RaptorUK :
아하 감사합니다 한번 보겠습니다. :-)
이것이 당신이 찾은 스레드입니까? https://www.mql5.com/en/forum/10850 내가 겪고있는 것과 동일한 문제를보고합니다.
 

내 EA에서 빌드 778에서 이상한 오류가 발생했습니다. 볼륨 0.1은 정규화되었으며 분명히 유효하지 않습니다.

2013.03.12 07:29:57 피벗(SILVER,M5) SILVER는 볼륨 0.10으로 ORDER_TYPE_SELL_STOP 에 실패했습니다. err# 4756 확인 코드: 10014 댓글: 잘못된 볼륨

2013.03.12 07:20:00 피벗(SILVER,M5) SILVER는 볼륨 0.10으로 ORDER_TYPE_SELL_STOP에 실패했습니다. err# 4756 반환된 코드: 10014, 브로커 설명: 잘못된 볼륨

다음은 그것을 불러오는 코드입니다.

       ResetLastError ();
       if ( OrderCheck (_request,_check)){
         if (! OrderSend (_request,_result)){
             Print (TradeSymbol, " failed " , EnumToString (OrderType), " with volume " , DoubleToString (OrderVolume, 2 ), "; err# " , GetLastError (), " returned code: " ,_result.retcode, ", broker comments: " ,_result.comment);
             return ( false );}
         else {
             if (_result.retcode!=( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE )){
               Print (TradeSymbol, " failed " , EnumToString (OrderType), " with volume " , DoubleToString (OrderVolume, 2 ), "; err# " , GetLastError (), " returned code: " ,_result.retcode, ", broker comments: " ,_result.comment);}}}
       else {
         Print (TradeSymbol, " failed " , EnumToString (OrderType), " with volume " , DoubleToString (OrderVolume, 2 ), "; err# " , GetLastError (), " check code: " ,_check.retcode, " comments: " ,_check.comment);
         return ( false ); }


Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5