Yeni bir çubuk nasıl tespit edilir - sayfa 3

 
Stephen Njuki :
Bunu kullanıyorum...

Teşekkürler dostum

 
Stephen Njuki :
Bunu kullanıyorum...

Zamanı değişken olarak kullanmakta pek çok sorun yaşadım ve değişken çubuklarını kullanmanın bir yolunu arıyordum.


teşekkürler, çalış!


 
Mladen Rakic :

Neden basitçe böyle bir şey kullanmıyorsunuz:

   static datetime prevTime= 0 ;
           datetime lastTime[ 1 ];
           if ( CopyTime ( _Symbol , _Period , 0 , 1 ,lastTime)== 1 && prevTime!=lastTime[ 0 ])
          {
               prevTime=lastTime[ 0 ];
              
               // ...
          }
Her durumda çalışması gerekir (CopyTime() ile bir hata olsa bile, bir tuzaktan kaçınır)

Teşekkürler kardeşim!

 
Mladen Rakic :

Neden basitçe böyle bir şey kullanmıyorsunuz:

   static datetime prevTime= 0 ;
           datetime lastTime[ 1 ];
           if ( CopyTime ( _Symbol , _Period , 0 , 1 ,lastTime)== 1 && prevTime!=lastTime[ 0 ])
          {
               prevTime=lastTime[ 0 ];
              
               // ...
          }
Her durumda çalışması gerekir (CopyTime() ile bir hata olsa bile, bir tuzaktan kaçınır)

Mükemmel.

Ben de aynı şeyi arıyordum.


Tanrı seni korusun

 

Teşekkürler Leonard, gerçekten yardımcı oldu.

Aramadan sonra hızlı bir Uyku (10000) eklendikten sonra iHigh, iLow ve iClose doğrudan ile çalışırken birkaç sorun fark edildi.

 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 );
   }
 

Bu işlevi yazdım ve genellikle onu milyonlarca kez çağırmak isterseniz gerçek bir fark yaratabilecek optimizasyon modunda kullanıyorum. Bence bu, yeni çubuğu alabileceğiniz kadar hızlı ve temiz görünüyor:

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

Bu işlevi yazdım ve genellikle onu milyonlarca kez çağırmak isterseniz gerçek bir fark yaratabilecek optimizasyon modunda kullanıyorum. Bence bu, yeni çubuğu alabileceğiniz kadar hızlı ve temiz görünüyor:

Teşekkürler!

Soru, "Satır içi" ne anlama geliyor?

 
fdesu : Soru, "Satır içi" ne anlama geliyor?

"C" ve "C++" da, "satır içi" anahtar sözcüğü, derleyiciye optimizasyon için satır içi genişletmeyi kullanmasını önerir.

Ancak MQL'de derleyici kabul etmesine ve derleme sırasında hata vermemesine rağmen böyle bir özellik belgelenmemiştir. Basitçe tolere edilebilir, ancak etkisi yoktur.

 
fdesu :

Teşekkürler!

Soru, "Satır içi" ne anlama geliyor?

12. MQL5: Kod ayrıştırılırken satır içi, __inline ve __forceinline belirteçleri için destek eklendi. Kodda belirteçlerin bulunması hataya neden olmaz ve derlemeyi etkilemez. Şu anda bu özellik, С++ kodunun MQL5'e aktarılmasını kolaylaştırıyor.
MSDN'de belirteçler hakkında daha fazla bilgi bulun.

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.
Bilgi için teşekkürler! Yazık ki bunu belgelere dahil etmemişler, çünkü ne çevrimiçi sürümde ne de MetaEditor yardım dosyasında bundan bahsedemedim.