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

 

SymbolInfoTick() 함수로 최신 데이터가 아닌 데이터를 반환하는 중 오류 발생 - 틱 점프. 빌드 1525 x64. 표시기에서 테스트하고 고문을 확인하지 않았습니다.

#property version    "1.00"
#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
  
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   static long prevMs = 0 ;
   //---
   MqlTick tick;
   if ( SymbolInfoTick ( _Symbol , tick ) )
        {
         if ( prevMs != 0 && tick.time_msc < prevMs )
                {
                 Print ( __FUNCTION__ , ": ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!" );
                 Print ( __FUNCTION__ , ": Текущее время мс = " ,tick.time_msc, " (" + TimeToString ( tick.time, TIME_DATE | TIME_SECONDS )+ "), предыдущее = " ,prevMs );
                }
             //---
            prevMs = tick.time_msc;
        }
   else
         Print ( __FUNCTION__ , ": ОШИБКА #" , GetLastError (), ". Значение текущего тика не получено!" );
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

결과:

2017.02 . 02 21 : 54 : 20.450 test_SymbolInfoTick_20170202 (VTBR- 3.17 ,M1)     OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 21 : 54 : 20.450 test_SymbolInfoTick_20170202 (VTBR- 3.17 ,M1)     OnCalculate : Текущее время мс = 1486065260384 ( 2017.02 . 02 19 : 54 : 20 ), предыдущее = 1486065260387
2017.02 . 02 22 : 11 : 31.025 test_SymbolInfoTick_20170202 (GOLD- 3.17 ,M3)     OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 22 : 11 : 31.025 test_SymbolInfoTick_20170202 (GOLD- 3.17 ,M3)     OnCalculate : Текущее время мс = 1486066290963 ( 2017.02 . 02 20 : 11 : 30 ), предыдущее = 1486066290966
2017.02 . 02 22 : 12 : 44.939 test_SymbolInfoTick_20170202 (BR- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 22 : 12 : 44.939 test_SymbolInfoTick_20170202 (BR- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486066364884 ( 2017.02 . 02 20 : 12 : 44 ), предыдущее = 1486066364890
2017.02 . 02 22 : 29 : 36.358 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 22 : 29 : 36.358 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486067376304 ( 2017.02 . 02 20 : 29 : 36 ), предыдущее = 1486067376307
2017.02 . 02 22 : 31 : 26.462 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 22 : 31 : 26.462 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486067486339 ( 2017.02 . 02 20 : 31 : 26 ), предыдущее = 1486067486344
2017.02 . 02 22 : 32 : 14.441 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 22 : 32 : 14.441 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486067534360 ( 2017.02 . 02 20 : 32 : 14 ), предыдущее = 1486067534363
2017.02 . 02 22 : 36 : 07.509 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 22 : 36 : 07.510 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486067767443 ( 2017.02 . 02 20 : 36 : 07 ), предыдущее = 1486067767463
2017.02 . 02 22 : 39 : 29.606 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick () вернуло не последнее значение!
2017.02 . 02 22 : 39 : 29.606 test_SymbolInfoTick_20170202 (Si- 3.17 ,M1)       OnCalculate : Текущее время мс = 1486067969557 ( 2017.02 . 02 20 : 39 : 29 ), предыдущее = 1486067969558

리얼, 오프닝, 접속 서버 V. 슬픔! 문제에주의하십시오. 또한 응용 프로그램 #1598238(10페이지부터 시작, 게시 날짜: 2017.01.26 09:43)의 문제에 대해서도 마찬가지입니다.

친애하는 개발자 여러분, 티키를 편집해 봅시다! 코드가 제공됩니다. 여기 있습니다. 문제는 아무 것도 찾을 필요가 없습니다. 반응하고 수정하면 됩니다!

 
네, 그리고 터미널에서 패널을 고쳐주세요! 버그는 중요하지 않지만 성가신 일입니다. 창을 자주 압축/늘려야 하는 경우 패널이 제자리에 떨어지지 않습니다! 빌드 1525 x64.
 
점검 해보자.
 
Alexey Kozitsyn :

SymbolInfoTick() 함수로 최신 데이터가 아닌 데이터를 반환하는 중 오류 발생 - 틱 점프. 빌드 1525 x64. 표시기에서 테스트하고 고문을 확인하지 않았습니다.


친애하는 개발자 여러분, 티키를 편집해 봅시다! 코드가 제공됩니다. 여기 있습니다. 문제입니다. 아무 것도 찾을 필요가 없습니다. 반응하고 수정하기만 하면 됩니다!

서비스 데스크 요청으로 메시지를 제출하십시오.
 
Alexey Da :
서비스 데스크 요청으로 메시지를 제출하십시오.
#1664077
 

컴파일 중 오류

static string text1 =
                       "ABC"
                       "DEF" ; //нормально
static string text2 =
#ifndef MACRO
                       "ABC"
#endif
                      
"DEF" ; //Error: 'DEF' - some operator expected
 

차트 기간 변경 시 함수 호출 순서가 잘못됨

  • 표시기 위치 경로: \Indicators\Test_i.ex5
  • 전문가 위치 경로: \Experts\Test.ex5

시퀀싱:

  1. M5 차트에 Expert Advisor 'Test.ex5' 첨부 (기호 GBPUSD)
  2. 차트 기간을 M15로 변경
  3. 차트 기간을 M30으로 변경
  4. 차트에서 전문가 제거

결과:

#1단계: 가입
나::나->M5
OnInit->M5
#2단계: 기간 변경 M5 -> M15
나::나->M15
OnInit->M15
#3단계: 기간 변경 M15->M30
나::나->M30
OnInit->M30
OnDeinit->M15:3
나::~나->M15
#4단계: 삭제
OnDeinit->M5:1 ##이 행은 2단계에서 다음과 같이 예상되었습니다. OnDeinit->M5:3
I::~I->M5 ##이 라인은 2단계에서 예상한 것입니다.
OnDeinit->M30:1
나::~나->M30

##로 표시된 라인은 #2단계에서 표시될 것으로 예상했으며, 게다가 기간 변경( REASON_CHARTCHANGE:3 )으로 인해 초기화 해제가 예상되었으며 차트에서 삭제(REASON_REMOVE:1)되지 않았습니다. 즉, 2단계는 3단계와 유사할 것으로 예상되었습니다.

//Test_i.mq5 //Индикатор
void Prn( string f, int i = - 1 ) { Print ( f, "->" , StringSubstr ( EnumToString ( Period ()), 7 ), (i == - 1 ? "" : ":" + i )); }
struct I {
         I() { Prn( __FUNCTION__ ); }
        ~I() { Prn( __FUNCTION__ ); }
};
static const I i;
void OnInit ()                     { Prn( __FUNCTION__ ); }
void OnDeinit ( const int reason ) { Prn( __FUNCTION__ , reason ); }
int OnCalculate ( const int , const int , const int , const double & [] ) { return 0 ; }
//Test.mq5  //Эксперт
struct B {
         B();
        ~B();
         const int h;
         static const string name;
};
const string B::name = "Test_i" ;
B::B() : h( iCustom ( NULL , 0 , name ))
{
         if ( ! ChartIndicatorAdd (     0 , 0 , h )    ) Print ( "-1:" , GetLastError ());
}
B::~B()
{
         if ( ! ChartIndicatorDelete ( 0 , 0 , name ) ) Print ( "-2:" , GetLastError ());
         if ( ! IndicatorRelease ( h )              ) Print ( "-3:" , GetLastError ());
}
static const B b;
void OnInit () export {}
 

Bill Williams의 표시기 설치 시 결함

프랙탈 넣어 - 넣어

AO를 넣어 - ADX를 넣어

빌드 1031

 
Vladimir Gribachev :

Bill Williams의 표시기 설치 시 결함

프랙탈 넣어 - 넣어

AO를 넣어 - ADX를 넣어

빌드 1031

이 표시기를 설정할 때뿐만 아니라 때때로 및 기타.

터미널을 다시 시작하면 문제가 해결됩니다.

나는 그것이 테스트 후에 시작된다는 것을 알았습니다.

 

주기적으로 깜박임(다시 그리기 없이) MT5 bild 1525의 지그재그 전달 표시기