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

 
브로커(접미사 추가)에서 기호 이름을 변경할 때 이전 기호(더 이상 존재하지 않으며 새 이름으로 전송해야 하는)가 있는 모든 차트 설정이 손실됩니다! 전문가의 지표와 함께 돌이킬 수 없습니다. 날뛰다.
 

2204년에는 권고자가 있는 프로파일이 권고 없이 로드됩니다.

어드바이저의 느린 로딩도 수정되지 않았습니다. 사실, 이제 터미널이 멈추지 않습니다. 고문이 오랫동안 거기에 없었을뿐입니다.

 
도와주세요. CTRL+C 및 CTRL+V 키 조합을 설정 탭의 비활성 테스터 창으로 보내야 합니다. 이거 검색해서 겨우 찾았음

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

TF를 변경하거나 터미널을 열 때 스크립트를 프로그래밍 방식으로 실행하는 방법을 알려주세요.

이고르 , 2008.11.16 09:28

Ilnur, 오른쪽 스레드에서 "키보드 입력 상태 테이블"을 추가로 업데이트하면 결국 가능할 것입니다.

이것은 MQL에서 시도해야 합니다. 도와주시겠습니까?:

     if ( h ! = NULL )
     {
        HWND child = : : FindWindowEx ( h , NULL , "Edit" , NULL ) ;

        UINT lparam_Ctrl1 = : : MapVirtualKey ( VK_CONTROL , 0 ) < < 16 | 1 ;
        UINT lparam_A1 = : : MapVirtualKey ( ( int ) 'A' , 0 ) < < 16 | 1 ;

        UINT lparam_A2 = 1 < < 31 | 1 < < 30 | : : MapVirtualKey ( ( int ) 'A' , 0 ) < < 16 | 1 ;
        UINT lparam_Ctrl2 = 1 < < 31 | 1 < < 30 | : : MapVirtualKey ( VK_CONTROL , 0 ) < < 16 | 1 ;

        DWORD pid ;
        DWORD tid = GetWindowThreadProcessId ( child , & pid ) ;
        HANDLE hProc = OpenProcess ( PROCESS_QUERY_INFORMATION | SYNCHRONIZE , FALSE , pid ) ;
         //Ctrl + A

        AttachThreadInput ( GetCurrentThreadId ( ) , tid , TRUE ) ;

        LRESULT pl1_Ctrl = : : PostMessage ( child , WM_KEYDOWN , VK_CONTROL , lparam_Ctrl1 ) ;
        WaitForInputIdle ( hProc , INFINITE ) ;

        BYTE state [ 256 ] ;
        GetKeyboardState ( state ) ;
        state [ VK_CONTROL ] = 0x80 ;
        SetKeyboardState ( state ) ;

        LRESULT pl1_A = : : PostMessage ( child , WM_KEYDOWN , ( int ) 'A' , lparam_A1 ) ;
        WaitForInputIdle ( hProc , INFINITE ) ;

        LRESULT pl2_A = : : PostMessage ( child , WM_KEYUP , ( int ) 'A' , lparam_A2 ) ;
        WaitForInputIdle ( hProc , INFINITE ) ;

        LRESULT pl2_Ctrl = : : PostMessage ( child , WM_KEYUP , VK_CONTROL , lparam_Ctrl2 ) ;         
        WaitForInputIdle ( hProc , INFINITE ) ;
/*
        GetKeyboardState(state);
        state[VK_CONTROL] = 0x0;
        SetKeyboardState(state);
*/

        AttachThreadInput ( GetCurrentThreadId ( ) , tid , FALSE ) ;

     }

구현에 실패했습니다. 멀티 테스터에게 매우 필요합니다.

 
fxsaber :
도와주세요. CTRL+C 및 CTRL+V 키 조합을 설정 탭의 비활성 테스터 창으로 보내야 합니다. 이거 검색해서 겨우 찾았음

구현에 실패했습니다. 멀티 테스터에게 매우 필요합니다.

비활성 창에 복사-붙여넣기 명령을 보낼 수 없습니다. 먼저 테스터 창을 열고 설정 탭을 활성화해야 합니다.
 

힌트에 문제가 있습니다. 조언자 파일:

Alt+G는 여기로 보냅니다.


에디터 2200

 
Slava :
비활성 창에 복사-붙여넣기 명령을 보낼 수 없습니다. 먼저 테스터 창을 열고 설정 탭을 활성화해야 합니다.

Tester를 자동화하는 모든 작업은 PostMessage를 통해 수행할 수 있으며 이는 매우 편리합니다. 왜냐하면 테스터 등을 접을 수 있습니다.

그러나 설정을 가져오고 가져오는 것은 이러한 편의에 대한 예외입니다. 설정 작업을 자동화하는 데 도움이 되는 일종의 메커니즘을 구성할 수 있습니까?

 

코드에서 테스터나 옵티마이저를 중지 하는 방법이 있습니까?

예를 들어 전문가는 외부 파일을 업로드해야 합니다. 파일을 찾을 수 없으면 파일을 잊어버렸다는 메시지를 표시하고 테스터 또는 옵티마이저의 유휴 실행을 중지합니다.

 
Igor Makanu : MT4 빌드 1220에서 이것은 MT4의 마지막 업데이트일 가능성이 높습니다. 관리자는 4/5 터미널의 ME가 동일하다고 썼습니다. 즉, 더 이상 새로운 32비트 ME가 없을 것입니다.

그리고 새로운 버그가 있으면 그대로 유지됩니까?

 
. ... Rick D. ... . :

그리고 새로운 버그가 있으면 그대로 유지됩니까?

버그를 수정하는 것과 개선하는 것은 별개입니다.
 
. ... Rick D. ... . :

코드에서 테스터나 옵티마이저를 중지하는 방법이 있습니까?

예를 들어 전문가는 외부 파일을 업로드해야 합니다. 파일을 찾을 수 없으면 파일을 잊어버렸다는 메시지를 표시하고 테스터 또는 옵티마이저의 유휴 실행을 중지합니다.

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

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2019.11.06 16:57

때로는 유전자 최적화를 통해 처음 몇 천 번의 패스만으로도 결과를 어느 정도 이해하기에 충분합니다.

많은 최적화를 자동으로 실행할 때 모든 것이 더 빨리 해결되기를 원합니다. 따라서 최적화 인터럽트 메커니즘이 필요합니다.

 #include <fxsaber\MultiTester\MTTester.mqh>   // https://www.mql5.com/ru/code/26132

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
   return (!MTTESTER::IsReady() && MTTESTER::ClickStart( false ));
}


애플리케이션.

 // Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20 ; // Через сколько проходов закончить
input int Range = 0 ; // 0..10000

double OnTester ()
{
   int Data[];
  
   return ( FrameAdd ( NULL , 0 , 0 , Data)); // Сгенерировали TesterPass
}

void OnTesterPass ()
{
   static int Amount = 0 ;
  
   ulong Pass;
   string Name;
   long ID;
   double Value;
   int Data[];

   while ( FrameNext (Pass, Name, ID, Value, Data))
     if (++Amount > inAmountPasses)
    {
       OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
       break ;
    }
}