MQL4 EA의 차트에 지표 추가 - 페이지 3

 
Georgiy Liashchenko :
수면이 일했습니다, 감사합니다

저는 Alain의 코드를 사용하고 있으며 매개변수 를 채우고 확인을 클릭하여 표시기를 활성화하라는 클래식 표시기 양식이 표시되고 표시기를 수동으로 첨부하는 것과 유사하다는 의미에서 작동합니다. 필요한 매개변수의 설정까지 전체 작업을 완전히 자동화할 수 있습니까? 감사해요

 
alessandrovb :

저는 Alain의 코드를 사용하고 있으며 매개변수를 채우고 확인을 클릭하여 표시기를 활성화하라는 클래식 표시기 양식이 표시되고 표시기를 수동으로 첨부하는 것과 유사하다는 의미에서 작동합니다. 필요한 매개변수의 설정까지 전체 작업을 완전히 자동화할 수 있습니까? 감사해요

수동으로 하는 것처럼 키 입력을 시뮬레이션하는 코드를 추가 하기만 하면 됩니다.
 
Alain Verleyen :

이 문제가 없습니다(게시한 코드 사용).

hWnd가 0과 다른지 확인하십시오.

수면 값을 50 또는 100으로 높일 수도 있습니다.

여보세요,

많은 도움이되는이 의견, 다른 질문이 필요합니다.

입력 팝업을 무시하고 표시기의 기본값을 사용할 수 있습니까? 코딩은 어떻게?

차트에서 지표를 삭제할 수 있습니까?

 
Alain Verleyen :

감사합니다 이것이 내가 찾고 있는 것입니다. 사용자 지정 표시기 를 추가할 수 있습니다. 한 가지만 더 질문하면 어떻게 언로드할 수 있습니까?

 
Alain Verleyen :

축하합니다. 잘 작동합니다.

 
Alain Verleyen :

이 문제가 없습니다(게시한 코드 사용).

hWnd가 0과 다른지 확인하십시오.

수면 값을 50 또는 100으로 높일 수도 있습니다.


귀하의 코드를 사용하고 있지만 이름에 문제가 있습니다.

2018.01.11 12:06:15.864 'C:\............\MQL4\indicators\MACD èõš p .ex4' 파일을 열 수 없습니다. [123]

2018.01.11 12:04:00.518 'C:\.............\MQL4\indicators\MACD' 파일을 열 수 없습니다. .ex4' [123]

첫 번째 줄은 다음과 같을 때 발생합니다.

   uchar name2[4];

   name2[0]='M'; name2[1]='A'; name2[2]='C'; name2[3]='D';

   // StringToCharArray(IndicatorName,name2,0,StringLen(IndicatorName));

두 번째 줄은 다음 경우에 발생합니다.

   uchar name2[];

   StringToCharArray(IndicatorName,name2,0,StringLen(IndicatorName));


나는 지금 작동하는 첫 번째 코드를 변경했습니다!

   uchar name2[ 5 ];

   name2[0]='M'; name2[1]='A'; name2[2]='C'; name2[3]='D'; name2[4]=0;

   // StringToCharArray(IndicatorName,name2,0,StringLen(IndicatorName));

내 문제는 배열 감지의 끝이라고 생각합니다!
 

여러분, 안녕하세요,

Georgiy Liashchenko에게 감사를 표하고, AutomaticAcceptDefaults ("true"일 때)를 사용하여 차트에 직접 표시기를 추가하는 업그레이드된 버전의 코드를 공유하고 싶습니다 .

 #import "user32.dll"
   int  RegisterWindowMessageW(string MessageName);
   int  PostMessageW(int hwnd,int msg,int wparam,uchar &Name[]);
   int  FindWindowW(string lpszClass,string lpszWindow);
#import

#define VK_RETURN 13 //ENTER key

void StartCustomIndicator( int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults= false )
{
   Sleep ( 100 );
   uchar name2[];
   StringToCharArray (IndicatorName,name2, 0 , StringLen (IndicatorName));
   int MessageNumber=RegisterWindowMessageW( "MetaTrader4_Internal_Message" );
   int r=PostMessageW(hWnd,MessageNumber, 15 ,name2);
   Sleep ( 100 );
   if (AutomaticallyAcceptDefaults) {
       int ind_settings = FindWindowW( NULL , "Custom Indicator - " +IndicatorName);
      PostMessageW(ind_settings, 0x100 ,VK_RETURN,name2);
   }
}

int OnInit ()
{
   int hWnd = WindowHandle( Symbol (), 0 );
   StartCustomIndicator(hWnd, "Indicator_name" );
   return ( INIT_SUCCEEDED );
}

전문가의 지표를 삽입해야 하는 분들에게 조금이나마 도움이 되었으면 합니다.

참고: 저는 사용자 지정 표시기 에서 일하고, 그렇지 않으면 창 이름을 변경합니다.

참고2 : 15자(".ex4" 이전)를 초과하는 표시기를 사용하지 마십시오.

 
Kray :

여러분, 안녕하세요,

Georgiy Liashchenko에게 감사를 표하고, AutomaticAcceptDefaults ("true"일 때)를 사용하여 차트에 직접 표시기를 추가하는 업그레이드된 버전의 코드를 공유하고 싶습니다 .

전문가의 지표를 삽입해야 하는 분들에게 조금이나마 도움이 되었으면 합니다.

참고: 저는 사용자 지정 표시기 에서 일하고, 그렇지 않으면 창 이름을 변경합니다.

참고2 : 15자(".ex4" 이전)를 초과하는 표시기를 사용하지 마십시오.

아주 좋아.


나는 다음을 사용하여 발견했습니다.

 int r=PostMessageW(hWnd,MessageNumber, 13 ,name2);

사용하는 대신:

 int r=PostMessageW(hWnd,MessageNumber, 15 ,name2);

표준 표시기의 이름을 사용하여 표준 표시기를 사용할 수도 있습니다.

 

나는 얻는다

'name2' - parameter conversion not allowed
컴파일하려고하면 오류 메시지가?!

 

Kray :

여러분, 안녕하세요,

Georgiy Liashchenko에게 감사의 인사를 전하고, AutomaticAcceptDefaults ("true"일 때)를 사용하여 차트에 직접 표시기를 추가하는 업그레이드된 버전의 코드를 공유하고 싶습니다 .

......

 if (AutomaticallyAcceptDefaults) {
       int ind_settings = FindWindowW( NULL , "Custom Indicator - " +IndicatorName);
      PostMessageW(ind_settings, 0x100 ,VK_RETURN,name2);


저는 MT4 v4.00 빌드 1090(2017년 5월 19일)을 실행하고 있습니다.

PostMessageW 기능으로 인해 스크립트 내에서 지표를 배치하는 데 사용할 때 MT4 터미널이 충돌합니다.

SendMessageW를 표시기를 배치하는 대안으로 사용했지만 불행히도 이것은 키보드 이벤트를 시뮬레이션하고 Enter 키를 눌러 구성 대화 상자를 닫을 방법이 없음을 의미합니다. 창 프로시저가 메시지를 처리할 때까지 SendMessageW 함수가 반환되지 않기 때문일 수 있습니다. 즉, 대화 상자가 사라질 때까지 키보드 이벤트를 처리할 수 없습니다. 이것은 SendMessageW가 대화 상자가 사라질 때까지 반환되지 않기 때문에 대화 상자가 표시되는 동안 FindWindowW가 작동하지 않음을 의미합니다.

이 모든 것은 나에게 좌절감을 주는 하나의 큰 운동이었습니다. PostMessageW는 MT4의 최신 빌드에서 계속 작동합니까? 프로그래밍 방식으로 표시기의 구성 대화 상자를 닫는 방법을 아는 사람이 있습니까? 나는 두 개의 다른 스레드를 참조하고 권장 사항을 시도했지만 실패했습니다.

https://www.mql5.com/en/forum/155334

https://www.mql5.com/en/forum/115967

누군가 나를 깨우쳐 줄 수 있습니까? PostMessageW가 작동하도록 하거나 다른 방법으로 구성 대화 상자를 닫는 방법이 있습니까?

사유: