찻주전자의 질문 - 페이지 7

 
kPVT :

사건을 처리하려고 노력하는 전문가가 있습니다.

액션에 해당하지 않는 이벤트를 받습니다.

차트 클릭과 버튼 누름과 정확히 일치

예를 들어 차트가 이동할 때 생성되는 논쟁의 여지가 있는 이벤트 ID=9(CHARTEVENT_CUSTOM)이고 스트림에 약 10개의 동일한 이벤트가 있습니다 .

CHARTEVENT_OBJECT_ENDEDIT 이벤트를 확인하지 않았습니다.

나머지는 명확하지 않습니다. 설명이 이벤트 번호와 일치하지 않거나, 수동으로 개체를 생성할 때 개체 생성과 같은 이벤트가 잘못 생성됩니다.

일반적으로 도움을 요청합니다.

다음과 같이 더 좋습니다.

 //+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,         // идентификатор события  
                   const long & lparam,   // параметр события типа long
                   const double & dparam, // параметр события типа double
                   const string & sparam) // параметр события типа string
  {
   string str_id= "" ;
   switch (id)
     {
       case CHARTEVENT_KEYDOWN :          str_id= "KEYDOWN" ;         break ;
       case CHARTEVENT_OBJECT_CREATE:  str_id= "OBJECT_CREATE" ;   break ;
       case CHARTEVENT_OBJECT_CHANGE:  str_id= "OBJECT_CHANGE" ;   break ;
       case CHARTEVENT_OBJECT_DELETE:  str_id= "OBJECT_DELETE" ;   break ;
       case CHARTEVENT_CLICK :            str_id= "CLICK" ;           break ;
       case CHARTEVENT_OBJECT_CLICK :      str_id= "OBJECT_CLICK" ;   break ;
       case CHARTEVENT_OBJECT_DRAG :       str_id= "OBJECT_DRAG" ;     break ;
       case CHARTEVENT_OBJECT_ENDEDIT :    str_id= "OBJECT_ENDEDIT" ; break ;
       case CHARTEVENT_CHART_CHANGE :      str_id= "CHART_CHANGE" ;   break ;
       default :
         if (id> CHARTEVENT_CUSTOM )       str_id= "CUSTOM+" + IntegerToString (id- CHARTEVENT_CUSTOM );
         else                          str_id= "UNKNOWN" ;
     }
//--- для отладки
   printf ( "ChartEvent :id=%s, l=%d d=%f s=%s" ,str_id,lparam,dparam,sparam);
//---
   ExtExpertPrg.ChartEvent(id,lparam,dparam,sparam);
  }
 

제가 뭔가 잘못하고 있는건 확실하지만 제가 왜 오해를 했는지 좀 더 자세히 설명하려고 합니다.

AlexSTAL :

처음에는 이미 할당된 숫자 상수 CHARTEVENT_XXXXXXXX에 숫자 상수를 할당합니다...

CHARTEVENT_XXXXXXX 상수의 숫자 값은 어디에서 확인할 수 있습니까?

나는 그것을 찾지 못했기 때문에 실험을 통해 CHARTEVENT_KEYDOWN = 0CHARTEVENT_CLICK = 4임을 알게 되었으며 , 이는 도움말에서 이러한 상수가 설명된 순서에 해당합니다.

나머지 이벤트에 각각 숫자를 할당했는데 이벤트[10] 배열이 이렇게 되었습니다.

로쉬 :

불행히도 귀하의 질문은 명확하지 않습니다. 정확히 작동하지 않는 것은 무엇입니까?

내 이벤트 번호 매기기 및 이전 게시물의 EA 사용을 기반으로:

예를 들어 추세선 -> 이벤트 CHARTEVENT_OBJECT_CHANGE 그립니다.

이 줄을 이동 -> 이벤트도 CHARTEVENT_OBJECT_CHANGE ,

메뉴 -> 2개의 이벤트 CHARTEVENT_CHART_CHANGE CHARTEVENT_CUSTOM 을 통해 속성을 변경합니다.

Del -> event only CHARTEVENT_KEYDOWN 을 눌러 삭제합니다 (이벤트 번호 지정이 올바르지 않은 경우 삭제 및 버튼 누름의 2개의 이벤트가 여전히 있어야 함).

이 모든 것은 제 번호를 기준으로 합니다.

더 나아가...

나는 삼촌 EA 를 사용합니다 :

추세선 그리기 -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 추세선 40716

이 줄 이동 -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 추세선 40716

메뉴를 통해 속성 변경 -> ChartEvent :id=OBJECT_CHANGE, l=0 d=0.000000 s=H1 추세선 40716 및 ChartEvent :id=CHART_CHANGE, l=0 d=0.000000 s=

Del -> ChartEvent :id=KEYDOWN, l=46 d=0.000000 s=를 눌러 삭제하십시오.

상황이 정리되지 않았습니다.

만일을 대비하여:

MT5 64x - 빌드 458.

시스템 - W7 64x 홈 확장.

응답해주셔서 감사합니다))




Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
kPVT :

제가 뭔가 잘못하고 있는건 확실하지만 제가 왜 오해를 했는지 좀 더 자세히 설명하려고 합니다.

CHARTEVENT_XXXXXXX 상수의 숫자 값은 어디에서 확인할 수 있습니까?

나는 그것을 찾지 못했기 때문에 실험을 통해 CHARTEVENT_KEYDOWN = 0CHARTEVENT_CLICK = 4임을 알게 되었으며 , 이는 도움말에서 이러한 상수가 설명된 순서에 해당합니다.

나머지 이벤트에 각각 숫자를 할당했는데 이벤트[10] 배열이 이렇게 되었습니다.

이것은 어떤 경우에도 해서는 안됩니다!

숫자 값은 개발자가 할당하며 언제든지 변경할 수 있습니다.

문자 상수만 사용할 수 있습니다.

--------------

uncleVic 은 올바른 사용법의 예를 제공했습니다(글쎄, 또는 도움말에서 내 부분)

--------------

그럼 뭐해? 숫자 표현이 필요한 이유는 무엇입니까?

 
AlexSTAL :

이것은 어떤 경우에도 해서는 안됩니다!

숫자 값은 개발자가 할당하며 언제든지 변경할 수 있습니다.

문자 상수만 사용할 수 있습니다.

확인. 나는 이것이 불가능하다는 데 동의합니다.

내 자위는 잊어 버려).

더 가자..

알렉스스탈 :

uncleVic 은 올바른 사용법의 예를 제공했습니다(글쎄, 또는 도움말에서 내 부분)

위에서 쓴 것처럼 uncleVic 예제를 사용하여 액션에 해당하지 않는 이벤트도 얻습니다.

kPVT :

추세선 그리기 -> ChartEvent :id=OBJECT_DRAG, l=0 d=0.000000 s=H1 추세선 40716 대신 CHARTEVENT_OBJECT_CREATE .

.....

Del -> ChartEvent :id=KEYDOWN, l=46 d=0.000000 s= CHARTEVENT_OBJECT_DELETE 대신 CHARTEVENT_KEYDOWN을 눌러 삭제합니다.

알렉스스탈 :

그럼 뭐해? 숫자 표현이 필요한 이유는 무엇입니까?

설명하기에는 너무 길지만 중요하지 않습니다. 내 번호 매기기는 잊어 버리자.

가장 중요한 것은 이벤트를 파악하려고 하지만 uncleVic 예제를 사용해도 생성된 이벤트와 취한 조치 간의 불일치를 이해하지 못한다는 것입니다.

 
kPVT :

확인. 나는 이것이 불가능하다는 데 동의합니다.

내 자위는 잊어 버려).

더 가자..

위에서 쓴 것처럼 uncleVic 예제를 사용하여 액션에 해당하지 않는 이벤트도 얻습니다.

kPVT :


초기화에 추가:

   ChartSetInteger ( 0 , CHART_EVENT_OBJECT_CREATE, true );
   ChartSetInteger ( 0 , CHART_EVENT_OBJECT_DELETE, true );

모든 것이 최고입니다.

Создание:
DS       0        _err (EURUSD,M30)       17 : 13 : 18         ChartEvent :id=OBJECT_CREATE, l= 0 d= 0.000000 s=M30 Horizontal Line 58241
DG       0        _err (EURUSD,M30)       17 : 13 : 18         ChartEvent :id=OBJECT_DRAG, l= 0 d= 0.000000 s=M30 Horizontal Line 58241
Удаление кл. Del:
EH       0        _err (EURUSD,M30)       17 : 13 : 21         ChartEvent :id=OBJECT_DELETE, l= 0 d= 0.000000 s=M30 Horizontal Line 58241
QD       0        _err (EURUSD,M30)       17 : 13 : 21         ChartEvent :id=KEYDOWN, l= 46 d= 0.000000 s=
 

Alex가 해결해 주셔서 감사합니다.

AlexSTAL :

초기화에 추가:

....

전문가에게 블록을 추가했습니다.

 void OnInit ()
{
 ChartSetInteger ( 0 , CHART_EVENT_OBJECT_CREATE, true );
 ChartSetInteger ( 0 , CHART_EVENT_OBJECT_DELETE, true );
}

모든 것이 제자리에 떨어졌습니다.

나는 도움말을 보기 시작했는데, 나머지는 모두 올바르게 하기 위해 이 두 이벤트를 "초기화"해야 한다는 내용이 어디에도 기록되어 있지 않습니다.

나는 그것을 주석 처리했고 작동합니다.

Expert/Indicator에 OnInit 블록이 없으면 비어 있어도 이벤트에 혼동이 있는 것으로 판명되었습니다.

이것은 아마도 의도한 방식일 수 있지만 mql5로 작성하는 사람들은 그것에 대해 알아야 합니다.

 
마법사에서 전문가를 생성했는데 테스터가 OnInit 치명적인 오류로 인해 Core 1 테스터가 중지됨 오류를 표시하는 동안 누구든지 이를 경험했습니까? 어떻게 해결되나요? 결국, 마법사, 좋아, 내가 거기에서 뭔가를 엉망으로 만들 것입니다 ...
 
Europa :
마법사에서 전문가를 생성했는데 테스터가 OnInit 치명적 오류로 인해 Core 1 테스터가 중지됨 오류를 표시하는 동안 누구든지 이를 경험했습니까? 어떻게 해결되나요? 결국, 마법사, 좋아, 내가 거기에서 뭔가를 엉망으로 만들 것입니다 ...
받은 소스를 첨부합니다. 및 테스트 매개변수.
 
uncleVic :
받은 소스를 첨부합니다. 및 테스트 매개변수.
파일:
TheFirst.mq5  7 kb
 
Europa :

재생산하지 않았습니다.

더 많은 테스트 매개변수를 요청했습니다. 필요:

그리고 MT5의 버전과 비트.