오류, 버그, 질문 - 페이지 2859 1...285228532854285528562857285828592860286128622863286428652866...3184 새 코멘트 Igor Makanu 2020.09.27 22:08 #28581 fxsaber : 일반적으로 가능한 구현에 대해 어떻게 생각하십니까? 많은 구현이 가능합니다 그러나 여전히 EA 간의 데이터 교환 문제로 귀결됩니다. 가장 간단한 방법은 각 Expert Advisor의 시작 부분에서 OnTick()에서 초기화 권한 확인을 설정하고 동일한 OnTick()에서 초기화 자체를 수행하는 것입니다. 이렇게 하면 차트를 복원한 다음 차트에서 EA를 실행할 수 없으며, EA를 닫기 전에 저장은 OnDeinit()에서 수행할 수 있습니다. 글쎄요 , 누가 이 동물원을 관리할 것인지는 중요하지 않습니다 - 메인 EA 또는 서비스 Aleksey Vyazmikin 2020.09.27 23:44 #28582 테스터 로그에서 2020.09 . 28 00 : 41 : 09.491 wrong tester bar time 2020.09 . 28 00 : 41 : 09.491 history error 9 in undefined function 무슨 뜻인가요? Slava 2020.09.28 07:22 #28583 Aleksey Vyazmikin : 테스터 로그에서 무슨 뜻인가요? 이것은 m1 ohlc의 다음 값이 수신될 때(또는 공개 가격 에서 테스트할 때 막대의 상태), 시간 필드가 0으로 판명되었음을 의미합니다. 정의되지 않은 함수는 문제가 미리 정의된 함수(OnTick, OnTimer 등) 외부, 즉 메인 테스터 루프에서 발생했음을 의미합니다. Aleksey Vyazmikin 2020.09.28 09:02 #28584 Slava : 이것은 m1 ohlc의 다음 값이 수신될 때(또는 공개 가격 에서 테스트할 때 막대의 상태), 시간 필드가 0으로 판명되었음을 의미합니다. 정의되지 않은 함수는 문제가 미리 정의된 함수(OnTick, OnTimer 등) 외부, 즉 메인 테스터 루프에서 발생했음을 의미합니다. 모든 것이 하루 종일 잘 작동하고 시작되었습니다. 사용자로서 무엇을 할 수 있습니까? Aleksey Vyazmikin 2020.09.28 15:31 #28585 Slava : 이것은 m1 ohlc의 다음 값이 수신될 때(또는 공개 가격 에서 테스트할 때 막대의 상태), 시간 필드가 0으로 판명되었음을 의미합니다. 정의되지 않은 함수는 문제가 미리 정의된 함수(OnTick, OnTimer 등) 외부, 즉 메인 테스터 루프에서 발생했음을 의미합니다. 이해할 수 없습니다. 내 코드에 버그가 있습니까? 아니면 터미널에 버그가 있습니까? 전체 기록 지우기 - 도움이되지 않았습니다. 추가됨: 오류를 방지할 수 있는 비활성화 기능을 찾았지만 다른 조언자에서는 이 기능이 올바르게 작동합니다! 어때요? 개인적으로 버릴 수 있어요. 이 버그 기능이 활성화된 경우에도 OnTick()은 첫 번째 막대를 완전히 통과한 다음 해당 오류를 전달합니다. 다른 터미널에서 오류가 확인되었습니다. 틱에 시작됨 - 오류 없음 ... 그러나 로그의 이상함: 2020.09 . 28 17 : 22 : 22.327 2020.09 . 18 09 : 45 : 02 Test_01 틱으로 보면, 상품을 보면 첫 번째 틱이 정확히 10:00에 있었고 그 시간에 거래 세션이 아직 닫혀있었습니다. 이것은 갈까마귀가 없는 시각 모드이며 첫 번째 인쇄는 10시에 나옵니다. fxsaber 2020.09.28 17:00 #28586 Igor Makanu : 가장 간단한 방법 - OnTick()의 각 Expert Advisor 시작 시 초기화를 위한 권한 확인 등록 이것은 작업의 주요 걸림돌입니다. Alexey Viktorov 2020.09.28 17:50 #28587 fxsaber : 이것은 작업의 주요 걸림돌입니다. 차트의 ID에주의를 기울이고 연공서부터 시작하십시오. 그러나 이것이 고문의 상호 작용을 취소하지는 않습니다. 또는 실행 순서의 차트 ID로 파일이나 SQLite 기반을 만드십시오. 예를 들어 최초 초기화 시 목록에 Chart_ID()가 없으면 목록에 추가됩니다. 터미널이 닫혀서 닫히지 않으면 목록에서 제거됩니다. 따라서 어드바이저의 상호 작용을 구성할 수 있습니다. Igor Makanu 2020.09.28 18:50 #28588 fxsaber : 이것은 작업의 주요 걸림돌입니다. 내가 본대로 스케치 ... 다음 코드로 2 개의 EA를 만들었습니다. #define PREFIX_NAME "QWERTY_" enum ENUM_EA_STATE {WORK, READY_TO_INIT, ENABLE_INIT, ERROR_GLOBAL_VARIABLE}; const string this_ea_name = PREFIX_NAME + MQLInfoString ( MQL_PROGRAM_NAME ); void OnTick () { static ENUM_EA_STATE state = GlobalVariableSet (this_ea_name, ENUM_EA_STATE::READY_TO_INIT) > 0 ? READY_TO_INIT : ERROR_GLOBAL_VARIABLE; Comment ( EnumToString (state)); if (state != WORK) { if (state == ERROR_GLOBAL_VARIABLE) return ; if (!My_Init(this_ea_name)) return ; GlobalVariableSet (this_ea_name, ENUM_EA_STATE::WORK); state = WORK; } Print (this_ea_name, " " , __FUNCTION__ ); } //+------------------------------------------------------------------+ bool My_Init( const string chek_ea_name) { if ( GlobalVariableGet (chek_ea_name) == (ENUM_EA_STATE)ENABLE_INIT) { Print ( "EA is init" ); return ( true ); } return ( false ); } //+------------------------------------------------------------------+ 타이머(5초)에서 작동하는 하나의 제어 EA #define PREFIX_NAME "QWERTY_" enum ENUM_EA_STATE {WORK, READY_TO_INIT, ENABLE_INIT, ERROR_GLOBAL_VARIABLE}; //+------------------------------------------------------------------+ int OnInit () { EventSetTimer ( 5 ); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { EventKillTimer (); } //+------------------------------------------------------------------+ void OnTimer () { for ( int i = GlobalVariablesTotal () - 1 ; i >= 0 ; i--) { string curr_gname = GlobalVariableName (i); if ( StringFind (curr_gname, PREFIX_NAME) !=- 1 ) { if ( GlobalVariableGet (curr_gname) == (ENUM_EA_STATE)READY_TO_INIT) { if ( GlobalVariableSet (curr_gname, ENUM_EA_STATE::ENABLE_INIT) > 0 ) { Print ( "Enable Init : " , curr_gname, ".....exit" ); return ; } } } } } //+------------------------------------------------------------------+ 확인, 모든 것이 작동합니다. 유일한 것은 알아내지 못했거나 전역 변수 에 쓰는 GlobalVariableSetOnCondition()을 통해 작동하지 않았습니다. Andrey Khatimlianskii 2020.09.28 22:13 #28589 fxsaber : 이것은 작업의 주요 걸림돌입니다. GlobalVariableSetOnCondition - 문제를 해결하는 데 필요한 모든 것. GlobalVariableSetOnCondition이 true를 반환한 경우에만 작업이 허용됩니다. 리소스를 성공적으로 초기화하고 해제한 후 ch를 반환합니다. 변수가 초기 상태로 바뀌고 다른 EA가 시작됩니다. In DeInit - 어드바이저 없이 터미널 시작을 실행하지 않도록 변수를 무조건 삭제합니다(이전 로드가 올바르게 완료되지 않은 경우). fxsaber 2020.09.28 22:40 #28590 Alexey Viktorov : 이고르 마카누 : 안드레이 카팀리안스키 : 추천해주셔서 감사합니다. GlobalVariableSetOnCondition 방향을 살펴보겠습니다. 1...285228532854285528562857285828592860286128622863286428652866...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
일반적으로 가능한 구현에 대해 어떻게 생각하십니까?
많은 구현이 가능합니다
그러나 여전히 EA 간의 데이터 교환 문제로 귀결됩니다.
가장 간단한 방법은 각 Expert Advisor의 시작 부분에서 OnTick()에서 초기화 권한 확인을 설정하고 동일한 OnTick()에서 초기화 자체를 수행하는 것입니다. 이렇게 하면 차트를 복원한 다음 차트에서 EA를 실행할 수 없으며, EA를 닫기 전에 저장은 OnDeinit()에서 수행할 수 있습니다.
글쎄요 , 누가 이 동물원을 관리할 것인지는 중요하지 않습니다 - 메인 EA 또는 서비스
테스터 로그에서
무슨 뜻인가요?
테스터 로그에서
무슨 뜻인가요?
이것은 m1 ohlc의 다음 값이 수신될 때(또는 공개 가격 에서 테스트할 때 막대의 상태), 시간 필드가 0으로 판명되었음을 의미합니다.
정의되지 않은 함수는 문제가 미리 정의된 함수(OnTick, OnTimer 등) 외부, 즉 메인 테스터 루프에서 발생했음을 의미합니다.
이것은 m1 ohlc의 다음 값이 수신될 때(또는 공개 가격 에서 테스트할 때 막대의 상태), 시간 필드가 0으로 판명되었음을 의미합니다.
정의되지 않은 함수는 문제가 미리 정의된 함수(OnTick, OnTimer 등) 외부, 즉 메인 테스터 루프에서 발생했음을 의미합니다.
모든 것이 하루 종일 잘 작동하고 시작되었습니다. 사용자로서 무엇을 할 수 있습니까?
이것은 m1 ohlc의 다음 값이 수신될 때(또는 공개 가격 에서 테스트할 때 막대의 상태), 시간 필드가 0으로 판명되었음을 의미합니다.
정의되지 않은 함수는 문제가 미리 정의된 함수(OnTick, OnTimer 등) 외부, 즉 메인 테스터 루프에서 발생했음을 의미합니다.
이해할 수 없습니다. 내 코드에 버그가 있습니까? 아니면 터미널에 버그가 있습니까? 전체 기록 지우기 - 도움이되지 않았습니다.
추가됨:
오류를 방지할 수 있는 비활성화 기능을 찾았지만 다른 조언자에서는 이 기능이 올바르게 작동합니다! 어때요? 개인적으로 버릴 수 있어요.
이 버그 기능이 활성화된 경우에도 OnTick()은 첫 번째 막대를 완전히 통과한 다음 해당 오류를 전달합니다.
다른 터미널에서 오류가 확인되었습니다.
틱에 시작됨 - 오류 없음 ...
그러나 로그의 이상함:
틱으로 보면, 상품을 보면 첫 번째 틱이 정확히 10:00에 있었고 그 시간에 거래 세션이 아직 닫혀있었습니다. 이것은 갈까마귀가 없는 시각 모드이며 첫 번째 인쇄는 10시에 나옵니다.
가장 간단한 방법 - OnTick()의 각 Expert Advisor 시작 시 초기화를 위한 권한 확인 등록
이것은 작업의 주요 걸림돌입니다.
차트의 ID에주의를 기울이고 연공서부터 시작하십시오. 그러나 이것이 고문의 상호 작용을 취소하지는 않습니다. 또는 실행 순서의 차트 ID로 파일이나 SQLite 기반을 만드십시오.
예를 들어 최초 초기화 시 목록에 Chart_ID()가 없으면 목록에 추가됩니다. 터미널이 닫혀서 닫히지 않으면 목록에서 제거됩니다. 따라서 어드바이저의 상호 작용을 구성할 수 있습니다.
이것은 작업의 주요 걸림돌입니다.
내가 본대로 스케치 ... 다음 코드로 2 개의 EA를 만들었습니다.
타이머(5초)에서 작동하는 하나의 제어 EA
확인, 모든 것이 작동합니다. 유일한 것은 알아내지 못했거나 전역 변수 에 쓰는 GlobalVariableSetOnCondition()을 통해 작동하지 않았습니다.
이것은 작업의 주요 걸림돌입니다.
GlobalVariableSetOnCondition - 문제를 해결하는 데 필요한 모든 것.
GlobalVariableSetOnCondition이 true를 반환한 경우에만 작업이 허용됩니다.
리소스를 성공적으로 초기화하고 해제한 후 ch를 반환합니다. 변수가 초기 상태로 바뀌고 다른 EA가 시작됩니다.
In DeInit - 어드바이저 없이 터미널 시작을 실행하지 않도록 변수를 무조건 삭제합니다(이전 로드가 올바르게 완료되지 않은 경우).
추천해주셔서 감사합니다. GlobalVariableSetOnCondition 방향을 살펴보겠습니다.