기고글 토론 "초보자를 위한 MQL5 Expert Advisor 코드 작성 가이드" - 페이지 17

 
아주 좋아요! 감사합니다!
 

파일을 다운로드하고 코드를 디버깅했는데이 경고가 표시되어 누군가이 문제를 도와 줄 수 있습니까?


'OrderSend'의 반환 값을 확인해야 합니다.


 

안녕하세요, 저는 로봇을 테스트하고 있는 초보자입니다.

이렇게 해보세요:

// 주문 보내기(mrequest,mresult);

bool res=OrderSend(mrequest,mresult);

// 결과 코드 가져오기

if(res && (mresult.retcode==10009 || mresult.retcode==10008)) //요청이 완료되었거나 주문이 접수되었습니다.

{

Alert("티켓번호:",mresult.order,"!!")로 구매 주문이 성공적으로 접수되었습니다;

}

else

{

Alert("구매 주문 요청을 완료할 수 없습니다 -error:",GetLastError());

ResetLastError();

return;

}

제가 틀렸다면 바로잡아 주세요!

연구 출처: https://www.mql5.com/en/forum/23663

return value of 'OrderSend' should be checked
return value of 'OrderSend' should be checked
  • 2014.05.03
  • www.mql5.com
Hi ! I'm wondering how to do that ...:/ the warning appeared @ the last update...
 

디버깅을 할 때 주문을 보낼 때 항상 오류가 발생합니다. 제 코드인 줄 알았는데, 다운로드하기 위해 mql5 파일을 테스트해도 오류가 발생합니다.



 
northedan:

디버깅을 할 때 주문을 보낼 때 항상 오류가 발생합니다. 제 코드인 줄 알았는데, 다운로드하기 위해 mql5 파일을 테스트해도 오류가 발생합니다.



예제가 통화로 되어 있어서 0.1이라는 로트 변수가 테스트에 적합하지 않은 것 같은데, 다음과 같이 변경해 보세요(mrequest.volume 변수 변경):


double minSymbolLot = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);

mrequest.action = TRADE_ACTION_DEAL; // 즉시 주문 실행

mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // 최신 매도 호가

mrequest.sl = NormaliseDouble(latest_price.ask - STP*_Point,_Digits); // 스톱로스를 설정합니다.

mrequest.tp = NormaliseDouble(latest_price.ask + TKP*_Point,_Digits); // 테이크 프로핏

mrequest.symbol = _심볼; // 통화쌍

mrequest.volume = minSymbolLot; // 거래할 랏 수

mrequest.magic = EA_Magic; // 주문 매직넘버

mrequest.type = ORDER_TYPE_BUY; // 구매 주문

mrequest.type_filling = ORDER_FILLING_FOK; // 주문 체결 유형

mrequest.deviation=100;

 
이 EA를 미니 지수 또는 미니 달러에 사용할 수 있는지 아는 사람이 있나요?
 
Sella170:
이 EA를 미니 지수 또는 미니 달러에 사용할 수 있는지 아는 사람이 있나요?

전략을 이해하셨나요? 위험을 알고 있습니까? SL 및 TP 레벨을 분석했습니까? 사용된 보조지표를 알고 있습니까? 매개변수화 방법을 알고 있습니까? 각 자산에 대한 변수를 사용자 지정하는 방법을 알고 있습니까(WIN 및 WDO)?

코드 자체는 모든 자산에 대해 개발되었으며 "_심볼"과 차트 시간 "_기간"을 통해 이를 식별할 수 있습니다.

이제 EA를 실행할 때 자신이 무엇을 하고 있는지 아는 것이 중요합니다. 도구를 숙달하고 주식 시장에 대한 이해도가 높아질 때까지 데모 계좌로만 거래하는 것이 좋습니다.

[ ]'s

 

여러분,

여러 주문이 동시에 열리는 오류가 발생하는 경우 간단히 수정할 수 있는 코드입니다.

167~177줄에서 이 코드를 다음과 같이 바꾸세요.

   if(PositionSelect(_Symbol)==true) // 오픈 포지션이 있습니다.
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //매수입니다.
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // 판매입니다.
        }
     }

를 이렇게 바꾸세요:

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //매수입니다.
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // 판매입니다.
           }
        }
      }

고마워요 @Samuel Olowoyo

 
Korobejnik:

문제 해결 방법을 알려주세요. 전문가 어드바이저가 여러 포지션을 연속으로 열어 매수하고 매도할 때도 마찬가지입니다.

코드에 체크가 있음에도 불구하고 전문가 조언자가 이미 열려있는 매수 및 매도 포지션이 있음을 인식하지 못하고 새 포지션을 엽니다.

이미 개설된 포지션에 대해. 어떤 이유로 수표가 작동하지 않습니다.

여기에는 트롤 중재자의 도움이 없으므로 영어 포럼의 답변을 복사하겠습니다:

여러분, 이것은 여러 주문이 동시에 열리는 데 오류가있는 경우 간단히 수정할 수있는 간단한 코드입니다. 이 코드를 167~177줄에서 다음과 같이 바꾸세요.

   if(PositionSelect(_Symbol)==true) // 오픈 포지션이 있습니다.
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true;  //매수입니다.
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; // 판매입니다.
        }
     }

이것으로:

   int total= PositionsTotal();
   for(int i=0;i<total;i++)
     {
      if(PositionGetSymbol(i)==_Symbol);
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            Buy_opened=true;  //매수입니다.
           }
         else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            Sell_opened=true; // 판매입니다.
           }
        }
      }
 
Locus_Neminis:

여기서는 트롤 운영진으로부터 도움을 받을 수 없으므로 영어 포럼의 답변을 복사하겠습니다:

여러분, 여러 주문이 동시에 열리는 오류가 발생하는 경우 간단히 수정할 수 있는 코드가 있습니다. 167~177줄에서 이 코드를 다음과 같이 바꾸세요.

이렇게 바꾸세요:

도움이 되지 않습니다. 내 프로필에 이와 관련된 스레드가 있습니다. 거기에 문제의 원인과 해결책이 있습니다.
트롤에 대해 이해가 되지 않습니다.