EA/지표의 틱 에뮬레이션 - 페이지 2

 
Meat :

코드에는 먼저 틱 에뮬레이션이 있을 뿐만 아니라 각 틱에서 기록을 로드하여 차트를 강제로 업데이트합니다. 가끔 로그도 보나요? 여가 시간에 들러 무슨 일이 일어나고 있는지 확인하십시오. 예를 들어 하루에 일어날 일에 대해 생각해 보십시오. 특히 표시기의 여러 복사본이 실행 중인 경우. 나는 시스템과 인터넷 채널의 부하에 대해 침묵합니다.

코드에서 차트를 업데이트하는 대신 정확히 틱 에뮬레이션을 수행하면 루프가 발생하고(즉, 표시기가 멈추지 않고 시작됨) 이에 따라 터미널이 정지됩니다.

기록을 로드하지 않고 업데이트가 필요한 이유는 무엇입니까? 차트의 강제 업데이트는 틱 에뮬레이션입니다.

다음은 2500틱 후의 로그입니다.

00:51:32 Check_UpdateChart EURUSD,M1: 성공적으로 로드됨
00:52:48 Check_UpdateChart EURUSD,M1: 단위 이유 1
00:52:48 Check_UpdateChart EURUSD,M1: 제거됨

아무 것도 걸리지 않습니다. 이것이 에뮬레이션이 수행되는 목적이므로 표시기가 주기적으로 이동합니다. 저것들. 그것은 스스로를 시작합니다.
 
Zhunko :

기록을 로드하지 않고 업데이트가 필요한 이유는 무엇입니까? 차트의 강제 업데이트는 틱 에뮬레이션입니다.

다음은 2500틱 후의 로그입니다.

00:51:32 Check_UpdateChart EURUSD,M1: 성공적으로 로드됨
00:52:48 Check_UpdateChart EURUSD,M1: 단위 이유 1
00:52:48 Check_UpdateChart EURUSD,M1: 제거됨

아무 것도 걸리지 않습니다. 이것이 에뮬레이션이 수행되는 목적이므로 표시기가 주기적으로 이동합니다. 저것들. 그것은 스스로를 시작합니다.


나는 "log log "라고 명확하게 썼습니다. 그래서 왜 나에게 전문가 로그를 보여주는거야? 분명히 내가 옳았습니다. 당신은 절대 거기를 보지 않습니다. 하드 드라이브의 절반이 이미 이 로그로 채워져도 놀라지 않을 것입니다. :)

그리고 개념을 변경할 필요가 없습니다. 히스토리 업데이트와 틱 에뮬레이션은 별개입니다. 서버에서 들어오는 틱은 기록(즉, 이전 막대)을 업데이트하지 않습니다. 이런 일이 발생하면 터미널은 많은 트래픽과 리소스를 소비하게 됩니다.

따라서 각 틱마다 업데이트가 필요한 이유가 명확하지 않습니다. 이 업데이트는 무엇보다도 IndicatorCounted() 상태를 재설정하므로 각 틱의 전체 기록을 직접 확인해야 합니다. 그만큼 낭비되는 자원이 많다.

 
Meat :

서버에서 들어오는 틱은 기록(즉, 이전 막대)을 업데이트하지 않습니다. 이런 일이 발생하면 터미널은 많은 트래픽과 리소스를 소비하게 됩니다.

그러나 예를 들어 1 bar = 2 ticks )))))) 내 경우에는 ticks가 기록을 업데이트하면 어떻게 될까요?
 
IgorM :

뒤에 두다

로그에있어 :

23:39:01 테스트 EURUSD,H1: 성공적으로 로드됨
23:39:01 테스트 EURUSD,H1: PostMsgAddr =1977398342
23:39:01 테스트 EURUSD,H1: 초기화됨
23:39:01 테스트 EURUSD,H1: 사이클이 끝났습니다....

예, 문제가 무엇인지 명확하지 않습니다... 그런 다음 다음을 시도하십시오. 가져오기 섹션 #import "user32.dll"에 다음 기능을 추가하십시오.

CallWindowProcA(int lpPrevWndFunc[], int hWnd, int Msg, int wParam, int lParam);

그리고 SetMyTimer 함수의 끝에 다음 줄을 추가합니다. CallWindowProcA(code,0,0,0,0);

그리고 병렬 실행 표시기를 사용하여 이 순간에 틱이 생성되는지 확인합니다.

 
solar :
그러나 예를 들어 1 bar = 2 ticks )))))) 내 경우에는 ticks가 기록을 업데이트하면 어떻게 될까요?
물론 현재 막대는 항상 업데이트됩니다. 그러나 그것은 일반적으로 역사에 관한 것이었습니다.
 
Meat :


나는 "log log "를 분명히 썼습니다. 그래서 왜 나에게 전문가 로그를 보여주는거야? 분명히 내가 옳았습니다. 당신은 절대 거기를 보지 않습니다. 하드 드라이브의 절반이 이미 이 로그로 채워져도 놀라지 않을 것입니다. :)

그리고 개념을 변경할 필요가 없습니다. 히스토리 업데이트와 틱 에뮬레이션은 별개입니다. 서버에서 들어오는 틱은 기록(즉, 이전 막대)을 업데이트하지 않습니다. 이런 일이 발생하면 터미널은 많은 트래픽과 리소스를 소비하게 됩니다.

따라서 각 틱마다 업데이트가 필요한 이유가 명확하지 않습니다. 이 업데이트는 무엇보다도 IndicatorCounted() 상태를 재설정하므로 각 틱의 전체 기록을 직접 확인해야 합니다. 그만큼 낭비되는 자원이 많다.

로그 로그도 비어 있지만 이유가 다릅니다. 히스토리 교환 후 콘솔 클리너를 사용하고 있습니다. 나만의 로그가 있습니다.

MT4 로그는 전혀 귀찮게하지 않습니다. Metaquotes는 로그가 마지막에 보관된다는 것을 반복해서 언급했습니다. 그는 우선순위가 아닙니다. 자원을 소비하지 않습니다. 제 시간에 청소할 필요가 있습니다.

IndicatorCounted() 에 관하여 ... 나는 그것을 사용하지 않습니다. 내 표시기는 Expert Advisor의 정보를 표시하기 위한 빈 하위 창입니다. MT4에서 지표를 사용하는 것은 해롭다고 생각합니다. 인터페이스 스트림이 느려지고 전문가보다 3배 느리게 작동합니다.

강조 표시된 것은 물론 사실이지만 이별을 그렇게까지 귀찮게 할 가치가 있습니까?

다음은 415 업데이트에 대한 로그 로그입니다.

03:00:44 사용자 지정 표시기 Check_UpdateChart EURUSD,M1: 성공적으로 로드됨
03:00:46 HistoryCenter: 'EURUSD1' 동기화
03:00:46 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:47 HistoryCenter: 'EURUSD1' 동기화
03:00:47 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:47 HistoryCenter: 'EURUSD1' 동기화
03:00:47 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:48 HistoryCenter: 'EURUSD1' 동기화
03:00:48 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:48 HistoryCenter: 'EURUSD1' 동기화
03:00:49 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:49 HistoryCenter: 'EURUSD1' 동기화
03:00:49 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:50 HistoryCenter: 'EURUSD1' 동기화
03:00:50 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:51 HistoryCenter: 'EURUSD1' 동기화
03:00:51 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:51 HistoryCenter: 'EURUSD1' 동기화
03:00:52 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:52 HistoryCenter: 'EURUSD1' 동기화
03:00:55 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:55 HistoryCenter: 'EURUSD1' 동기화
03:00:55 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:55 HistoryCenter: 'EURUSD1' 동기화
03:00:55 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:55 HistoryCenter: 'EURUSD1' 동기화
03:00:56 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:00:56 HistoryCenter: 'EURUSD1' 동기화
03:00:57 사용자 지정 지표 Check_UpdateChart EURUSD,M1: 제거됨
03:00:59 HistoryCenter: 'EURUSD1'로 가져온 막대 2개
03:01:01 MetaTrader 빌드 438이 중지되었습니다.

제 생각에는 주말에 지표의 성능을 테스트하는 것은 중요하지 않습니다. 로그는 작업 후 수동으로 정리할 수 있습니다.

그러나 start() 끝에 한 줄의 코드를 삽입하는 것이 자신의 코드를 삽입하는 것보다 여전히 쉽습니다. 그렇게 어렵게 만들 이유가 없습니다.

 

나는 XP를 가지고 있습니다-작동하는 것 같습니다-그런 다음 터미널을 최소화합니다 ....

표시기 코드에 있는 내용 - 어드바이저 코드에 있는 내용 - 자체에 있는 내용 - 결과는 동일합니다 - 약 15 - 50초 후에 터미널이 충돌합니다 ...

그래서 당신에게 뭔가 문제가 있습니다 ...

그리고 좋은 생각이야...

 

표시기에 대해 유사한 작업을 수행할 수 있습니까?:

표시기 판독값(그 순간)을 보고 싶은 시점에 커서를 가리키기만 하면 됩니까?

 

Zhunko , 글쎄요, 모든 것이 비표준이라면(자신의 로그, 지표 구현 등), 왜 이 모든 대화를 시작했나요? 여기에서 우리는 실제로 우리 자신의 개발이 아닌 MT4를 사용한 작업에 대해 논의하고 있습니다.

첫 번째 게시물에서 나는 작업이 타사 DLL 없이 수행되는 경우 정확히 내 코드가 유용할 것이라고 명시했습니다. 시스템 라이브러리만 사용하는 자급자족 Expert Advisor/indicator를 구현합니다. 그리고 자신의 개발을 사용하는 경우 이것은 귀하에게 적용되지 않습니다.

그리고 일반적으로 "작업 후 로그를 수동으로 청소"하는 이유를 이해하지 못합니다. 어지럽히지 않는 것이 더 쉽습니다. 결국, 내가 이해하는 한 DLL에서 개발을 구현합니다. 그렇다면 여기서 제안한 것과 동일한 타이머를 설정하지 못하는 이유는 무엇입니까? 거기에만 몇 줄의 코드가 필요합니다. 그러나 어떤 이유로 당신은 탬버린으로 모든 종류의 춤을 추고 통나무를 청소하는 것을 선호합니다. 어떻게 든 당신은 프로그래머처럼 생각하지 않습니다 ... 알다시피, 내 코드는 당신을 귀찮게하지만 매일 로그를 정리하기에 너무 게으르지는 않습니다. :)

 
elmucon :

나는 XP를 가지고 있습니다-작동하는 것 같습니다-그런 다음 터미널을 끕니다 ....

표시기 코드에 있는 내용 - 어드바이저 코드에 있는 내용 - 자체에 있는 내용 - 결과는 동일합니다 - 약 15 - 50초 후에 터미널이 충돌합니다 ...

그래서 당신에게 뭔가 문제가 있습니다 ...

그리고 좋은 생각이야...


예, 아마도 생각하지 못했습니다. 나는 어셈블러에 대한 큰 감정가가 아니므로 엄격하게 판단하지 마십시오. :) 문제가 무엇인지 알아 내려고 노력할 것입니다.
사유: