Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Bu arada, göstergeden Sleep()'i çağırmanız garip çünkü yasaktır:
Göstergeler bir arabirim iş parçacığında yürütüldüğünden ve onu yavaşlatmaması gerektiğinden, Sleep() işlevi özel göstergelerden çağrılamaz. İşlev, her 0,1 saniyede bir uzmanın durma bayrağının durumunu dahili olarak kontrol eder.
Bu arada, göstergeden Sleep()'i çağırmanız garip çünkü yasaktır:
Alexey!
Oldukça sıvı alet :)
Bu, araçla (likidite) ilgili değil, HERHANGİ bir araçta olabilecek gecikmeyle ilgili.
Yaklaşık 4 yıldır Expert Advisors ile aktif olarak ticaret yapıyorum.
Uzman Danışmanlarımda herhangi bir duraklama yoktur (Göstergelerde sunucudan veri yüklenmesini bekleme duraklaması hariç),
bir duraklama girerseniz - bu, danışmanınızın algoritmasını doğru bir şekilde oluşturmadığınızın GERÇEK işaretidir :(
Sleep()'in ne olduğunu bile bilmiyorum.
O zaman şimdi duraklamalardan bahsetmemiz garip ...
Sleep()'in yaptığı anlamda değil, kodumda kullanma anlamında.
Göstergede nasıl bir duraklama uygularsınız?
// Custom indicator Check timer function |
//+------------------------------------------------------------------+
bool CheckTimer( const uint start_value, const uint per_value)
{
uint end_value = GetTickCount ();
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 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))
{
// Print( "LoadServerData: Первая дата на сервере есть. Пробуем получить локальные данные..." );
return (GetLocalData(a_symbol, period));
}
}
else
{
uint start_tick = GetTickCount ();
//---
while (!CheckTimer(start_tick, 10 ))
{
fail_cnt--;
fail_cnt++;
}
}
fail_cnt++;
}
// Print( "LoadServerData: Первой даты на сервере нет!" );
return ( 0 );
}
Bu eski bir örnek.
GetTickCount'un hatası oldukça büyük olduğu için (16 ms'ye kadar), şimdi GetMicrosecondCount () kullanıyorum
Prensip olarak, bunu yapıyorum, ancak Forts'ta sipariş genellikle başarıyla kabul edilir...
Burası ek bir açıklığın kayabileceği yer…. Sorunu bu şekilde kısmen çözüyorum, eğer sipariş kabul edilirse, o zaman int değişkenini arttırıyorum ve artıştan sonra açılma koşulları biraz farklı, yani yeni açılma yok ama.....sipariş kabul edilmezse değişken artmıyor ama işin püf noktası şu... Durumu doğru belirlemedim ve fazladan siparişler geldi.
Alexey!
Oldukça sıvı alet :)
Bu, araçla (likidite) ilgili değil, HERHANGİ bir araçta olabilecek gecikmeyle ilgili.
Yaklaşık 4 yıldır Expert Advisors ile aktif olarak ticaret yapıyorum.
Uzman Danışmanlarımda herhangi bir duraklama yoktur (Göstergelerde sunucudan veri yüklenmesini bekleme duraklaması hariç),
bir duraklama girerseniz - bu, danışmanınızın algoritmasını doğru bir şekilde oluşturmadığınızın GERÇEK işaretidir :(
Ayrıca oldukça uzun bir süredir ve sadece danışmanların yardımıyla ticaret yapıyorum. Gerçek çoğunlukla MT4'te. Bu noktaya kadar MT5 üzerinde sadece limit kartları yardımı ile robot olarak çalıştım ve soru gelmedi. Şahsen, Expert Advisors'da ek duraklamalara da karşıyım, özellikle bir scalper veya bir pipser ise, girişi kolayca atlayabilirsiniz.