Hatalar, hatalar, sorular - sayfa 1802
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bunu her kene için yapmayı önerir misiniz?
Her OnBookEvent() yangınında senkronize olmaya devam ediyorum :(
Burada bir soru yok, soru şu ki, buna ek olarak, her seferinde CopyRates () işlevinin çağrılması da öneriliyor .... bu, bana öyle geliyor ki, bir tür kalay ...
:)
{
if (symbol == Symbol ())
{
GetBars( Symbol (), time_frame);
}
}
SD'de bana böyle öğrettiler
:)
{
if (symbol == Symbol ())
{
GetBars( Symbol (), time_frame);
}
}
Bir şey söylemek veya göstermek istiyorsanız - gösterin, lütfen, bu normaldir ... burada ne tür bir işleve sahip olduğunuzu ve ne yaptığını tahmin etmek bir av değildir.
Katma:
Öğretilen? Bir uygulama sağladınız mı?
Bir şey söylemek veya göstermek istiyorsanız - gösterin, lütfen, bu normaldir ... burada ne tür bir işleve sahip olduğunuzu ve ne yaptığını tahmin etmek bir av değildir.
Katma:
Öğretilen? Bir uygulama sağladınız mı?
tamam ne var?
İki dakika içinde verilerin boşaltıldığını ve senkronizasyonu sürdürmek için dediler.
Barları aramanız tavsiye edilir
//| Custom indicator Get bars function |
//+------------------------------------------------------------------+
int GetBars( string symbol, ENUM_TIMEFRAMES period)
{
if (! IsStopped ())
{
if ( SymbolIsSynchronized (symbol))
{
if ( bool ( SeriesInfoInteger (symbol, period, SERIES_SYNCHRONIZED )))
{
int a_bars = Bars (symbol, period);
if (a_bars > 0 )
{
return (a_bars);
}
else
{
return (GetLocalData(symbol, period));
}
}
else
{
return (GetLocalData(symbol, period));
}
}
else
{
return (LoadServerData(symbol, period));
}
}
return ( 0 );
}
Burada
// Custom indicator Check timer function |
//+------------------------------------------------------------------+
bool CheckTimer( const ulong start_value, const ulong per_value)
{
ulong end_value = GetMicrosecondCount ();
if (end_value < start_value)
{
if ((start_value - end_value) >= per_value) return ( true );
}
else
{
if ((end_value - start_value) >= per_value) return ( true );
}
return ( false );
}
//+------------------------------------------------------------------+
//| Custom indicator Get local data function |
//+------------------------------------------------------------------+
int GetLocalData( const string a_symbol, ENUM_TIMEFRAMES a_period)
{
long first_date;
int fail_cnt = 0 ;
while ((fail_cnt < 3 ) && ! IsStopped ())
{
first_date = long ( SeriesInfoInteger (a_symbol, PERIOD_M1 , SERIES_TERMINAL_FIRSTDATE ));
if (first_date > 0 )
{
int f_cnt = 0 ;
datetime times[ 1 ];
long a_bars = 0 ;
while ((f_cnt < 5 ) && ! IsStopped ())
{
if ( bool ( SeriesInfoInteger (a_symbol, PERIOD_M1 , SERIES_BARS_COUNT , a_bars)))
{
if ( a_bars > 0 )
{
if ( bool ( SeriesInfoInteger (a_symbol, a_period, SERIES_BARS_COUNT , a_bars)))
if (a_bars > 0 ) return ( int (a_bars));
}
}
else
{
//--- force timeseries build
CopyTime (a_symbol, a_period, 0 , 1 , times);
ulong start_tick = GetMicrosecondCount ();
while (!CheckTimer(start_tick, 5000 ))
{
f_cnt--;
f_cnt++;
}
}
f_cnt++;
}
}
else
{
ulong start_tick = GetMicrosecondCount ();
while (!CheckTimer(start_tick, 5000 ))
{
fail_cnt--;
fail_cnt++;
}
}
//---
fail_cnt++;
}
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator Get server data function |
//+------------------------------------------------------------------+
int LoadServerData( const string a_symbol, ENUM_TIMEFRAMES period)
{
int fail_cnt = 0 ;
while ((fail_cnt < 5 ) && ! IsStopped ())
{
long first_date = long ( SeriesInfoInteger (a_symbol, PERIOD_M1 , SERIES_SERVER_FIRSTDATE ));
if (first_date > 0 )
{
if ( SymbolIsSynchronized (a_symbol))
{
return (GetLocalData(a_symbol, period));
}
}
else
{
ulong start_tick = GetMicrosecondCount ();
while (!CheckTimer(start_tick, 20000 ))
{
fail_cnt--;
fail_cnt++;
}
}
fail_cnt++;
}
return ( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator Get bars function |
//+------------------------------------------------------------------+
int GetBars( string symbol, ENUM_TIMEFRAMES period)
{
if (! IsStopped ())
{
if ( SymbolIsSynchronized (symbol))
{
if ( bool ( SeriesInfoInteger (symbol, period, SERIES_SYNCHRONIZED )))
{
int a_bars = Bars (symbol, period);
if (a_bars > 0 )
{
return (a_bars);
}
else
{
return (GetLocalData(symbol, period));
}
}
else
{
return (GetLocalData(symbol, period));
}
}
else
{
return (LoadServerData(symbol, period));
}
}
return ( 0 );
}
GetBars'ı arayarak senkronizasyonu sürdürüyoruz veya veri almaya çalışıyoruz
tamam ne var?
İki dakika içinde verilerin boşaltıldığını ve senkronizasyonu sürdürmek için dediler.
Barları aramanız tavsiye edilir
//| Custom indicator Get bars function |
//+------------------------------------------------------------------+
int GetBars( string symbol, ENUM_TIMEFRAMES period)
{
if (! IsStopped ())
{
if ( SymbolIsSynchronized (symbol))
{
if ( bool ( SeriesInfoInteger (symbol, period, SERIES_SYNCHRONIZED )))
{
int a_bars = Bars (symbol, period);
if (a_bars > 0 )
{
return (a_bars);
}
else
{
return (GetLocalData(symbol, period));
}
}
else
{
return (GetLocalData(symbol, period));
}
}
else
{
return (LoadServerData(symbol, period));
}
}
return ( 0 );
}
Bu analog değil mi?
if ( bool ( SeriesInfoInteger (symbol, period, SERIES_SYNCHRONIZED )))
Evet, senkronizasyon olmazsa Bars() 0 döndürür gibi geldi bana... Bir test yapmam gerekecek...
Bunu her kene için yapmayı önerir misiniz?
Sembol, Piyasa İzleme'de seçildiği ve sembolün geçmişi Uzman Danışman tarafından tutulduğu sürece, senkronize durumda tutulur. Bir uzman tarafından tutmak, örneğin bir çubuğu kopyalayarak bu geçmişe en az 2 dakikada bir erişmek anlamına gelir. Geçmiş senkronize edilirse, bir çubuğu kopyalamak için zaman harcanmaz - sadece birkaç işlemci döngüsü. Veya, az önce dedikleri gibi , çubuk sayısını isteyin, ayrıca birkaç döngü
Ne için? Tek bir işlem yeterlidir.
Sembol, Piyasa İzleme'de seçildiği ve sembolün geçmişi Uzman Danışman tarafından tutulduğu sürece, senkronize durumda tutulur. Bir uzman tarafından tutmak, örneğin bir çubuğu kopyalayarak bu geçmişe en az 2 dakikada bir erişmek anlamına gelir. Geçmiş senkronize edilirse, bir çubuğu kopyalamak için zaman harcanmaz - sadece birkaç işlemci döngüsü.
Göstergeler 2 dakikalık bir aralık içeriyor mu?
Evet ve senkronizasyon gerçeği kontrol edilerek senkronizasyon da yapılacak mı?
Göstergeler 2 dakikalık bir aralık içeriyor mu?
Evet ve senkronizasyon gerçeği kontrol edilerek senkronizasyon da yapılacak mı?
Senkronizasyon, bir senkronizasyon doğruluk kontrolü tarafından yapılmaz.