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

 

자신을 확인할 수 있다는 것을 이해합니다 ...

테스터에서 틱과 타이머 중 어떤 이벤트가 더 일찍 생성됩니까?

예를 들어 Timer는 12:00:00.000에 호출되어야 합니다. 그리고 같은 시간에 진드기가 있습니다. OnTimer와 OnTick 중 누가 먼저 일할까요?

 
Vladimir Pastushak :
내 즐겨찾기에 수백 가지 주제가 있었고 모두 정리되었습니다... 나도 모르게.

안녕하세요!

다시 확인 해주세요. 좋아하는 주제가 있습니다.

 
fxsaber :

자신을 확인할 수 있다는 것을 이해합니다 ...

테스터에서 틱과 타이머 중 어느 이벤트가 더 일찍 생성됩니까?

예를 들어 Timer는 12:00:00.000에 호출되어야 합니다. 그리고 같은 시간에 진드기가 있습니다. OnTimer와 OnTick 중 누가 먼저 일할까요?

먼저 타이머

 
Slava :

먼저 타이머

감사합니다. 좋은 솔루션입니다.

 
Pavel Kozlov :

안녕하세요!

다시 확인 해주세요. 좋아하는 주제가 있습니다.

감사합니다. 모든 것이 돌아왔습니다.

[삭제]  

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

다른 결과. 어떻게? 왜요? 무엇을 믿어야 할까요?

세르게이 타볼린 , 2018.11.10 12:15

열심히 뛰고 있습니다. 파일을 쓰는 중입니다. 그리고 다른 길이의 모든 시간. TF 때문일 수도 있지만 TF는 결과에 어떤 식으로든 영향을 주어서는 안 됩니다! 추가 초기화를 위해 아무 것도 가지 않습니다!

어떻게 왜? 아니면 테스트 오류인가요?


 //+------------------------------------------------------------------+
//|                                               KrL_write_func.mq5 |
//|                                     Copyright 2018, Tabolin S.N. |
//|                           https://www.mql5.com/ru/users/vip.avos |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Tabolin S.N."
#property link        "https://www.mql5.com/ru/users/vip.avos"
#property version    "1.00"
//+------------------------------------------------------------------+
typedef void (*TFunc)( void );
TFunc entry_func[ 7 ];
//+------------------------------------------------------------------+
enum f_entry
{
   no_f,             // не использовать
   reb,               // отскок
   brd1,             // пробой 1
   brd2,             // пробой 2
   lim,               // лимитный
   lw,               // недельный
   cust,             // пользовательский
};

input     f_entry  func_entry_1         = reb;             // 1-я функция условий входа
input     f_entry  func_entry_2         = brd1;           // 2-я функция условий входа
input     f_entry  func_entry_3         = brd2;           // 3-я функция условий входа
input     f_entry  func_entry_4         = lim;             // 4-я функция условий входа
input     f_entry  func_entry_5         = lw;             // 5-я функция условий входа
input     f_entry  func_entry_6         = cust;           // 6-я функция условий входа

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
   if (paramIncorrect()) return ( INIT_PARAMETERS_INCORRECT );
   else
   {
       string    filename    = "KR\\func.txt" ;
       int       filehandle  = FileOpen (filename, FILE_WRITE | FILE_READ | FILE_TXT | FILE_ANSI | FILE_COMMON );
       if (filehandle != INVALID_HANDLE )
      {
         FileSeek (filehandle, 0 , SEEK_END );
         string str = string (func_entry_1)+ "," + string (func_entry_2)+ "," + string (func_entry_3)+ "," + string (func_entry_4)+ "," + string (func_entry_5)+ "," + string (func_entry_6)+ "\n" ;
         
         if ( FileWriteString (filehandle,str) == 0 ) Print ( "Ошибка записи файла" );
         FileClose (filehandle);
      }
      
       return ( INIT_FAILED );
   }

   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
{
   
}
//+------------------------------------------------------------------+
bool paramIncorrect()
{
   bool      ret_func = false ;
   
   if (func_entry_1 == no_f && func_entry_2 == no_f && func_entry_3 == no_f && func_entry_4 == no_f && 
      func_entry_5 == no_f && func_entry_6 == no_f) return ( true );
//--- Порядок следования
   if (func_entry_1 == no_f)                                                                                       ret_func = true ;
   else if (func_entry_2 == no_f && (func_entry_3 != no_f || func_entry_4 != no_f || func_entry_5 != no_f || 
                                    func_entry_6 != no_f))                                                        ret_func = true ;
   else if (func_entry_3 == no_f && (func_entry_4 != no_f || func_entry_5 != no_f || func_entry_6 != no_f))        ret_func = true ;
   else if (func_entry_4 == no_f && (func_entry_5 != no_f || func_entry_6 != no_f))                                ret_func = true ;
   else if (func_entry_5 == no_f &&  func_entry_6 != no_f)                                                         ret_func = true ;
//--- Повторяемость
   if (func_entry_1 == reb  && (func_entry_2 == reb    || func_entry_3 == reb  || func_entry_4 == reb  || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_1 == brd1 && (func_entry_2 == brd1   || func_entry_3 == brd1 || func_entry_4 == brd1 || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_1 == brd2 && (func_entry_2 == brd2   || func_entry_3 == brd2 || func_entry_4 == brd2 || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_1 == lim  && (func_entry_2 == lim    || func_entry_3 == lim  || func_entry_4 == lim  || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_1 == lw   && (func_entry_2 == lw     || func_entry_3 == lw   || func_entry_4 == lw   || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_1 == cust && (func_entry_2 == cust   || func_entry_3 == cust || func_entry_4 == cust || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_2 == reb  && (func_entry_3 == reb    || func_entry_4 == reb  || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_2 == brd1 && (func_entry_3 == brd1   || func_entry_4 == brd1 || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_2 == brd2 && (func_entry_3 == brd2   || func_entry_4 == brd2 || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_2 == lim  && (func_entry_3 == lim    || func_entry_4 == lim  || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_2 == lw   && (func_entry_3 == lw     || func_entry_4 == lw   || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_2 == cust && (func_entry_3 == cust   || func_entry_4 == cust || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_3 == reb  && (func_entry_4 == reb    || 
                               func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_3 == brd1 && (func_entry_4 == brd1   || 
                               func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_3 == brd2 && (func_entry_4 == brd2   || 
                               func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_3 == lim  && (func_entry_4 == lim    || 
                               func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_3 == lw   && (func_entry_4 == lw     || 
                               func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_3 == cust && (func_entry_4 == cust   || 
                               func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_4 == reb  && (func_entry_5 == reb    || func_entry_6 == reb))                                    ret_func = true ;
   if (func_entry_4 == brd1 && (func_entry_5 == brd1   || func_entry_6 == brd1))                                   ret_func = true ;
   if (func_entry_4 == brd2 && (func_entry_5 == brd2   || func_entry_6 == brd2))                                   ret_func = true ;
   if (func_entry_4 == lim  && (func_entry_5 == lim    || func_entry_6 == lim))                                    ret_func = true ;
   if (func_entry_4 == lw   && (func_entry_5 == lw     || func_entry_6 == lw))                                     ret_func = true ;
   if (func_entry_4 == cust && (func_entry_5 == cust   || func_entry_6 == cust))                                   ret_func = true ;
   
   if (func_entry_5 == reb  && func_entry_6 == reb)                                                                ret_func = true ;
   if (func_entry_5 == brd1 && func_entry_6 == brd1)                                                               ret_func = true ;
   if (func_entry_5 == brd2 && func_entry_6 == brd2)                                                               ret_func = true ;
   if (func_entry_5 == lim  && func_entry_6 == lim)                                                                ret_func = true ;
   if (func_entry_5 == lw   && func_entry_6 == lw)                                                                 ret_func = true ;
   if (func_entry_5 == cust && func_entry_6 == cust)                                                               ret_func = true ;
   
   if (ret_func) return ( true );
   
   return ( false );
}

 
Сергей Таболин :

캐시가 작동합니다.

 

안녕하세요!

MT5에서 "고정 차트 위치" 슬라이더의 잘못된 작업에 직면: 예를 들어 주간 차트에서 일간 차트로 전환할 때 약 280일만큼 이동합니다.

터미널을 설치 한 후 처음에는 모든 것이 잘 되고, 그런 다음 이전 프로필을 로드하고 결함이 시작됩니다. 그리고 그것은 오래된 문제입니다.

조그마한 시연 영상 첨부합니다...



파일:
test.exe.zip  1300 kb
[삭제]  

이 경우 경고를 제거할 수 있습니까? 변수를 생성하지 않습니다. 아니면 mql에서 전혀 작동하지 않습니까?

 private :
   int                number_of_features;
     
public :
                     CBandit( int number_of_features) {                                      
                             this .number_of_features = number_of_features;
                            }
  

'number_of_features' 선언은 24행에서 멤버 선언을 숨깁니다.


 
Maxim Dmitrievsky :

이 경우 경고를 제거할 수 있습니까? 변수를 생성하지 않습니다. 아니면 mql에서 전혀 작동하지 않습니까?

'number_of_features' 선언은 24행에서 멤버 선언을 숨깁니다.


그리고 당신은 이미 변수를 "생성"했습니다. 여기 CBandit( int number_of_features) variable int number_of_features는 이미 생성되었거나 변수가 아니라 이 변수 값의 복사본 이므로 CBandit(int number_of_features _my )를 작성하십시오. 아무것도 변경되지 않기 때문에 떠나고 컴파일러는 구체적으로 경고를 제공합니다. 설명 CBandit( int number_of_features) 범위를 닫았습니다.

사적인:

int number_of_features;

그리고 아마도 이 int number_of_features가 필요했을 것입니다. CBandit() 메서드에서 수신하거나 그렇지 않을 수도 있습니다. 컴파일러는 이것을 모니터링합니다.