버튼 및 마우스 클릭을 가로채는 자동화. - 페이지 4

 
HIDDEN >> :

전략 테스터의 프로그램 관리에 관심이 있습니다.

1. 전문가로부터 열기(코드 발견)

2. 시작 버튼을 누릅니다.

ID. 일반적으로 이 창의 모든 코드가 바람직합니다. 버튼 등

당신은 쉽게 내리고 싶어. :))

여기에는 복잡한 것들이 많이 있습니다.


1. 테스터 창을 엽니다.

2. 어드바이저 목록을 열고 목록에서 지정된 어드바이저를 이름으로 선택합니다.

3. 기호 목록을 열고 이름으로 목록에서 주어진 기호를 선택합니다(목록에서 한 위치를 미리 남겨두고 건너뛸 수 있음)

4. 방법 목록을 열고 이름 또는 번호로 목록에서 주어진 방법을 선택하십시오

5. 기간 목록을 열고 이름이나 번호로 목록에서 주어진 기간을 선택하십시오

6. "사용일자" 체크박스 상태 체크, 체크박스 체크

7. "최적화" 확인란의 상태를 확인하고 확인란을 선택합니다.

8. "시각화" 확인란의 상태를 확인하고 선택을 취소합니다(선택 사항).

9. "시작" 창에 지정된 날짜를 입력합니다(가능한 경우).

10. "To" 창에 지정된 날짜를 입력합니다(가능한 경우).

11. "시작" 버튼을 누릅니다.

12. 최적화 완료 신호를 수신합니다. 즉, 버튼에 "시작"이라는 텍스트를 반환합니다(타이머로 완료할 수 있음)

13. 테스터 창 닫기


아직 빼먹은게 없다면..

 
granit77 >> :

당신은 쉽게 내리고 싶어. :))

여기에는 복잡한 것들이 많이 있습니다.


1. 테스터 창을 엽니다.

2. 어드바이저 목록을 열고 목록에서 지정된 어드바이저를 이름으로 선택합니다.

3. 기호 목록을 열고 이름으로 목록에서 주어진 기호를 선택합니다(목록에서 한 위치를 미리 남겨두고 건너뛸 수 있음)

4. 방법 목록을 열고 목록에서 지정된 방법을 이름 또는 번호로 선택하십시오.

5. 기간 목록을 열고 이름이나 번호로 목록에서 주어진 기간을 선택하십시오

6. "사용일자" 체크박스 상태 체크, 체크박스 체크

7. "최적화" 확인란의 상태를 확인하고 확인란을 선택합니다.

8. "시각화" 확인란의 상태를 확인하고 선택을 취소합니다(선택 사항).

9. "시작" 창에 지정된 날짜를 입력합니다(가능한 경우).

10. "To" 창에 지정된 날짜를 입력합니다(가능한 경우).

11. "시작" 버튼을 누릅니다.

12. 최적화 완료 신호를 수신합니다. 즉, 버튼에 "시작"이라는 텍스트를 반환합니다(타이머로 완료할 수 있음)

13. 테스터 창 닫기


아직 빼먹은게 없다면..

테스터의 폴더에 lastparameters.ini 파일이 있어 Expert Advisor에서 준비하고 테스터를 저장하고 열어서 시작 버튼을 누르는 것을 방지합니다. 포인트의 절반이 이미 누락된 것으로 나타났습니다.

 

맞아요, 깜빡했어요.

그와 함께 일했다면 목록을 가늘게 하고 "시작"을 누르는 것만으로도 충분할까요?

 
granit77 >> :

맞아요, 깜빡했어요.

그와 함께 일했다면 목록을 가늘게 하고 "시작"을 누르는 것만으로도 충분할까요?

최적화=0 // 최적화 켜짐 그리고 떨어져
유전적=1 //유전학
피트니스=0
method=0 // 테스트 방법
use_date=0 // 날짜별
from=1226620800 // 1970년 이후의 시작 날짜(초)
to=1226620800 // 종료일


전문가도 마찬가지지만 수동으로 1회 테스트 및 최적화를 수행한 후 매개변수를 저장하고 원하는 대로 변경합니다. 아직 시작 버튼을 눌러야 합니다. 오, 어떻게 해야 합니까 ....


차트에서 거래하는 Expert Advisor에 대한 최적화인 경우 F6 코드를 클릭하면 Expert Advisor와 통화 쌍이 그에 따라 자동으로 선택됩니다. 저것들. 몇 점이 더 사라졌습니다.

 
HIDDEN >> :

아직 시작 버튼을 눌러야 합니다. 오, 어떻게 해야 합니까 ....

나는 특히 나 자신을 아첨하지 않습니다. 주기적 최적화를 사용한 수동 실행은 아직 명확한 긍정적인 결과를 나타내지 않았습니다.

또한 최상의 매개변수 세트를 선택하는 문제도 제기되고 있으며 모두가 새로운 매개변수를 제시합니다.

Mathemat는 기사를 약속했습니다. 아마도 조금 정리될 것입니다.

그러나 이 도구를 사용하면 가능성이 10배 정도 증가하고 돌파구가 될 것입니다.

 

이웃 지점에서 Erics가 제안합니다. .


버튼 코드는 Spy++(컨트롤 ID)에서 찾습니다.

버튼 핸들을 얻는 데 사용됩니다.

hButtonStart = GetDlgItem(hTester, 0x40A);



나는 지금 일어나서 나사를 조이는 방법을 알아낼 것입니다.

 

전략 테스터 창에서 작업을 수행하기 전에 먼저 MetaTrader의 창 트리가 어떻게 배열되어 있는지 이해하고 두 번째로 다음을 결정해야 합니다.
시스템 핸들입니다. 그런 다음 GetDlgItem(int hDlg,int nIDDlgItem) 함수 를 사용 하여 필요한 컨트롤의 ID를 가져올 수 있습니다.


아래 그림은 Spy++ 프로그램에서 MetaTrader 터미널 창 트리의 일부를 보여줍니다. 루트는 빨간색 마커로 표시됩니다. 노란색 - 트리에서 "터미널" 창의 위치 등
따라서 "시작" 버튼의 시스템 식별자(그림에서 파란색 마커로 표시)를 얻으려면 상위 모든 단계를 순차적으로 거쳐야 합니다.
수준. 명확성을 위해 각 레벨은 색상으로 표시됩니다.




다음은 "시작" 버튼 핸들을 가져오기 위한 MQL 코드의 예입니다.

 #include <WinUser32.mqh>

#import "user32.dll"
   int GetAncestor ( int hWnd , int gaFlags ) ;
   int GetDlgItem ( int hDlg , int nIDDlgItem ) ;
#import

void start ( )
{
   int hMetaTrader , hTerminal , hTester , hButtonStart ;
   
   hMetaTrader = GetAncestor ( WindowHandle ( Symbol ( ) , Period ( ) ) , 2 ) ; //дескриптор основного окна терминала
	
   hTerminal = GetDlgItem ( hMetaTrader , 0xE81E ) ;
   hTester = GetDlgItem ( hTerminal , 0x53 ) ;
   hButtonStart = GetDlgItem ( GetDlgItem ( hTester , 0x81BF ) , 0x40A ) ;  //дескриптор кнопки "Старт"
}

핸들을 정의하기 위해 GetDlgItem() 함수의 두 번째 매개 변수는 창 구성 요소의 컨트롤 ID를 전달하는 것입니다. 메뉴 항목을 호출하여 결정할 수 있습니다.
"속성..." 마우스 오른쪽 버튼으로. 예를 들어 아래 그림에서 "터미널" 창( 0xE81E )의 제어 ID는 빨간색 마커로 표시됩니다.


 
Ilnur >> :

전략 테스터 창에서 작업을 수행하기 전에 먼저 MetaTrader의 창 트리가 어떻게 배열되어 있는지 이해하고 두 번째로 다음을 결정해야 합니다.


과학에 감사드립니다. 시작 버튼과 MetaTrader 4라는 제어판의 기타 필요한 버튼을 성공적으로 눌렀습니다.

 

어 .... 생각났다.


미국인들은 소련 잠수함에 관광객을 보냈습니다. 그는 첫날에 술에 취했다. 아침에 그는 일어나서 봅니다. 지휘봉을 든 선장이 선원들을 뒤쫓으며 소리칩니다. "누가 빨간 버튼을 눌렀습니까? 누가 빨간 버튼을 눌렀습니까?" 미국인은 그를 꾸짖습니다.
- 알다시피, 여기 미국의 선장은 그렇게 행동하지 않습니다!
- 더 이상 당신의 미국은 없습니다! 누가 빨간 버튼을 눌렀어?!

 
HIDDEN писал(а) >>

어 .... 생각났다.

미국인들은 소련 잠수함에 관광객을 보냈습니다. 그는 첫날에 술에 취했다. 아침에 그는 일어나서 봅니다. 지휘봉을 든 선장이 선원들을 뒤쫓으며 소리칩니다. "누가 빨간 버튼을 눌렀습니까? 누가 빨간 버튼을 눌렀습니까?" 미국인은 그를 꾸짖습니다.
- 알다시피, 여기 미국의 선장은 그렇게 행동하지 않습니다!
- 더 이상 당신의 미국은 없습니다! 누가 빨간 버튼을 눌렀어?!

터미널이 좋았어요 :-)))