MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 968

 
Yevhenii Levchenko :
tester/history 폴더에 견적이 저장되나요?

아니요.

\history\downloads\symbol\*.dat - 따옴표 아카이브.

\history\server\*.hst - 따옴표.

\tester\history\*.fxt - 테스트 또는 최적화를 실행할 때마다 새로 *.hst 파일에서 생성됩니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MT4 개발자를 위한 질문: 테스터 파일

세르게이 바소프 , 2016.01.14 07:25

저는 MT4 개발자는 아니지만 개인적인 경험으로 답변드릴 수 있습니다.

제거해도 아무 영향이 없습니다. 다음에 테스트하거나 최적화할 때 다시 생성됩니다.

따옴표는 *.hst 파일에 저장되며, 여기서 테스터는 매번 새로 *.fxt 파일을 생성합니다.


 
Sergey Basov :

아니요.

\history\downloads\symbol\*.dat - 따옴표 아카이브.

\history\server\*.hst - 따옴표.

\tester\history\*.fxt - 테스트 또는 최적화를 실행할 때마다 새로 *.hst 파일에서 생성됩니다 .


이 카누는 시작할 때 디스크를 많이 로드합니다 ... 매번 재생성되면 테스터가 이것을 삭제하지 않는 이유는 무엇입니까? 어떻게 든 구성 할 수 있습니까?

 
Nauris Zukas :

안녕하세요! 이번 달 의 바 오픈 시간을 알고 싶었지만 오류 4074(ERR_NO_MEMORY_FOR_HISTORY)가 발생했습니다. 6월 1일부터 테스트를 시작하면 모든 것이 올바르게 출력되지만 이미 6월 2일부터 오류가 발생하기 시작한다는 점도 흥미롭습니다. 이번 달의 문제를 어떻게 해결할 것인가?

안녕하세요!

다른 브로커에서 로드된 견적을 테스트할 때 동일한 오류 4074( ERR_NO_MEMORY_FOR_HISTORY )가 발생했습니다. 그리고 이것들은 내가 사용하는 최초의 제3자 인용문이 아닙니다. 다른 사람들에게는 이 오류가 나타나지 않았습니다. 오류의 원인은 무엇이며 해결 방법은 누군가 이미 알아 냈을 수 있습니까?

 

MT5의 가장 간단한 코드가 MT4와 완전히 다르게 작동하는 이유는 무엇입니까? 예를 들어 다음 코드는 MT4에서 이동 버퍼의 평균 값을 계산합니다.

 for ( int i= 0 ; i<nLimit; i++){
         double value ;
         for ( int k=i; k<i+AveragePeriod; k++){
             value +=Buffer1[k];
         }
         AverageBuffer[i]= value /AveragePeriod;
      }

...MT5에서는 작동하지 않습니다. 다소 유사한 방식으로 작업하려면(입력 방법에 따라 결정됨) 다음과 같이 필요합니다.

 for ( int i= 0 ; i<nLimit; i++){
         double value ;
         for ( int k=i; k<i+AveragePeriod; k++){
             value +=Buffer1[k];
         }
         value /=(AveragePeriod+ 1 );
         AverageBuffer[i]= value ;
      }

그런 다음 처음 7개의 버퍼는 엄청난 값을 보여줍니다. 다른 모든 것은 정상인 것 같습니다. 그런 사소한 일에 내 턱이 떨어졌다)

이 문제를 올바르게 해결하는 방법을 알려주십시오.

 

계산과 새로 그린 모든 것 사이 에 주석을 추가했습니다 :D

 for ( int i= 0 ; i<nLimit; i++){
         double value ;
         for ( int k=i; k<i+AveragePeriod; k++){
             value +=Buffer1[k];
         }
         if (i== 2 )
           

  Comment( value ); // вот это добавил

         value /=(AveragePeriod+ 1 );          AverageBuffer[i]= value ;                }
캐치 뭔데?
 
iFractal을 사용하여 그러한 조건을 작성하는 방법을 알 수 없습니까? 만약:
첫 번째 Fractal_up < 두 번째 Fractal_up 다음 .....
그리고 다운 프랙탈도 마찬가지
 
Vladimir Baskakov :
iFractal을 사용하여 그러한 조건을 작성하는 방법을 알 수 없습니까? 만약:
첫 번째 Fractal_up < 두 번째 Fractal_up 다음 .....
그리고 다운 프랙탈도 마찬가지

주말. 우리는 바보를 연주 ...

 
Vladimir Baskakov :
iFractal을 사용하여 그러한 조건을 작성하는 방법을 알 수 없습니까? 만약:
첫 번째 Fractal_up < 두 번째 Fractal_up 다음 .....
그리고 다운 프랙탈도 마찬가지

완성된 것에서 다음과 같은 도형을 찾고 있습니다.

 //_______________________________________________________________________
int GetLastFractals( int bar, int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while (i< Bars && iFractals ( NULL , 0 ,mode,i)< _Point ) i++;
   return (i);
  }
//_______________________________________________________________________

다음과 같이 첫 번째 프랙탈과 다음 Up을 찾으려면 두 번 호출해야 합니다.

 int barfrup_1 = GetLastFractals( 1 ,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+ 1 ,MODE_UPPER);
 
Yevhenii Levchenko :

계산과 새로 그린 모든 것 사이에 주석을 추가했습니다 :D

캐치 뭔데?

표시기 버퍼의 경우 ArraySetAsSeries (true)입니다.

 
Igor Makanu :

완성된 것에서 다음과 같은 도형을 찾고 있습니다.

다음과 같이 첫 번째 프랙탈과 다음 Up을 찾으려면 두 번 호출해야 합니다.

감사합니다. 작동합니다. 한 가지 조건만 충족됩니다.

         if (barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

그리고 나는 필요하다

         if (barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

그리고 어떤 이유로 그는 그와 직책을 열지 않습니다.