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

 

안녕하세요!

현재 이 글의 예제에서 전문가 조언을 작성하는 방법을 배우고 있는데 다음과 같은 문제가 발생했습니다. 거래 요청을 보내려고 할 때 10014 오류(잘못된 거래량)가 발생합니다. 거래에 허용되는 최대 거래량 SYMBOL_VOLUME_MAX를 확인했는데 0이 반환되었습니다. 하지만 동시에 수동 거래는 정상적으로 열립니다.

제가 무엇을 잘못하고 있는지 또는 어디를 살펴봐야 하는지 알려주시겠습니까? 나는 기사에 첨부 된 전문가 고문 코드를 사용합니다.

감사합니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
감사합니다.
 

안녕하세요,

코드는 멋져 보이지만 시도 할 때이 오류가 발생합니다.

2011.11.13 23:39:58 2011.11.01 14:20:00 경고: 매도 주문 요청을 완료할 수 없습니다 -error:4756
2011.11.13 23:39:58 2011.11.01 14:20:00 1.36833 sl: 1.37133 tp: 1.35833에 1.00 EURUSD 즉시 매도 실패 [유효하지 않은 요청]

거래가 실행되지 않았습니다.

도와주실 수 있나요?

고마워요

F

[삭제]  
Financialabs:

안녕하세요,

코드는 멋져 보이지만 시도 할 때이 오류가 발생합니다.

2011.11.13 23:39:58 2011.11.01 14:20:00 경고: 매도 주문 요청을 완료할 수 없습니다 -error:4756
2011.11.13 23:39:58 2011.11.01 14:20:00 1.36833 sl: 1.37133 tp: 1.35833에 1.00 EURUSD 즉시 매도 실패 [유효하지 않은 요청]

거래가 실행되지 않았습니다.

도와주실 수 있나요?

고마워요

F

같은 질문을 했는데 아무도 답변하지 않았습니다.

제가 찾았습니다.

버그입니다. 코드 한 줄을 추가해야 합니다.

제로메모리(mrequest);

이 줄은 mrequest.action=... mrequest.price=... 등 줄 앞에 있어야 합니다.

 

안녕하세요.

상세하고 명확한 가이드에 감사드립니다.

문제가 있습니다. 프로그램이 컴파일되지만 처음 요청을 생성하려고 할 때 다음 오류가 나타납니다: "판매 주문 설정 요청 실패 - 오류 코드: 4756"

설명서에서 아무것도 찾을 수 없습니다. 어떻게 해야 하는지 또는 어디에서 정보를 찾을 수 있는지 알려주실 수 있나요?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений - Документация по MQL5
 
Alfff:

문제가 발생했습니다. 프로그램이 컴파일되지만 처음 요청을 생성하려고 할 때 다음 오류가 표시됩니다. "판매 주문 설정 요청 실패 - 오류 코드: 4756"

설명서에서 아무것도 찾을 수 없습니다. 이 문제를 해결할 수 있는 방법이나 정보를 어디서 찾을 수 있는지 알려주실 수 있나요?

수정되었습니다. 업데이트된 버전의 Expert Advisor를 다운로드하세요.

문제는 mrequest 구조에 있었으며, 제로메모리 기능을 사용하여 미리 제로화해야 합니다. "mrequest.action=TRADE_ACTION_DEAL;"(199페이지 및 245페이지) 줄 앞에 "ZeroMemory(mrequest);"를 추가해야 합니다.

 
senerzen:

같은 질문을 했지만 아무도 대답하지 않았습니다.

제가 찾았습니다.

버그입니다. 코드 한 줄을 추가해야 합니다.

제로메모리(mrequest);

해당 줄은 mrequest.action=... mrequest.price=... 등 줄 앞에 있어야 합니다.

감사합니다, 버그가 수정되었습니다.
Get in touch with developers using Service Desk!
  • www.mql5.com
We therefore attach great importance to all user reports about issues in our programs and try to answer each one of them.
 
papaklass:
요청 전에 요청 구조를 항상 초기화해야 하나요, 즉 요청 구조를 초기화해야 하나요?
요청을 보내기 전에 구조의 모든 필드를 초기화해야 하며(이 경우 제로메모리 함수를 사용하여 초기화하지만 요소별로 초기화할 수 있음), 구조가 선언된 후에 초기화를 수행해야 합니다.
 
Automated-Trading:
요청을 보내기 전에 구조체의 모든 필드를 초기화해야 하며(이 경우 제로메모리 함수를 사용하여 초기화하지만 요소별로 초기화할 수 있음), 구조체가 선언된 후에 초기화를 수행해야 합니다.

레퍼런스 매뉴얼에 그렇게 나와 있나요? (지금은 확인할 기회가 없습니다).

프로그램의 전역 수준에서 구조체 유형 변수를 한 번 선언하고 한 번 초기화 한 다음 다시 ZeroMemory 함수를 사용하는 질문으로 돌아 가지 않는 것으로 충분하다는 것이 밝혀 졌습니까?

 
Yedelkin:

핸드북에 이에 대한 내용이 있나요? (지금은 확인할 기회가 없습니다.)

어떤 변수도 선언할 때 강제로 0이 되지는 않습니다. 변수를 사용하기 전에 모든 변수를 직접 정리/할당해야 하는 것은 프로그래머입니다.

초기화되지 않은(또는 불완전한) 변수(특히 구조체)를 사용하는 것은 프로그래밍에서 매우 흔한 실수입니다.

프로그램의 전역 수준에서 구조체 유형의 변수를 한 번 선언하고 한 번 초기화한 다음 다시 제로메모리 함수를 사용하는 문제로 돌아가지 않는 것으로 충분하다는 것이 밝혀졌습니다.

변수를 전역 수준으로 가져와서 초기화로 (쓸모없고 더 위험한) 싸움을 하는 대신 변수를 올바르게 초기화하는 것이 더 낫습니다.

"왜 누군가 나를 위해 변수, 특히 복잡한 구조를 초기화할까?"라는 질문을 스스로에게 던지는 것은 매우 쉽습니다.

그렇게 선언하면 불편한 제로메모리 없이 구조를 제로화할 수 있어 매우 편리합니다:

   MqlTick my={0};