오류, 버그, 질문 - 페이지 163

 
stringo :
표현 x = x++를 실제로 정당화할 수 있습니까? 무슨 말을 하고 싶었어요? x++를 할당하지 않고 증분을 사용하지 않는 이유는 무엇입니까? 일반적으로 사용되는 방법입니다.
그것은 우연히 일어났습니다 - 당신은 C와 같은 언어로 매일 글을 쓰지 않습니다. 당신은 x++만이 있다는 것을 잊었습니다. 나는 아날로그 x = x + 1이있을 것이라고 예상했습니다. 결과는 재미있었습니다 ...
 
GODZILLA :

음 ... 아니! 글쎄, 데이터가 없다, 나는 그들을 다시 요청했다 ... 다섯 번째 요청에서 나는 그것을 받고 갔다.

Expert Advisors 및 사용자 지정 지표 의 경우 이벤트 처리 모델을 사용하는 것이 좋습니다. OnTick() 또는 OnCalculate() 이벤트를 처리할 때 필요한 시계열의 모든 필요한 데이터를 가져올 수 없으면 다음 호출 시 데이터에 대한 액세스를 계산 하여 이벤트 핸들러를 종료해야 합니다 . 매니저.  

나도 이것을 읽고 그렇게 생각했지만, 예를 들어 이 코드가 제공하는 내용은 다음과 같습니다.

 int handle;
datetime inittime;
void OnInit (){

  
  handle = iCustom ( "GBPUSD" , PERIOD_M2 , "examples\ATR" , 14 );
   Print ( "Handle=" , handle);
  inittime = TimeCurrent ();
}
bool isfirst = true;
void OnTick ()
  {
     double val[ 1 ];
     int start_pos = 1 ;
     if ( isfirst || TimeCurrent ()- 5 * 60 > inittime ){
       int n = CopyBuffer ( handle, 0 , start_pos , 1 , val );
       Print ( "Получено n=" , n, 
        (n==- 1 )? " ошибка при получении данных из индикатора, " : " нет ошибки при получении данных из индикатора" ,
         " значение " , val[ 0 ] );
    }
    isfirst = false; 
  }

5분을 기다린 후 각 틱에 대한 표시기 값을 얻습니다(일부 로그를 잘라냈습니다).

2010.10.14 15:47:09 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:47:03 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:47:02 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:47:02 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:47:01 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:47:01 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:46:59 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:46:59 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:46:58 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:46:58 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:11 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:11 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:10 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:05 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:03 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:03 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:02 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:01 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:45:00 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:44:58 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:44:56 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:44:56 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:44:54 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:44:08 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:44:05 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:44:05 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:43:27 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:43:25 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:43:24 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:43:23 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:43:04 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:43:01 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:42:59 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:42:58 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:42:58 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:42:51 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:42:47 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:42:43 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:42:04 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0006792857142856462에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:41:25 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:41:22 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:41:05 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:41:05 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:41:01 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:59 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:57 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:54 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:41 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:40 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:38 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:36 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:26 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:21 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:21 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007028571428570865에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:18 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:14 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:13 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:07 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:04 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:02 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:40:02 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:59 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:56 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:54 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:52 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:51 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:50 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:49 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:46 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:45 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:45 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:43 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:42 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:40 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:40 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:39:39 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007364285714285289에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:34:38 tstincl (EURJPY,M1) 수신 n=1 표시기 값 0.0007357142857142544에서 데이터를 가져오는 동안 오류 없음
2010.10.14 15:34:35 tstincl (EURJPY,M1) 핸들=10

이것은 2분마다 변경되어야 합니다. 우리가 45분에서 m2당 새로운 막대를 사용할 수 없다는 것을 알 수 있습니다. 첫 번째, 두 번째 또는 열 번째 호소 후에도 사용할 수 없습니다.

아마도 비슷한 것이 있습니까?

이와 관련하여 개발자를 위한 질문: CopyBuffer를 올바르게 호출하는 방법은 무엇입니까? 호출하기 전에 매번 시계열을 동기화하시겠습니까? 그런 다음 표시기 핸들이 속한 시계열 및 기호를 알아야 합니다. 이를 알기 위해서는 이 정보를 어딘가에 저장하고 CopyBuffer가 호출되는 모든 위치로 이 정보를 전송해야 합니다. 코드가 더 복잡해지고 복잡해집니다.

 

테스터 질문입니다.

테스터 실행 결과는 얼마나 자주 저장되나요?

로그는 결과가 캐시에 저장된 경우 다시 계산하지 않고 캐시에서 가져온 것으로 나타나 시간을 절약합니다. 다소 긴 최적화 중에 컴퓨터가 충돌하는 상황에 직면했습니다(이유는 중요하지 않음). 동일한 매개변수를 사용하여 동일한 Expert Advisor의 다음 최적화를 시작할 때 아무 것도 절약되지 않은 것으로 나타났습니다. 시간 낭비였습니다. 물론 안전망이 있습니다. 주기적으로 최적화를 중지하고 다시 시작하지만 이것은 그다지 편리하지 않습니다. 빌드 342.

 
Ashes :

테스터 질문입니다.

테스터 실행 결과는 얼마나 자주 저장되나요?

로그는 결과가 캐시에 저장된 경우 다시 계산하지 않고 캐시에서 가져온 것으로 나타나 시간을 절약합니다. 다소 긴 최적화 중에 컴퓨터가 충돌하는 상황에 직면했습니다(이유는 중요하지 않음). 동일한 매개변수를 사용하여 동일한 Expert Advisor의 다음 최적화를 시작할 때 아무 것도 절약되지 않은 것으로 나타났습니다. 시간 낭비였습니다. 물론 안전망이 있습니다. 주기적으로 최적화를 중지하고 다시 시작하지만 이것은 그다지 편리하지 않습니다. 빌드 342.

최적화가 완료된 후 최적화 결과는 파일에 기록됩니다 . 비상 종료 시 결과가 기억되지 않습니다.

우리는 무엇을 할 수 있는지 생각할 것입니다.

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
stringo :

최적화가 완료된 후 최적화 결과는 파일에 기록됩니다 . 비상 종료 시 결과가 기억되지 않습니다.

우리는 무엇을 할 수 있는지 생각할 것입니다.

하는 것이 좋습니다.

그 과정에서 최적화 결과를 사진뿐만 아니라 처리에 적합한 형태로 저장하고 싶습니다. 아니면 소중한 버튼을 찾지 못했습니까?

 
Ashes :

하는 것이 좋습니다.

그 과정에서 최적화 결과를 사진뿐만 아니라 처리에 적합한 형태로 저장하고 싶습니다. 아니면 소중한 버튼을 찾지 못했습니까?

tester\cache\<ea_name>.<기호>.< 마침표 >.<모드>.xml
 
Ashes :

하는 것이 좋습니다.

그 과정에서 최적화 결과를 사진뿐만 아니라 처리에 적합한 형태로 저장하고 싶습니다. 아니면 소중한 버튼을 찾지 못했습니까?

또한 강제 중지 후 최적화를 계속하는 방법에 대한 질문이 있습니다. 도움말에서 이에 대한 내용을 찾지 못했습니다.
 

sergey1294 :
и у меня вопрос тоже есть, как продолжить оптимизацию после принудительного останова, в справке что-то не нашел по этому поводу ни чего.

시작 버튼을 누르면 됩니다.
 
stringo :
tester\cache\<ea_name>.<기호>.<마침표>.<모드>.xml

또 다른 기사 MQL5: 전문가 자문 테스트 및 최적화를 위한 가이드 :

최적화가 완료된 후 "MQL5\Tester\cache" 폴더에서 cci_ma_ea.EURUSD.H1.2.xml 파일을 찾을 수 있습니다. 최적화 결과.

최적화 결과는 ExpertName.SYMBOL.PERIOD.GenerationMode.xml 파일에 저장됩니다. 여기서:

  • ExpertName - 최적화할 전문가의 이름입니다.
  • 기호 - 기호;
  • 기간 - 기간(M1,H1,...);
  • GenerationMode - 틱 생성 모드(0 - "모든 틱", 1 - "M1의 OHLC", 2 - "공개 가격만").

이 파일은 나중에 분석하기 위해 Excel에서 열 수 있습니다.

 
stringo :
시작 버튼을 누르면 됩니다.
즉, 테스터는 자동으로 과거 실행 목록을 " 최적화 결과 " 탭에 로드하고 중단된 부분부터 최적화를 계속해야 합니까?
사유: