표시기 기타 질문 - 페이지 4

 

스위치 연산자를 사용할 수 있습니다.

       switch ( TimeHour ())
        {
         case 0 :
           // Do Something...
             break ;

         case 1 :
           // Do Something...  
             break ;

         case 2 :

             break ;

         case 3 :

             break ;

         case 4 :

             break ;

         case 5 :

             break ;

         case 6 :

             break ;
         // etc...
        }

또는 간단한 double if 문을 사용하십시오.

if ( TimeHour ()> 0 && TimeHour ()< 22 )
{
   // Do Something...
}

시간 시간이 > 0보다 크고 &&가 < 22보다 작은 경우 등

또는 다음을 사용할 수 있습니다.

if ( TimeHour ()>= 0 && TimeHour ()<= 22 )
{
   // Do Something...
}

시간 시간이 > 또는 == 0보다 높지만 && 미만이면 < 또는 == 22 등입니다.

이전 예제 >0은 같기 때문에 0 자체를 제외하는 것과 같을 때 시간을 포함하기 때문에 약간 다릅니다.

 

#Month Lines - 나를 위해 닫혔습니다.

나는 'Strategy Tester' 테스트했고 지금까지 실시간으로 완벽하게 작동합니다 .

귀하의 의견에서 많은 것을 배웠고 이 지표를 매우 좋게 만들었습니다. @ Marco vd Heijden

Mr. Marco Mr. William 에게 특별한 감사를 드립니다.

 

아래 코드는 나에게 잘 작동 하지만 때로는 관련 이 없어 오랜 시간이 걸립니다 (1250) .

EventSetMillisecondTimer ( 1250 );

// which is good?

EventSetTimer ( 1 );

또한 '전환' 기능 을 사용할 수 있습니까?

//--- 2번째 수정

start() 함수 를 사용하고 싶지 않습니다 . 사실 아래와 같이 설정해야 합니다.

EventSetMillisecondTimer ( 10    ); // 1st will read in 10
EventSetMillisecondTimer ( 250   ); // 2nd will read in 250
EventSetMillisecondTimer ( 1250 ); // 3rd will read in 1250

하지만 도움이 필요합니다.

//--- 3번째 수정

switch ( EventSetMillisecondTimer ( 10 ) )
{
     case      1    :   EventSetMillisecondTimer ( 100   );
     case      2    :   EventSetMillisecondTimer ( 250   );
     case      3    :   EventSetMillisecondTimer ( 1250 );
     default      :   EventSetMillisecondTimer ( 10    ); break ;
}   //---switch Close

내가 원하는대로 작동하지 않습니다.

누군가가 내 걱정을 이해한다면 조언이나 도움을 주십시오.

미리 감사드립니다.

 
Max Enrik : start() 함수 를 사용하고 싶지 않습니다 .
  1. 왜 안 돼? 새로운 틱을 얻을 때까지 (시장에서) 아무 것도 변경되지 않았습니다. 타이머는 사용이 제한됩니다.
  2. 새로운 이벤트 처리 기능 - 기능 - 언어 기본 - MQL4 참조 를 사용하여 시작하십시오. 감가 상각으로 시작 20 년 2 월 3 일부터 14 (빌드 600)
 
Max Enrik :

start() 함수 를 사용하고 싶지 않습니다 . 사실 아래와 같이 설정해야 합니다.

EventSetMillisecondTimer ( 10    ); // 1st will read in 10
EventSetMillisecondTimer ( 250   ); // 2nd will read in 250
EventSetMillisecondTimer ( 1250 ); // 3rd will read in 1250

하지만 도움이 필요합니다.

내가 원하는대로 작동하지 않습니다.

누군가 내 걱정을 이해한다면 조언이나 도움을 주십시오.

미리 감사드립니다.


아니요 하나의 타이머와 하나의 타이머만 사용하는 것처럼 작동하지 않습니다.

그러나 간단한 카운터를 사용하여 시간 간격을 분할하거나 연결할 수 있습니다.

int clock;
OnTimer ()
{
  clock++;
  
   switch (clock)
   {
     case 500 :
     //Do something...
     break ;

     case 1000 :
     //Do something...
    clock= 0 ; // reset counter if need be.
     break ;

     // Etc...
   }
}
 
whroeder1 :
  1. 왜 안 돼? 새로운 틱을 얻을 때까지 (시장에서) 아무 것도 변경되지 않았습니다. 타이머는 사용이 제한됩니다.
  2. 새로운 이벤트 처리 기능 - 기능 - 언어 기본 - MQL4 참조 를 사용하여 시작하십시오. 감가 상각으로 시작 20 년 2 월 3 일부터 14 (빌드 600)
귀하의 의견에 감사드립니다.

당신은 'Event Handling Functions'두 번 언급했고 나는 읽었 습니다 . 이 표시기 는 거의 완료되었습니다.

하지만 'EventSetMillisecondTimer( 1250 );' 때로는 '관련 없는' 시간이 오래 걸립니다.


최상의.
 
Marco vd Heijden :

그러나 간단한 카운터를 사용하여 시간 간격을 분할하거나 연결할 수 있습니다.

아래 코드와 같이 시도했습니다.

그 코드가 맞나요?

void OnTimer ()
{
     //---
    _clock++;
     //---
     switch ( _clock )
    {
         case      500 :
             if ( // will be same thing in here? ) )
            {
                ...
                _CreateLines_M5();
            }   //---if Close
         break ;
        
         case      1000 :
             if ( // will be same thing in here? ) )
            {
                ...
                _CreateLines_M5();
            }   //---if Close

        _clock = 0 ;
         break ;
    }   //---switch Close
}

그러나 그것은 나를 위해 작동하지 않습니다.

감사해요.

 
Max Enrik : 아래 코드와 같이 시도했습니다.
void OnTimer ()
{
     //---
    _clock++;
     //---
     switch ( _clock )
    {
         case      500 :
             if ( // will be same thing in here? ) )
            {
                ...
                _CreateLines_M5();
            }   //---if Close
         break ;
        
         case      1000 :
             if ( // will be same thing in here? ) )
            {
                ...
                _CreateLines_M5();
            }   //---if Close

        _clock = 0 ;
         break ;
    }   //---switch Close
}

그러나 그것은 나를 위해 작동하지 않습니다.

  1. 테스터에서 시도하지 않습니까? 백테스트에서 OnTimer() 수행하지 않음(M. Ali) - MQL4 forum Chart Event For MT4 Backtester(Migel) - MQL4 forum
  2. 코드 단순화
    void OnTimer ()
    {
         if (++_clock % 500 == 0 )_CreateLines_M5();
    }

 
whroeder1 :
  1. 코드 단순화
    void OnTimer ()
    {
         if (++_clock % 500 == 0 )_CreateLines_M5();
    }

큰 감사를 드린다!

시도했는데 PERIOD_M5 를 선택해 1분 만에 계속 상쾌 했습니다.

또한 PERIOD_M1 & PERIOD_M5 를 사용해야 하는지 알고 싶습니다. 아래와 같이 사용할 수 있나요?

if (++_clock % 500 == 0 )_CreateLines_M1();
if (++_clock % 500 == 0 )_CreateLines_M5();

또한, 아래 방법이 맞습니까?

if ( ++_clock % 500 == 0 || _dt_Prd_M5 != iTime ( Symbol (), _prd_M5, 0 ) )
{
    _dt_Prd_M5 = iTime ( Symbol (), _prd_M5, 0 );
    _CreateLines_M5();
}

모두 제일 좋다.

 
Max Enrik :

큰 감사를 드린다!

시도했는데 PERIOD_M5 를 선택해 1분 만에 계속 상쾌 했습니다.

또한 PERIOD_M1 & PERIOD_M5 를 사용해야 하는지 알고 싶습니다. 아래와 같이 사용할 수 있나요?

if (++_clock % 500 == 0 )_CreateLines_M1();
if (++_clock % 500 == 0 )_CreateLines_M5();

또한, 아래 방법이 맞습니까?

if ( ++_clock % 500 == 0 || _dt_Prd_M5 != iTime ( Symbol (), _prd_M5, 0 ) )
{
    _dt_Prd_M5 = iTime ( Symbol (), _prd_M5, 0 );
    _CreateLines_M5();
}

모두 제일 좋다.

어떤 노력을 하고 있는지 기술해 주십시오.
사유: