실험적으로 다른 정보를 얻었습니다. 내가 이해하는 한, 그들은 같은 방식으로 작동해야 합니다. 하지만 그렇지 않습니다. 오늘은 일요일이라 현재시각 확인이 불가능합니다. 그러나 테스터에서는 다르게 작동합니다. 다음은 두 가지 코드 예제입니다. 요점은 다음과 같습니다. 7개의 TF에서 데이터를 얻으려고 합니다. 가장 오래된 TF가 아닌 (어드바이저와 지표 모두) 시작합니다. 예를 들어, M15. 현재 틱에 새로운 양초 형성과 BarsCalculated()를 통해 이 양초에 대한 데이터 수신이 동기화된 경우 BarsCalculated()를 사용하여 계산된 막대 수와 현재 양초 형성 시간을 기록합니다. 코드의 세부 정보.
지시자.
첫 번째 틱.
각 TF에 대해 새 양초가 형성됩니다. 그러나 TF M1, M5, M15에서 - BarsCalculated()는 0을 반환합니다. 그러나 TF M30, H1, H4, D1에서는 -1을 반환합니다. 이것은 즉시 기능이 다르게 작동하는 이유에 대한 질문을 제기합니다. 따라서 TF M30에서 실행하면 - TF M1, M5, M15, M30 - BarsCalculated()는 0을 반환합니다. 따라서 TF H1, H4, D1의 경우 -1을 반환합니다. 이것으로부터 우리는 초기에 이전 TF에 대해 데이터를 사용할 수 없다는 결론을 내릴 수 있습니다.
두 번째 틱.
코드의 논리에 따라 동기화가 발생합니다. 기록 매개변수(모두 예의 로그에 따름);
세 번째 및 후속 틱.
TF M30, H1, H4, D1의 표시기에 따라 새 막대를 얻습니다. 그러나 데이터는 이미 수신되었습니다. 그리고 현재 시간보다 더 많은 시간 프레임이 1배 더 많다는 것이 밝혀졌습니다. 매우 이상한 동작입니다. 미래에는(현재 예를 사용하여) 동기화를 얻을 수 없습니다.
조언자.
첫 번째 틱.
동기화가 즉시 발생합니다. BarsCalculated()로 새 값을 얻는 것은 새 양초의 형성과 동시에 발생합니다.
두 번째 및 후속 틱.
함수의 논리적 동작. 모든 것이 동기화됩니다.
테스터에서 틱으로 두 예제를 모두 실행하면 모든 것을 스스로 이해할 수 있습니다. 기능의 현재 동작은 Expert Advisors 및 표시기에 대해 다릅니다. 또한 더 높은 기간에 대한 지표에서 데이터를 가져오는 것도 늦습니다. 따라서M15와 M30에 대한 데이터를 요청할 때 동시에 사용할 수 없을 것이라고 생각합니다. 실제 데이터 - 절대 아닙니다!
내가 여전히 틀리면 이전 TF에서 표시기 데이터를 올바르게 얻는 방법을 알려주십시오. 고맙습니다.
그럼 그런 질문. 표시기가 M15에서 실행 중인 경우. 새로운 촛불이 생겼습니다. M15 및 M30에 대한 데이터를 요청할 때 동시에 사용할 수 있어야 합니까?
네.
지표 가 생성되고(일반 처리 주기에 포함됨) 일반 틱(ontic) 처리 주기에 입력되면 데이터를 사용할 수 있을 가능성이 큽니다. 단, 다른 캐릭터의 히스토리 재개 가능성으로 인해 보장이 되지 않는다는 점 잊지 마세요.
즉, 항상 이러한 지표를 쿼리한 결과를 확인하십시오. ontik에서 데이터를 요청했는데 사용할 수 없으면 즉시 종료하여 다음 틱을 확인하십시오.
"모든 것이 항상 준비되어 있습니다. 저는 데이터 전달 및 계산의 기술적 프로세스에 대해 생각하지 않습니다. 이것은 저와 관련되어서는 안 됩니다. 저는 항상 운이 좋습니다."라는 일반적인 실수를 하지 마십시오. 항상 지연 초기화 논리 및 데이터 제어를 구현하십시오.
빈 차트 기반에서 프로그램을 테스트해야 합니다. 일반적으로 히스토리 베이스를 수동으로 지운 상태에서 단말기를 다시 시작하면 잘못된 인덱스나 0으로 나누기 등으로 인해 다양한 액세스 오류가 발생하기에 충분합니다.
심볼에 m15 막대가 있으면 동일한 심볼에 m30 막대가 있는 것입니다.
네.
질문 하나 더. BarsCalculated() 함수 는 EA와 표시기에서 호출할 때 동일하게 작동합니까?
그리고 무엇이 잘못되었나요?
실험적으로 다른 정보를 얻었습니다. 내가 이해하는 한, 그들은 같은 방식으로 작동해야 합니다. 하지만 그렇지 않습니다. 오늘은 일요일이라 현재시각 확인이 불가능합니다. 그러나 테스터에서는 다르게 작동합니다. 다음은 두 가지 코드 예제입니다. 요점은 다음과 같습니다. 7개의 TF에서 데이터를 얻으려고 합니다. 가장 오래된 TF가 아닌 (어드바이저와 지표 모두) 시작합니다. 예를 들어, M15. 현재 틱에 새로운 양초 형성과 BarsCalculated()를 통해 이 양초에 대한 데이터 수신이 동기화된 경우 BarsCalculated()를 사용하여 계산된 막대 수와 현재 양초 형성 시간을 기록합니다. 코드의 세부 정보.
지시자.
첫 번째 틱.
각 TF에 대해 새 양초가 형성됩니다. 그러나 TF M1, M5, M15에서 - BarsCalculated()는 0을 반환합니다. 그러나 TF M30, H1, H4, D1에서는 -1을 반환합니다. 이것은 즉시 기능이 다르게 작동하는 이유에 대한 질문을 제기합니다. 따라서 TF M30에서 실행하면 - TF M1, M5, M15, M30 - BarsCalculated()는 0을 반환합니다. 따라서 TF H1, H4, D1의 경우 -1을 반환합니다. 이것으로부터 우리는 초기에 이전 TF에 대해 데이터를 사용할 수 없다는 결론을 내릴 수 있습니다.
두 번째 틱.
코드의 논리에 따라 동기화가 발생합니다. 기록 매개변수(모두 예의 로그에 따름);
세 번째 및 후속 틱.
TF M30, H1, H4, D1의 표시기에 따라 새 막대를 얻습니다. 그러나 데이터는 이미 수신되었습니다. 그리고 현재 시간보다 더 많은 시간 프레임이 1배 더 많다는 것이 밝혀졌습니다. 매우 이상한 동작입니다. 미래에는(현재 예를 사용하여) 동기화를 얻을 수 없습니다.
조언자.
첫 번째 틱.
동기화가 즉시 발생합니다. BarsCalculated()로 새 값을 얻는 것은 새 양초의 형성과 동시에 발생합니다.
두 번째 및 후속 틱.
함수의 논리적 동작. 모든 것이 동기화됩니다.
테스터에서 틱으로 두 예제를 모두 실행하면 모든 것을 스스로 이해할 수 있습니다. 기능의 현재 동작은 Expert Advisors 및 표시기에 대해 다릅니다. 또한 더 높은 기간에 대한 지표에서 데이터를 가져오는 것도 늦습니다. 따라서 M15와 M30에 대한 데이터를 요청할 때 동시에 사용할 수 없을 것이라고 생각합니다. 실제 데이터 - 절대 아닙니다!
내가 여전히 틀리면 이전 TF에서 표시기 데이터를 올바르게 얻는 방법을 알려주십시오. 고맙습니다.
두 번 원인 비교 ??? 이것은 비용이 많이 드는 작업일 수 있습니다(일부 필드의 동등성이 아니라 큰 개체의 동등성을 확인하려는 경우).
결국 Compare 에 대한 첫 번째 호출 후 결과를 간단히 저장할 수 있습니다.
차트 하단에 있는 이 아이콘은 어디에서 왔습니까?
차트에 표시가 없으며 아이콘이 매번 나타납니다. 나는 그들을 제거하고 싶은 유혹을 받았습니다. 이 쓰레기를 비활성화하는 방법? 터미널 설정에서 이와 관련된 내용을 찾지 못했습니다.
차트 하단에 있는 이 아이콘은 어디에서 왔습니까?
차트에 표시가 없으며 아이콘이 매번 나타납니다. 나는 그들을 제거하고 싶은 유혹을 받았습니다. 이 쓰레기를 비활성화하는 방법? 터미널 설정에서 이와 관련된 내용을 찾지 못했습니다.
캘린더 탭의 이벤트입니다. 삭제하려면: "캘린더" 탭 내부를 마우스 오른쪽 버튼으로 클릭 -> "차트에 표시" -> "모든 이벤트 삭제.
추신 그리고 "자동 업데이트" 상자의 선택을 취소하십시오. 이제 새 캘린더 이벤트가 차트에 표시되지 않습니다.
(MetaQuotes의 예에서) Expert Advisor를 선택하여 특정 기간에 매개변수를 사용하여 빌드 975에서 실행합니다.
작업 결과를 얻습니다. 수익률 곡선 차트 및 거래 테이블.
이제 동일한 기간에 빌드 1010에서 동일한 Expert Advisor를 실행하고 동일한 매개변수를 사용하면 완전히 다른 결과를 얻을 수 있습니다...
PS 메타테스터 32비트
안녕하세요 여러분) 타이머 시작을 도와주세요:
int OnInit()
{
부울 setTimer=EventSetTimer(60);
Print(" 타이머 설정 ");
}
무효 OnTimer()
{
Print("시간 경과");
}
질문: 왜 작동하지 않습니까? 전체 뇌가 꺼냈다 ... ((