새 막대를 감지하는 방법 - 페이지 3

 
Stephen Njuki :
나는 이것을 사용...

고마워요

 
Stephen Njuki :
나는 이것을 사용...

시간을 변수로 사용하는 데 문제가 많았고 변수 막대를 사용할 방법을 찾고 있었습니다.


고마워, 일해!


 
Mladen Rakic :

단순히 다음과 같은 것을 사용하지 않는 이유는 무엇입니까?

   static datetime prevTime= 0 ;
           datetime lastTime[ 1 ];
           if ( CopyTime ( _Symbol , _Period , 0 , 1 ,lastTime)== 1 && prevTime!=lastTime[ 0 ])
          {
               prevTime=lastTime[ 0 ];
              
               // ...
          }
모든 경우에 작동해야 합니다(CopyTime()에 오류가 있는 경우에도 트랩을 방지함)

고마워 친구!

 
Mladen Rakic :

단순히 다음과 같은 것을 사용하지 않는 이유는 무엇입니까?

   static datetime prevTime= 0 ;
           datetime lastTime[ 1 ];
           if ( CopyTime ( _Symbol , _Period , 0 , 1 ,lastTime)== 1 && prevTime!=lastTime[ 0 ])
          {
               prevTime=lastTime[ 0 ];
              
               // ...
          }
모든 경우에 작동해야 합니다(CopyTime()에 오류가 있는 경우에도 트랩을 방지함)

완벽한.

나는 같은 것을 찾고 있었다.


하나님의 축복이 있기를

 

Leonard님, 정말 도움이 되었습니다.

호출 후 빠른 절전(10000)을 추가한 후 iHigh, iLow 및 iClose 직접 작업 시 몇 가지 문제가 발견되었습니다.

 void OnTick ()
   {
     if (isNewBar())
       {
       Sleep ( 10000 );
       ...
       }
   }

bool isNewBar()
   {
   
     static datetime prevTime = 0 ;
     datetime lastTime[ 1 ];
     if ( CopyTime ( Symbol (), Period (), 0 , 1 , lastTime) == 1 && prevTime != lastTime[ 0 ])
       {
        prevTime = lastTime[ 0 ];
         return ( true );
       }
     return ( false );
   }
 

이 기능을 작성했으며 일반적으로 백만 번 호출하고 싶다면 실제 차이를 만들 수 있는 최적화 분위기에서 사용합니다. 나는 이것이 당신이 새로운 바를 얻을 수 있을 만큼 빠르며 깨끗해 보인다고 생각합니다.

 inline bool IsNewBar( ENUM_TIMEFRAMES timeframe = PERIOD_CURRENT )
{
   static datetime lastBar;
   return lastBar != (lastBar = iTime ( _Symbol , timeframe, 0 ));
}
 
Null_Pointer :

이 기능을 작성했으며 일반적으로 백만 번 호출하고 싶다면 실제 차이를 만들 수 있는 최적화 분위기에서 사용합니다. 나는 이것이 당신이 새로운 바를 얻을 수 있을 만큼 빠르며 깨끗해 보인다고 생각합니다.

감사해요!

질문, "인라인"이란 무엇입니까?

 
fdesu : 질문, "인라인"이란 무엇입니까?

"C" 및 "C++"에서 "inline" 키워드는 최적화를 위해 인라인 확장을 사용하도록 컴파일러에 권장합니다.

그러나 MQL에서는 컴파일러가 이를 수락하고 컴파일 중에 오류를 제공하지 않더라도 그러한 기능이 문서화되지 않습니다. 단순히 용인될 수 있지만 효과가 없습니다.

 
fdesu :

감사해요!

질문, "인라인"이란 무엇입니까?

12. MQL5: 코드를 구문 분석 할 때 인라인, __inline 및 __forceinline 지정자에 대한 지원이 추가되었습니다. 코드에 지정자가 있으면 오류가 발생하지 않으며 컴파일에 영향을 주지 않습니다. 현재 이 기능은 С++ 코드를 MQL5로 전송하는 것을 단순화합니다.
MSDN의 지정자에 대한 자세한 정보를 찾으십시오.

New MetaTrader 5 platform build 1930: Floating window charts and .Net libraries in MQL5
New MetaTrader 5 platform build 1930: Floating window charts and .Net libraries in MQL5
  • 2018.10.25
  • www.mql5.com
The updated version of the MetaTrader 5 platform will be released on October 26, 2018...
 
Alain Verleyen : 12. MQL5: Added support for the inline, __inline and __forceinline specifiers when parsing code. The presence of the specifiers in the code causes no errors and does not affect the compilation. At the moment, this feature simplifies transferring С++ code to MQL5. Find more information about specifiers in MSDN.
정보 주셔서 감사합니다! 온라인 버전이나 MetaEditor 도움말 파일에서 이에 대한 언급을 찾을 수 없었기 때문에 문서에 포함하지 않은 것이 유감입니다.
사유: