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

 
Igor Makanu :

이해할 수 있는, 즉 터미널 간 데이터 교환의 오래된 문제 해결

아니요. Expert Advisor가 실행되는 테스터의 데이터를 가져와야 합니다. 90%의 경우에는 할 수 있습니다.

 
fxsaber :

에이전트에서 실행하기 위해 전송된 터미널의 핸들을 가져올 수 있으려면 에이전트에서 실행되는 Expert Advisor가 필요합니다.

에이전트에 대해 말하는 것이 아닙니다. 확인하지 않았지만 예상대로 PID를 통해 터미널 핸들을 얻을 수 있습니다.

 #define   READ_CONTROL   0x00020000
#define   bInheritHandle true

#include <WinAPI\processthreadsapi.mqh>
int OnInit ()
  {
   uint process_id = GetCurrentProcessId();
   Print ( "process_id = " ,process_id);
   HANDLE handle = OpenProcess(READ_CONTROL,bInheritHandle,process_id);	// https://docs.microsoft.com/ru-ru/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess?redirectedfrom=MSDN
   Print ( "handle = " ,handle);
   return ( INIT_SUCCEEDED );
  }

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) 프로세스 ID = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) 핸들 = 2276

작업 관리자의 PID가 동일한지 확인했습니다.


 
Igor Makanu :

에이전트에 대해 말하는 것이 아닙니다. 확인하지 않았지만 예상대로 PID를 통해 터미널 핸들을 얻을 수 있습니다.

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) 프로세스 ID = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) 핸들 = 2276

작업 관리자의 PID가 동일한지 확인했습니다.

이러한 코드는 서비스에 적합하지만 에이전트의 Expert Advisor에는 적합하지 않습니다.

 
Igor Makanu :

에이전트에 대해 말하는 것이 아닙니다. 확인하지 않았지만 예상대로 PID를 통해 터미널 핸들을 얻을 수 있습니다.

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) 프로세스 ID = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) 핸들 = 2276

작업 관리자의 PID가 동일한지 확인했습니다.

문제를 해결했습니다 . 감사합니다.

 
알려주세요, metatrader5는 MQL5/logs 폴더에 지난 7일 동안의 로그를 저장합니다. 설정 어딘가에서 바뀌나요 아니면 터미널의 버그인가요?
 

여기에 2가지 제안 사항이 있습니다.

1- 최적화를 중지하고 앞으로 최적화로 전환하는 옵션(버튼)을 만듭니다.

내 말은, 그것은 빠른 운율이어야 했다. 하지만 그는 카운트하고 카운트... 그리고 스트라이커도 나에게 흥미 롭습니다. 나는 기다려야합니다.

때로는 더 자세히, 더 길게 계산해야 하고 때로는 간략하게 계산해야 합니다.

최적화를 확장하고 최적화를 중지하고 앞으로로 전환하려면 2개의 버튼이 필요합니다.

2- 도구 모음이 다시 2단계로 축소되었습니다! 내 딸은 어렸을 때 "롤 앤 롤 - 스카티나!"라고 말한 적이 있습니다. ...)

그리고 여기에서 모든 것이 롤다운되고 패널이 두 번째 행으로 롤다운됩니다. 한 줄로 다시 옮기는 데 이미 지쳤습니다. 이미 수정! 얼마나 많은 공간이 낭비되고 있습니까!

 

다음 버그를 확인하십시오. 응용 프로그램에는 capslock 키의 상태를 읽는 유일한 작업인 특별한 미니멀리스트 표시기가 있습니다. 로그와 댓글에 표시됩니다.

동작 순서는 이렇습니다.

  1. 지표를 컴파일하고 차트에 배치하고 0이 표시되는지 확인합니다("capslock"이 활성화되지 않음).
  2. ME로 전환하고 CapsLock을 켜고 다시 컴파일합니다. 우리는 터미널로 돌아갑니다. 로그에 따르면 이전 표시기가 언로드되고 새 표시기가 로드되었는지 확인합니다. 그러나 "capslock" 상태는 여전히 0으로 반환됩니다.
  3. 차트에서 인디케이터를 제거했다가 다시 걸면 캡스락이 정상적으로 인식되며 1이 표시됩니다.

기적이란 무엇입니까? 컴파일 후 재부팅하면 일부 환경 변수가 지워지지 않거나 다른 것이 있습니까?

파일:
CapsLock.mq5  1 kb
 
Stanislav Korotky :

다음 버그를 확인하십시오. 응용 프로그램에는 capslock 키의 상태를 읽는 유일한 작업인 특별한 미니멀리스트 표시기가 있습니다. 로그와 댓글에 표시됩니다.

동작 순서는 이렇습니다.

  1. 지표를 컴파일하고 차트에 배치하고 0이 표시되는지 확인합니다("capslock"이 활성화되지 않음).
  2. ME로 전환하고 CapsLock을 켜고 다시 컴파일합니다. 우리는 터미널로 돌아갑니다. 로그에 따르면 이전 표시기가 언로드되고 새 표시기가 로드되었는지 확인합니다. 그러나 "capslock" 상태는 여전히 0으로 반환됩니다.
  3. 차트에서 인디케이터를 제거했다가 다시 걸면 캡스락이 정상적으로 인식되며 1이 표시됩니다.

기적이란 무엇입니까? 컴파일 후 재부팅하면 일부 환경 변수가 지워지지 않거나 다른 것이 있습니까?

그렇다면?

 void OnDeinit ( const int reason)
{
   if (ind != INVALID_HANDLE )
  {
     IndicatorRelease (ind);
  }
}
 
Vitaly Muzichenko :

그렇다면?

여기에 대해 무엇입니까? MQL 코드에서 지표를 생성 하지 않습니다. 차트에 수동으로 매달립니다. 개발 과정에서 프로그램을 자주 재컴파일할 때 저장된 컨텍스트/시스템 환경과의 오해로 인해 기능을 잃지 않도록 해야 합니다. 이제 키보드의 현재 상태를 선택하도록 다시 컴파일한 후 칠면조를 제거하고 다시 연결해야 합니다.

 
Stanislav Korotky :

컴파일 후 재부팅하면 일부 환경 변수가 지워지지 않거나 다른 것이 있습니까?

예, 이것은 버그입니다. 지표 또는 고문 - 그것은 중요하지 않습니다.