초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1259

 

안녕하세요.

MT5의 테스터에 대한 몇 가지 질문:

1) MT5에서는 EA의 시각적 테스트 모드에서 iCustom을 통해 EA 코드에서 계산된 모든 지표가 차트 자체에 표시됩니다. 어떻게 든 비활성화 / 구성되어 있습니까?

2) "차트, 표시기 및 거래 표시가 있는 시각적 모드" 확인란이 활성화된 상태에서 테스터에서 단일 실행을 수행한 다음 (시각화 없이) 확인란을 끈 상태에서 동일한 실행을 수행합니다. 동시에, 첫 번째 경우에는 균형 그래프가 매우 정상적으로 그려지고 두 번째 경우에는 여러 셀에 대한 직선일뿐입니다. 무엇으로 연결할 수 있습니까?

 
satorifx :

안녕하세요.

MT5의 테스터에 대한 몇 가지 질문:

1) MT5에서는 EA의 시각적 테스트 모드에서 iCustom을 통해 EA 코드에서 계산된 모든 지표가 차트 자체에 표시됩니다. 어떻게 든 비활성화 / 구성되어 있습니까?


1. TesterHideIndicators() .

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
그래픽 개체 삭제와 그래픽 개체 이름 변경을 구별하는 방법. 두 경우 모두 삭제 이벤트가 생성됩니다. 하나를 다른 것과 구별하는 방법?
 
leonerd :
그래픽 개체 삭제와 그래픽 개체 이름 변경을 구별하는 방법. 두 경우 모두 삭제 이벤트가 생성됩니다. 하나를 다른 것과 구별하는 방법?

안 돼요. 이름 바꾸기는 삭제하고 새로 만드는 것입니다. 여기서도 제거 후 생성을 잡으려고 합니다.

 
이 주제와 관련이 없는 댓글은 " MQL4 MT4 MetaTrader 4 초보자의 질문 "으로 이동되었습니다.
 

임의의 6자리 숫자를 얻으려면 무엇을 등록해야 하는지 알려주세요.

 int Random() {
 int r= MathRand (); // 100000 -> 999999
   return (r);
 }
 
Vitaly Muzichenko :

임의의 6자리 숫자를 얻으려면 무엇을 등록해야 하는지 알려주세요.

이 솔루션을 찾았습니다.

 int Random( int min, int max) {
   int v= 0 ;
   MathSrand ( GetTickCount ());
   while ( true ) {
      v= MathRand ()*2* MathRand ();
       if (v>=min && v<=max)
         break ;
     }
   return (v);
  }
 
Vitaly Muzichenko :

이 솔루션을 찾았습니다.

Vitaly, 이것은 최선의 선택이 아닙니다.

첫째, 이 경우 do while 루프를 사용하는 것이 좋습니다.

둘째, 제 생각에는 곱할 때보다 거듭제곱할 때 6자리 이상의 숫자를 얻는 것이 더 안정적입니다. 그러나 이 경우 INF를 얻을 수 있습니다. 그러나 학위의 값을 제한 할 수 있습니다 ... 제 예에서 학위는 16을 넘지 않습니다.

 /********************Script program start function*******************/
void OnStart ()
 {
   double dr = 0 ,
         df = 0 ;
   srand ( GetTickCount ());
   do
   {
    dr = fabs ( rand ());
    df = fabs ( rand ());
   }
   while ((dr == 1 || df == 1 ) && ! IsStopped ());
   double dp = pow (dr, fmod (df, 16 ));
   Print ( DoubleToString ( fmod (dp, 1000000 ), 8 ));
 } /*******************************************************************/

그리고 나눗셈의 나머지를 취하여 6자리 숫자를 얻습니다.

 
Alexey Viktorov :

Vitaly, 이것은 최선의 선택이 아닙니다.

첫째, 이 경우 do while 루프를 사용하는 것이 좋습니다.

둘째, 제 생각에는 곱할 때보다 거듭제곱할 때 6자리 이상의 숫자를 얻는 것이 더 안정적입니다. 그러나 이 경우 INF를 얻을 수 있습니다. 그러나 학위의 값을 제한 할 수 있습니다 ... 제 예에서 학위는 16을 넘지 않습니다.

그리고 나눗셈의 나머지를 취하여 6자리 숫자를 얻습니다.

덕분에 코드의 일부를 변경했습니다.

 
Vitaly Muzichenko :

덕분에 코드의 일부를 변경했습니다.

그리고 그 결과는 무엇이었습니까? 나는 무오하다고 주장하지 않습니다 ...

사유: