사용자가 입력 매개변수를 변경했는지 함수 내부(예: OnTick )를 찾아야 합니다. 이제 프로그램을 끝내고 OnDeinit로 이동해야 할 때임을 알게 됩니다.
사용자가 Expert Advisor 설정 창(F7)을 열고 매개변수를 변경한 후 거기에서 OK 버튼을 누르면 OnDeinit()가 즉시 호출되고 REASON_PARAMETERS 값을 초기화 해제 코드에 씁니다. 다음으로 OnInit()이 호출됩니다. 여기서UninitializeReason() 을 사용하면 초기화 해제 코드를 확인할 수 있고 값이 REASON_PARAMETERS와 같으면다음 에 무엇을 할지 결정할 수 있습니다.
Artyom Trishkin : 사용자가 Expert Advisor 설정 창(F7)을 열고 매개변수를 변경한 후 거기에서 OK 버튼을 누르면 OnDeinit()가 즉시 호출되고 REASON_PARAMETERS 값을 초기화 해제 코드에 씁니다. 다음으로 OnInit()이 호출됩니다. 여기서UninitializeReason() 을 사용하면 초기화 해제 코드를 확인할 수 있고 값이 REASON_PARAMETERS와 같으면다음 에 무엇을 할지 결정할 수 있습니다.
확인.
물론이죠:
1) 먼저 첫 번째 게시물에서 제공한 코드를 실행합니다. 아름다움을 위해 거기에 가져 오지 않았습니다 ... 모든 차트에서 시작할 수 있습니다.
2) Expert Advisor 설정 창을 호출합니다.
3) 설정을 변경하고 확인을 클릭합니다.
내 코드를 주의 깊게 살펴보면 결과적이고 자연스러운 결과에 놀라지 않을 것입니다. OnDeinit()는 호출되지 않습니다.
실제 코드에서 함수는 객체를 반환합니다.
내 생각에 복사 생성자는 이 경우 임시 복사본을 만들어야 합니다.
코드는 MQL5 빌드 1545에서도 올바르게 작동합니다.
새 빌드에서 복사 생성자는 1차원 배열의 크기도 조정할 수 없습니다: 오류 4007.
제 생각에는 이것은 옳지 않습니다.
이 경우에 대해서는 확실히 말씀드리기 어렵습니다. 귀하의 문제에 대해 매우 훌륭한 전문가가 있으므로 https://www.mql5.com/ru/forum/1111 에 문의하는 것이 좋습니다.
내 편집으로 코드가 제대로 작동합니다. 없이 - 아니. 그러나 코드가 작동해야 하는 경우 - 위 링크의 분기에서 더 좋습니다.
실제 코드에서 함수는 객체를 반환합니다.
내 생각에 복사 생성자는 이 경우 임시 복사본을 만들어야 합니다.
코드는 MQL5 빌드 1545에서도 올바르게 작동합니다.
새 빌드에서 복사 생성자는 1차원 배열의 크기도 조정할 수 없습니다: 오류 4007.
제 생각에는 이것은 옳지 않습니다.
빌드 1580에서 오류가 수정되었습니다. 덕분에 모든 것이 제대로 작동합니다.
이 경우에 대해서는 확실히 말씀드리기 어렵습니다. 귀하의 문제에 대해 매우 훌륭한 전문가가 있으므로 https://www.mql5.com/ru/forum/1111 스레드에 연락하는 것이 좋습니다.
내 편집으로 코드가 제대로 작동합니다. 없이 - 아니. 그러나 코드가 작동해야 하는 경우 - 위 링크의 분기에서 더 좋습니다.
링크 주셔서 감사합니다.
누군가 조언할 수 있습니다.
입력 설정을 수동으로 변경한 후 Expert Advisor의 실행을 어떻게 중단할 수 있는지 알 수 없습니다.
1) 차트에서 다음 EA 코드를 실행합니다.
2) 설정 창을 열고 "Setting_" 매개변수를 1로 변경합니다.
3) 변경 사항을 적용합니다.
따라서 변경 사항을 적용하려면 OnInit를 실행해야 하지만 OnTick(또는 기타)의 계산이 중지될 때까지 OnInit가 실행되지 않습니다.
내가 아는 한, _StopFlag - mql5 프로그램 중지 플래그를 통해 프로그램을 중지 하는 검사만 있지만 이것은 완전한 종료를 위한 것입니다. 하지만 입력 설정이 계산을 중지하도록 변경되었음을 이해하는 방법을 모르겠습니다.
누군가가 그러한 상황에 직면했을 수 있습니까? 비밀 해킹이 있는 것은 아닐까?
누군가 조언할 수 있습니다.
입력 설정을 수동으로 변경한 후 Expert Advisor의 실행을 어떻게 중단할 수 있는지 알 수 없습니다.
1) 차트에서 다음 EA 코드를 실행합니다.
2) 설정 창을 열고 "Setting_" 매개변수를 1로 변경합니다.
3) 변경 사항을 적용합니다.
따라서 변경 사항을 적용하려면 OnInit를 실행해야 하지만 OnTick(또는 기타)의 계산이 중지될 때까지 OnInit가 실행되지 않습니다.
내가 아는 한, _StopFlag - mql5 프로그램 중지 플래그를 통해 프로그램을 중지 하는 검사만 있지만 이것은 완전한 종료를 위한 것입니다. 하지만 입력 설정이 계산을 중지하도록 변경되었음을 이해하는 방법을 모르겠습니다.
누군가가 그러한 상황에 직면했을 수 있습니까? 비밀 해킹이 있는 것은 아닐까?
OnInit()에서 초기화 해제 코드를 확인하십시오.
초기화 해제 이유
UninitializeReason() 함수에서 반환된 Expert Advisor의 초기화 해제에 대한 이유 코드입니다. 다음 값 중 하나를 가질 수 있습니다.
끊임없는
의미
설명
REASON_PROGRAM
0
전문가는 ExpertRemove() 함수를 호출하여 작업을 중지했습니다.
REASON_REMOVE
하나
프로그램이 차트에서 제거되었습니다.
REASON_RECOMPILE
2
프로그램 재컴파일
REASON_CHARTCHANGE
삼
차트 기호 또는 기간이 변경되었습니다.
REASON_CHARTCLOSE
4
차트 닫힘
REASON_PARAMETERS
5
입력 매개변수가 사용자에 의해 변경되었습니다.
REASON_ACCOUNT
6
다른 계정이 활성화되었거나 계정 설정 변경으로 인해 거래 서버에 재접속이 발생했습니다.
REASON_TEMPLATE
7
다른 차트 템플릿이 적용됨
REASON_INITFAILED
여덟
OnInit() 처리기가 0이 아닌 값을 반환했음을 서명합니다.
REASON_CLOSE
아홉
터미널 폐쇄
OnInit()에서 초기화 해제 코드를 확인하십시오.
...
음... 오해하셨군요 :)
사용자가 입력 매개변수를 변경했는지 함수 내부(예: OnTick )를 찾아야 합니다. 이제 프로그램을 끝내고 OnDeinit로 이동해야 할 때임을 알게 됩니다.
음... 오해하셨군요 :)
사용자가 입력 매개변수를 변경했는지 함수 내부(예: OnTick )를 찾아야 합니다. 이제 프로그램을 끝내고 OnDeinit로 이동해야 할 때임을 알게 됩니다.
사용자가 Expert Advisor 설정 창(F7)을 열고 매개변수를 변경한 후 거기에서 OK 버튼을 누르면 OnDeinit()가 즉시 호출되고 REASON_PARAMETERS 값을 초기화 해제 코드에 씁니다. 다음으로 OnInit()이 호출됩니다. 여기서 UninitializeReason() 을 사용하면 초기화 해제 코드를 확인할 수 있고 값이 REASON_PARAMETERS와 같으면 다음 에 무엇을 할지 결정할 수 있습니다.
확인.
물론이죠:
1) 먼저 첫 번째 게시물에서 제공한 코드를 실행합니다. 아름다움을 위해 거기에 가져 오지 않았습니다 ... 모든 차트에서 시작할 수 있습니다.
2) Expert Advisor 설정 창을 호출합니다.
3) 설정을 변경하고 확인을 클릭합니다.
내 코드를 주의 깊게 살펴보면 결과적이고 자연스러운 결과에 놀라지 않을 것입니다. OnDeinit()는 호출되지 않습니다.
또한 EA가 deinit에 도달하지 않도록 할 수 있도록 이유와 매개변수 모두를 deinit에 출력했습니다.
코드에서 가장 중요한 부분에 주의하십시오.
이것은 입력 매개변수의 변경으로 인해 중단되지 않는 긴 계산의 시각적 에뮬레이션입니다. 그리고 나는 그것을 중단해야하며 질문은 어떻게? :)
MQL5에서 누락된 것이 없고 불행히도 이 상황을 해결하지 못하는 _StopFlag 외에 다른 언어가 없는지 확인하고 싶습니다.
대략적으로 말하면 과중한 계산 중에 입력 매개변수가 변경되는 순간을 잡아야 합니다.
또한 EA가 deinit에 도달하지 않도록 할 수 있도록 이유와 매개변수 모두를 deinit에 출력했습니다.
코드에서 가장 중요한 부분에 주의하십시오.
이것은 입력 매개변수의 변경으로 인해 중단되지 않는 긴 계산의 시각적 에뮬레이션입니다. 그리고 나는 그것을 중단해야하며 질문은 어떻게? :)
MQL5에서 누락된 것이 없고 불행히도 이 상황을 해결하지 못하는 _StopFlag 외에 다른 언어가 없는지 확인하고 싶습니다.
대략적으로 말하면 과중한 계산 중에 입력 매개변수가 변경되는 순간을 잡아야 합니다.
대략적으로 말하자면 - 내가 당신에게 쓴 것을 주의 깊게 다시 읽고 당신의 코드에서 무한 루프를 던지십시오.
Expert Advisor를 무한 루프에 넣는 것이 올바른 결정이라고 확신하십니까?