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

 
Andrey Khatimlianskii :

확인되었나요?

당연히 아니지. 여기에 쓰여진 모든 것은 독립적인 결론입니다.

Renat이나 Slava는 표시기가 수동으로 시작되더라도 표시기가 복제되지 않는다고 말한 것을 기억합니다. 매개변수의 해시가 일치합니다. 동일한 계산 부분이 사용됩니다.

사실이 아니다. 그리고 가장 중요한 것은 사실이 아닐 수도 있다는 것입니다.

두 개의 동일한 차트에서 이 지표를 수동으로 실행

 int OnCalculate ( const int , const int , const int , const double &[] )
{
   Print ( ChartID ());
  
   return ( 0 );
}

계산된 부분이 일치하면 다른 인쇄물이 없을 것입니다. 제가 생각하는 결론의 90%는 맞다고 생각합니다.

 
Nexxtor :

도움말의 작성자 또는 MQL5 언어는 ***에서 누가 손을 키웠는지에 따라 어떻게 얻었습니까!!!

IndicatorCreate()는 다음과 같이 말합니다.

매개변수_cnt

[in] parameters_array[] 배열에 전달된 매개변수의 수입니다. 배열 요소에는 MqlParam 특수 구조 유형이 있습니다. 기본값은 0입니다. 매개변수가 전달되지 않습니다. 0이 아닌 수의 매개변수가 지정되면 parameters_array 매개 변수 가 필요합니다. 최대 256개의 매개변수를 전달할 수 있습니다.


말해봐, 직접 확인했어??? 256개의 매개변수가 있는 표시기가 호출된다는 것은???


고치다!!!

안 뛰니? 실행되지 않은 코드를 표시합니다.

그리고 제발 감정은 줄이고 행동은 더 많이 해주세요.

 
fxsaber :

사실이 아니다. 그리고 가장 중요한 것은 사실이 아닐 수도 있다는 것입니다.

두 개의 동일한 차트에서 이 지표를 수동으로 실행

계산된 부분이 일치하면 다른 인쇄물이 없을 것입니다.

나에게는 매우 어려운 결론이다.

지표가 하나의 차트를 봐야 하는 이유는 무엇입니까? ChartID 를 기반으로 지표 알고리즘을 구축할 수 있기 때문에???

 
fxsaber :

OBJ_CHART의 Expert Advisors는 확실히 시작하지 않습니다(더 정확하게는 작동하지 않습니다). 그래서 타이머는 괜찮은 것 같습니다. 아마도 모든 이벤트가 작동하지 않을 수 있습니다.

OBJ_CHART 에 대한 Expert Advisors가 실행되고 제대로 작동합니다. OnChartEvent(사용자 지정)만 처리하고 다른 차트에 대한 자체 사용자 지정 이벤트를 생성할 수 있습니다.

 
Andrey Khatimlianskii :

지표가 하나의 차트를 봐야 하는 이유는 무엇입니까?

iCustom 지표에는 자체 차트가 없습니다. 일부 차트에 추가된 경우에도.

ChartID를 기반으로 지표 알고리즘을 구축할 수 있기 때문에???

예, 차트에 적용된 차트 기능 및 이벤트(수동/템플릿 표시기)는 모든 작업에 사용할 수 있습니다.

 

문서 오류

ChartNavigate

지정된 차트 위치를 기준으로 지정된 막대 수만큼 지정된 차트를 이동합니다.

 bool    ChartNavigate (
   long   chart_id,     // идентификатор графика
   int    position,     // позиция
   int    shift= 0        // значение сдвига
   );

옵션

차트 ID

【인】 차트 ID입니다. 0은 현재 차트를 의미합니다.

위치

【인】 이동이 만들어지는 상대적인 차트 위치입니다. 값은 ENUM_CHART_POSITION 열거형 값 중 하나일 수 있습니다.

 
Andrey Barinov :

OBJ_CHART 에 대한 Expert Advisors가 실행되고 제대로 작동합니다. OnChartEvent(사용자 지정)만 처리하고 다른 차트에 대한 자체 사용자 지정 이벤트를 생성할 수 있습니다.

확인했습니다. EA Experts\Test.mq5

 class CUSTOM
{
public :  
  CUSTOM()
  {
     Print ( __FUNCSIG__ );
    
     Print ( EventSetTimer ( 1 ) && EventChartCustom ( 0 , 0 , 0 , 0 , NULL ) &&
           MarketBookAdd ( _Symbol ) && 
           ChartSetInteger ( 0 , CHART_EVENT_MOUSE_WHEEL , true ) &&
           ChartSetInteger ( 0 , CHART_EVENT_MOUSE_MOVE , true ) &&
           ChartSetInteger ( 0 , CHART_EVENT_OBJECT_CREATE , true ) &&
           ChartSetInteger ( 0 , CHART_EVENT_OBJECT_DELETE , true ) &&
           ChartNavigate ( 0 , CHART_BEGIN , 100 ) &&
           ObjectCreate ( 0 , __FILE__ , OBJ_VLINE , 0 , 0 , 0 ) &&
           ObjectDelete ( 0 , __FILE__ ));
    
  }
  ~CUSTOM() { Print ( __FUNCSIG__ ); }
};

const CUSTOM InitDeinit;

void OnTick () { Print ( __FUNCSIG__ ); }
void OnInit () { Print ( __FUNCSIG__ ); }
void OnDeinit ( const int ) { Print ( __FUNCSIG__ ); }
void OnChartEvent ( const int id, const long &, const double &, const string & ) { Print ( __FUNCSIG__ + " " + ( string )id) ; }
void OnTimer () { Print ( __FUNCSIG__ ); }
void OnBookEvent ( const string & ) { Print ( __FUNCSIG__ ); }


스크립트

 #include <fxsaber\Expert.mqh>   // https://www.mql5.com/ru/code/19003

void OnStart ()
{
   if ( ObjectCreate ( 0 , __FILE__ , OBJ_CHART , 0 , 0 , 0 ))
  {
     MqlParam Params[ 1 ];
    Params[ 0 ].string_value = "Experts\\Test.ex5" ;

     Print (EXPERT::Run( ObjectGetInteger ( 0 , __FILE__ , OBJPROP_CHART_ID ), Params));
  }
}


결과

Test3 (EURUSD,M1)       true
Test (EURUSD,M1)         void CUSTOM::CUSTOM()
Test (EURUSD,M1)         true
Test (EURUSD,M1)         void OnInit ()
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 1000
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnChartEvent ( const int , const long &, const double &, const string &) 9
Test (EURUSD,M1)         void OnDeinit ( const int )
Test (EURUSD,M1)         void CUSTOM::~CUSTOM()


OBJ_CHART의 Expert Advisors에 대한 결론

  • OnInit, OnDeinit, 전역 생성자/소멸자 및 OnChartEvent가 작동합니다.
  • OnTimer, OnTick 및 OnBookEvent가 작동하지 않습니다.
  • 이벤트 중 CHARTEVENT_CHART_CHANGE 및 사용자 정의 이벤트만 포착합니다.
  • Expert Advisor의 OnChartEvent+EventChartCustom을 통해 OnTimer 및 OnTick에 대해 "이벤트"를 생성할 수 있지만 OnBookEvent는 생성할 수 없습니다.
 
FILE_COMMON이 지정되면 #property tester_file 이 glucotrader 5에서 올바르게 작동하지 않으며 에이전트에서 파일이 열리지 않습니다.
 
Anton Ohmat :
FILE_COMMON이 지정되면 #property tester_file 이 glucotrader 5에서 올바르게 작동하지 않으며 에이전트에서 파일이 열리지 않습니다.

글쎄요, Common 폴더(터미널 및 로컬 에이전트 공통)에서가 아니라 Sandbox에서 파일을 가져옵니다.

 
fxsaber :

글쎄요, Common 폴더(터미널 및 로컬 에이전트 공통)에서가 아니라 Sandbox에서 파일을 가져옵니다.

원격 서버에서 테스트 중입니다. 작동하지 않습니다. 실행은 MT 디렉토리의 로컬 머신에 파일이 있는 경우에만 수행할 수 있으며 COMMON은 최적화로 이동하지 않습니다.


테스터_파일

확장자를 포함한 테스터의 파일 이름으로 큰따옴표로 묶습니다(상수 문자열로). 지정된 파일은 작업을 위해 테스터에게 전송됩니다. 필요한 경우 테스트용 입력 파일을 항상 지정해야 합니다.