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

 
Михаил :

나는 종종 화살표 코드를 찾지 않지만 도움말에서 찾기가 매우 어렵습니다!

이것은 별표, 원 등이있는 판입니다.

그리고 검색은 올바른 것 외에는 무엇이든 생성합니다!

윙딩스
 

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

라이브러리: HistoryTicks

fxsaber , 2020.01.09 14:43

KB 버전이 오래된 것을 알지 못했습니다. 안타깝게도 업데이트가 실패합니다. KB 기계는 다음과 같은 정보를 제공합니다.
MQL4\Include\fxsaber\HistoryTicks\ ArrayResize .mqh( 110 , 14 ) : error 165 : 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ ArrayResize .mqh( 172 , 14 ) : error 165 : 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ ArrayResize .mqh( 110 , 14 ) : error 165 : 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ ArrayResize .mqh( 172 , 14 ) : error 165 : 'ArrayResize_Real' - function already defined and has body
ME에서는 모든 것이 오류 없이 컴파일됩니다.
 
Stanislav Korotky :

왜 3번째 줄에:

"기호 불일치" 경고?

datetime은 기본적으로 부호 없는 숫자입니다(ulong과 같은 8바이트). 부정적인 날짜의 예를 들어주세요.

아마도 별도의 타임스탬프 유형이 없고 datetime 유형 도 시차를 저장하는 역할을 하기 때문일 것입니다.
 
중지 버튼을 눌렀을 때 테스터에서 어떤 이벤트(있는 경우)가 생성되는지 알려주실 수 있습니까?
 
다시 한번 도움말을 작성합니다! 더 나은 연결을 다시 얻는 방법을 모르겠습니다. 계정을 변경해도 도움이 되지 않습니다.
파일:
Mc3FTItT2F8.jpg  18 kb
 

현재 데이터에서 디버깅할 때 표시기의 OnInit 에서 ChartSetSymbolPeriod 사용할 때 이상한 점은 이전 TF의 OnTick() rate_total과 새 TF의 시계열 배열에 있습니다.

 datetime shift,arr[],arr2[];
void OnInit ()
  {
 if ( ChartPeriod ()!= PERIOD_D1 )
 {
     ChartSetSymbolPeriod ( 0 , Symbol (), PERIOD_D1 );
     CopyTime ( Symbol (), PERIOD_D1 , 0 , iBars ( Symbol (), PERIOD_D1 ),arr);     
     ChartRedraw ();
     Sleep ( 100 );
  }  
 CopyTime ( Symbol (), PERIOD_H1 , 0 , iBars ( Symbol (), PERIOD_H1 ),arr2); 
  }

여기에서 날짜의 Time[x], H1의 Rates_total 을 볼 수 있으며 TF 디버거 창에서는 차트가 날짜로 변경되었습니다.


 
Aleksey Mavrin :

현재 데이터에서 디버깅할 때 표시기의 OnInit 에서 ChartSetSymbolPeriod를 사용할 때 이상한 점은 이전 TF의 OnTick() rate_total과 새 TF의 시계열 배열에 있습니다.

여기에서 날짜의 Time[x], H1의 Rates_total 을 볼 수 있으며 TF 디버거 창에서는 차트가 날짜로 변경되었습니다.


기간을 변경하면 표시기가 완전히 재생성됩니다. 즉, 이전 인디케이터의 핸들이 삭제되고 새로운 인디케이터의 핸들이 생성됩니다.
그러나 하나의 "BUT"이 있습니다. 이전 표시기는 한동안 여전히 존재합니다.

그 이유가 아닌가...

 
Aleksey Mavrin :

현재 데이터에서 디버깅할 때 표시기의 OnInit 에서 ChartSetSymbolPeriod를 사용할 때 이상한 점은 이전 TF의 OnTick() rate_total과 새 TF의 시계열 배열에 있습니다.

여기에서 날짜의 Time[x], H1의 Rates_total 을 볼 수 있으며 TF 디버거 창에서는 차트가 날짜로 변경되었습니다.

인디케이터릴리스

Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
  • www.mql5.com
//|                                        Test_IndicatorRelease.mq5 | //|                        Copyright 2010, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Artyom Trishkin :

기간을 변경하면 표시기가 완전히 재생성됩니다. 즉, 이전 인디케이터의 핸들이 삭제되고 새로운 인디케이터의 핸들이 생성됩니다.
그러나 하나의 "BUT"이 있습니다. 이전 표시기는 한동안 여전히 존재합니다.

그 이유가 아닌가...

예, 실험에서 알 수 있듯이 ChartSetSymbolPeriod 후에 OnInit가 완료되고 OnCalculate가 한 번(최소한 디버그 모드 에서) 실행됩니다(이 시점에서 포착됨). 그 후 표시기가 해제되고 새 TF에서 OnInit가 시작됩니다. 저것들. 온라인 작업은 방해하지 않습니다.

다른 TF의 데이터가 OnCalculate에 도착할 수 있다는 바로 그 사실이 버그이기 때문에 여기에 썼습니다.

 
이것이 ArraySwap 의 결함입니까?
 void OnStart ()
{
   int ArrayStatic[ 1 ];
   int ArrayDynamic[];
  
   ArrayResize (ArrayDynamic, ArraySize (ArrayStatic));
  
   Print ( ArraySwap (ArrayStatic, ArrayDynamic)); // false
}