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

 
전문가 고문에서 버그를 수정하는 데 도움이 필요하며 시장에 진입하고 종료 할 시간을 작성하여 설정을 변경할 수 있도록하고 싶습니다,
파일:
 
michael sedgley:
MQL5 프로그래밍에 대한 모든 변경 사항으로 인해이 단계별 코드의 업데이트 된 버전이 필요합니다.이 코드를 복사하면 더 이상 컴파일되지 않습니다 - 최신 변경 사항이 포함 된 버전이 있습니까 - 많은 감사합니다.

안녕하세요 마이클,

의견을 보내 주셔서 감사합니다. 제안하신 내용을 검토하여 코드에 대한 업데이트가 필요한 경우 곧 제공될 수 있도록 하겠습니다.

 

왜 출력 오류 코드: 10030 ?

파일:
2.png  74 kb
 

도와주세요, 여기 아무도 없나요?


왜 출력 오류 코드: 10030 ?

 

우선 기사에 감사드립니다. mql5 프로그래밍을 시작하는 데 도움이됩니다.

귀하의 코드를 시도해 보았는데 OnInit ()에 그 목적을 이해하지 못하는 코드가 약간 있습니다:

//--- 가격이 4자리 대신 5자리 또는 3자리인 통화쌍을 처리해 보겠습니다.

STP = StopLoss;

TKP = 테이크프로핏;

if(_Digits==5 || _Digits==3)

{

STP = STP*10;

TKP = TKP*10;

}

이 부분은 테이크프로핏과 스톱로스 핍의 값을 수정하기 때문에 입력값과 실제 사용 중인 값 사이에 차이가 발생합니다.

그러나 if 안에 있는 두 줄을 제거하면 주문을 서버로 보낼 때 종종 오류 10016(유효하지 않은 스톱)이 발생합니다. 첫 번째 주문 시도는 잘 진행되어 10009가 표시되지만 다음 번에는 대부분 10016이 표시됩니다. EA를 디버깅했는데 모든 손절매와 이익 실현은 현재 가격보다 30 또는 300 핍 위 또는 아래에서 손절매 30 또는 300, 이익 실현 100 또는 1000 핍의 차이로 괜찮은 것 같습니다.

STP와 TKP에 10을 곱하지 않을 때 서버에서 오류 10016이 발생하는 이유를 찾을 수 없습니다.

누구든지 _자리가 5 또는 3 일 때 오류가 발생하는 이유 또는 10을 곱하는 목적을 설명해 줄 수 있습니까?

도와주셔서 감사합니다.

 
an you please guguqiaqia:

도와주세요, 여기 아무도 없나요?


왜 출력 오류 코드: 10030 ?

안녕하세요,

어떻게 오류가 발생했는지 알려주시겠어요?

 

eshelios.sr:


먼저 기사에 감사드립니다. mql5 프로그래밍을 시작하는 데 도움이되고 있습니다.

코드를 사용해 봤는데 OnInit()의 목적을 이해하지 못하는 코드가 약간 있습니다:

//--- 가격이 4자리 대신 5자리 또는 3자리인 통화쌍을 처리해 보겠습니다.

STP = StopLoss;

TKP = 테이크프로핏;

if(_Digits==5 || _Digits==3)

{

STP = STP*10;

TKP = TKP*10;

}

이 부분은 테이크프로핏과 스톱로스 핍의 값을 수정하기 때문에 입력값과 실제 사용 중인 값 사이에 차이가 발생합니다.

그러나 if 안에 있는 두 줄을 제거하면 주문을 서버로 보낼 때 종종 오류 10016(유효하지 않은 스톱)이 발생합니다. 첫 번째 주문 시도는 잘 진행되어 10009가 표시되지만 다음 번에는 대부분 10016이 표시됩니다. EA를 디버깅했는데 모든 손절매와 이익 실현은 현재 가격보다 30 또는 300 핍 위 또는 아래에서 손절매 30 또는 300, 이익 실현 100 또는 1000 핍의 차이로 괜찮은 것 같습니다.

STP와 TKP에 10을 곱하지 않을 때 서버에서 오류 10016이 발생하는 이유를 찾을 수 없습니다.

누구든지 _자리가 5 또는 3 일 때 오류가 발생하는 이유 또는 10을 곱하는 목적을 설명해 줄 수 있습니까?

도와주셔서 감사합니다.

안녕하세요,

먼저 귀하의 설명에서 해당 코드 줄을 제거했을 때 오류가 발생하고 손절 / 이익 실현 값에 10을 곱하지 않았을 때 오류가 발생합니까? 이 코드 줄이 매우 중요하다는 것을 설명한 것 같습니다.

기사로 돌아가서 소수점 다섯 자리(0.XXXXX) 또는 소수점 세 자리(0.XXX) 통화쌍이 있는 차트를 사용하는 경우 이러한 코드 줄이 필요하다고 설명했습니다.

따라서 여기서는 EA가 모든 브로커에서 잘 작동하는지 확인하고자 합니다.Digits 또는 Digits()는현재 차트 심볼의 가격 정확도를 결정하는 십진수 자릿수를 반환합니다. 5자리 또는 3자리 가격 차트의 경우 스톱로스와 테이크프로핏에 10을 곱합니다.

아래 예시를 참조하세요:

소수점 다섯 자리 가격

5 - 소수점 이하 가격

3 - 십진수 가격

3 - 소수점 자릿수 가격

질문에 도움이 되었기를 바랍니다.

 
Samuel Olowoyo:

안녕하세요,

오류가 어떻게 발생하는지 알려주실 수 있나요?

1단계: 이 샘플 코드를 다운로드합니다.

2단계: MQL5에서 컴파일합니다.

3단계: MT5에서 EURUSD 1m차트를 연 다음 "자동 거래"를 클릭합니다.

4단계: 코드 줄 223,224 등에 중단 기호 설정...

5 단계 : MT5에서 디버깅 시작 버튼을 클릭 한 다음이 오류를 표시합니다.

 
 guguqiaqia:

1단계: 이 샘플 코드를 다운로드합니다.

2단계: MQL5에서 컴파일합니다.

3단계: MT5에서 EURUSD 1m차트를 연 다음 "자동 거래"를 클릭합니다.

4단계: 코드 줄 223,224 등에 중단 기호 설정...

5 단계 : mt5에서 디버깅 시작 버튼을 클릭 한 다음이 오류를 표시합니다.

안녕하세요,

단계를 공유해 주셔서 감사합니다. 다시 코드로 돌아가겠습니다,

if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
{
   Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
}
else
{
   Alert("The Buy order request could not be completed -error:",GetLastError());    // line 223
   ResetLastError();                                                                // line 224
   return;

제가 아는 한 코드는 제대로 작동했습니다. 시도한 주문이 성공하지 못했기 때문에 오류가 발생했으며 이것이 223 줄이 수행해야하는 작업입니다. 이 오류의 의미를 확인하려면 https://www.mql5.com/ko/docs/constants/errorswarnings/enum_trade_return_codes 을 참조하세요. (실제로 10030은 잘못된주문 처리 유형을 의미합니다.)

주문 처리 유형 -ORDER_FILLING_FOK -가 무엇을 의미하는지 이해하려면 다음을 참조하세요.

mrequest.type_filling = ORDER_FILLING_FOK; // Order execution type  ( line 213 )

의 의미를 이해하려면 https://www.mql5.com/ko/docs/constants/tradingconstants/orderproperties#enum_order_type_filling

질문에 도움이 되셨기를 바랍니다.

 

안녕하세요 사무엘,

코드를 다운로드하여 설치하고 실행해 보니 대부분 기준을 충족하는 모든 캔들에서 매수 및 매도 주문이 시작된다는 것을 알았습니다 (기간으로 H1을 사용 중입니다).

디버깅을 하지 않았고 코드의 일부가 트리거되지 않는다는 것을 깨달았습니다. 다운로드 가능한 코드로 EA를 제대로 실행할 수 있나요?

파일:
screen.jpg  417 kb