RefreshRates() işlevi neyi günceller? - sayfa 7

 
Mikhail Nazarenko :

Teşekkürler, mesele bu. Terminal, iTime aracılığıyla güncellenmemiş bir zaman serisine eriştikten sonra gerçekten 4066 hatası veriyor mu? Null yerine güncellenmemiş bilgiler veren iClose ile karşılaştım.

İşte mesele bu, seni gag yapan kilit nokta bu.

Hata 4066 - bu TF için geçmiş olmadığında, hazır değil, sunucuyla iletişime geçmeniz gerekiyor.

Ve zaten orada olduğunda, ancak yalnızca ona döndüğünüzde güncellenir, yani. hata vermiyor, sadece elindeki mevcut olanı veriyor ve istek ile eş zamanlı olarak zaman serisini güncellemeye başlıyor.

Nadiren ve düzensiz bir şekilde talep ederseniz, bazen önemsiz hale gelirsiniz. Gerekli her bir TF'ye düzenli olarak, her onay işaretine kadar başvurursanız, her şey yolunda demektir.

Bu TF'nin grafiği açıksa, grafikte düzenli olarak güncellenir. Bu arada, dolaşım düzensizse, muhtemelen gerekli tüm TF'lerin çizelgelerini danışmanlardan açabilirsiniz, ancak bu güvenilmezdir, çünkü. ayrıca TF'ler tarafından manuel olarak kapatılabilir/değiştirilebilirler.

 
Evgeniy Chumakov :


Neden [i + 0] 'a 0 ekleyelim?

sıfır yerine 1 ve 2'yi, 1 veya 2'yi değiştirdim. 0 yani 1 bar bıraktım. Kodu temizlemedim, mantık için önemli değil.

 
Aleksey Mavrin :

İşte mesele bu, seni gag yapan kilit nokta bu.

Hata 4066 - bu TF için geçmiş olmadığında, hazır değil, sunucuyla iletişime geçmeniz gerekiyor.

Ve zaten orada olduğunda, ancak yalnızca ona döndüğünüzde güncellenir, yani. hata vermiyor, sadece elindeki mevcut olanı veriyor ve istek ile eş zamanlı olarak zaman serisini güncellemeye başlıyor.

Nadiren ve düzensiz bir şekilde talep ederseniz, bazen önemsiz hale gelirsiniz. Gerekli her bir TF'ye düzenli olarak, her onay işaretine kadar başvurursanız, her şey yolunda demektir.

Bu TF'nin grafiği açıksa, grafikte düzenli olarak güncellenir. Bu arada, dolaşım düzensizse, muhtemelen gerekli tüm TF'lerin çizelgelerini danışmanlardan açabilirsiniz, ancak bu güvenilmezdir, çünkü. ayrıca TF'ler tarafından manuel olarak kapatılabilir/değiştirilebilir.

Bir hata olması gerektiğinde eski verileri verir, incinir. Bu, brokerlerin MT4'ü sevmesinin ve MT5'e geçmemesinin nedenlerinden biridir.))

Yani, 4066 hatası kalmayana kadar her tik veya uyku için istenen zaman dilimi için başvururuz. doğru mu anladım

 
Mikhail Nazarenko :

Bir hata olması gerektiğinde eski verileri verir, incinir. Bu, brokerlerin MT4'ü sevmesinin ve MT5'e geçmemesinin nedenlerinden biridir.))

Yani, 4066 hatası kalmayana kadar her tik veya uyku için istenen zaman dilimi için başvururuz. doğru mu anladım

Hemen hemen. İşte bitmiş fonksiyon:

 bool IsTFDataReady( ENUM_TIMEFRAMES eTF)
{
   ResetLastError ();
   iTime ( NULL , eTF, 1 );
   return GetLastError () == ERR_NO_ERROR;
}
Onu OnTick()'e ekleyin ve true dönerse, eTF zaman çerçevesine erişilebilir, veriler geçerlidir.
 
Mikhail Nazarenko :

Bir hata olması gerektiğinde eski verileri verir, incinir. Bu, brokerlerin MT4'ü sevmesinin ve MT5'e geçmemesinin nedenlerinden biridir.))

Yani, 4066 hatası kalmayana kadar her tık veya uyku için istenen zaman dilimi için başvuruyoruz. doğru mu anladım

sleep elbette yalnızca OnInit'te kullanmak daha iyidir ve teoride yalnızca göstergelerde gereklidir. Diğer durumlarda, Igor'un yukarıda bahsettiği gibi OnTik'e başvurmak yeterlidir.

Göreve bağlı olarak, en iyi şekilde manevra yapabilirsiniz. Genellikle, yeni bir çubuğun görünüp görünmediğini kontrol ederken, kullanılmış tüm TF'ler için her onayda zaten iTime'a döneriz, bu onları güncel tutmak için yeterlidir.

ps ve Igor'un işlevi her tıklamada değil, bazı nadir durumlarda kullanılırsa, o zaman da senkronizasyon dışı olacaktır.
Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
В чем различия между тремя режимами тестирования в MetaTrader 5 и на что обратить внимание? Как происходит тестирование эксперта, торгующего одновременно на нескольких инструментах? Когда и как вычисляются значения индикаторов при тестировании и как обрабатываются события? Как синхронизировать бары с разных инструментов при тестировании в режиме "Только цены открытия"? Статья призвана дать ответы на эти и многие другие вопросы.
 
Aleksey Mavrin :

sleep elbette yalnızca OnInit'te kullanmak daha iyidir ve teoride yalnızca göstergelerde gereklidir. Diğer durumlarda, Igor'un yukarıda bahsettiği gibi OnTik'e başvurmak yeterlidir.

Göreve bağlı olarak, en iyi şekilde manevra yapabilirsiniz. Genellikle, yeni bir çubuğun görünüp görünmediğini kontrol ederken, kullanılmış tüm TF'ler için her onayda zaten iTime'a döneriz, bu onları güncel tutmak için yeterlidir.

ps ve Igor'un işlevi her tıklamada değil, bazı nadir durumlarda kullanılırsa, o zaman da senkronizasyon dışı olacaktır.

Göstergelerde uyku çalışmıyor

 
Ihor Herasko :

Hemen hemen. İşte bitmiş fonksiyon:

OnTick()'e ekleyin ve true dönerse, eTF zaman çerçevesine erişilebilir, veriler geçerlidir.

Ustaca olan her şey basittir. Teşekkür ederim. Geliştiriciler bunu neden iClose işlevi vb. için kılavuzda açıklamıyor? Veya komplo teorileri oluşturmamak için MT4 alıntı güncelleme mantığını düzeltin .

 
Mikhail Nazarenko :

Bir hata olması gerektiğinde eski verileri verir, incinir. Bu, brokerlerin MT4'ü sevmesinin ve MT5'e geçmemesinin nedenlerinden biridir.))

Yani, 4066 hatası kalmayana kadar her tik veya uyku için istenen zaman dilimi için başvururuz. doğru mu anladım

MT5'te bu çok daha zordur.

Dördünde, kullanılan tüm TF'lerden 2 dakikada bir iTime istemek yeterlidir ve tüm veriler güncel olacaktır.

 
Mikhail Nazarenko :

Ustaca olan her şey basittir. Teşekkür ederim. Geliştiriciler bunu neden iClose işlevi vb. için kılavuzda açıklamıyor? Veya komplo teorileri oluşturmamak için MT4 alıntı güncelleme mantığını düzeltin .

Çünkü neredeyse tüm EA'lar her tikte doğru koşulları kontrol eder ve her şey kendi kendine güncellenir.

 
Vitaly Muzichenko :

Göstergelerde uyku çalışmıyor

Gerçekten ihtiyacın varsa. bu çalışır :)

 void SleepA( int msec)
 {
   uint now= GetTickCount ();
   while ( GetTickCount ()<(now+msec))
      {
       for ( int i= 0 ;i< 10000 ;i++)
         {
           double f= 1 ;
          f*=f;
          f+=f;
         }
       }
   return ;
 }  
Andrey Khatimliansky :

MT5'te bu çok daha zordur.

Dördünde, kullanılan tüm TF'lerden 2 dakikada bir iTime istemek yeterlidir ve tüm veriler güncel olacaktır.

Aynen öyle