MT4 için TimeTradeServer analogu - sayfa 3

 
fxsaber :

Arayıp bakabilirim. Önemli bir şey varsa, gidelim.

Öyleyse arayın ve bir göz atın. Ve bu aslında.

 
Vitaly Muzichenko :

Kod açık, uzun zamandır kılıcın tarzına alışkınım, kodları minimalist ve okunabilir.

Bu işlevi, kendisine teşekkür ettiğim isteğim üzerine yazdı.

Peki, bu kodun şu anda yazdığımız bu dalla ne ilgisi var?

 
Dmitry Fedoseev :

Peki, bu kodun şu anda yazdığımız bu dalla ne ilgisi var?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MT4 için TimeTradeServer analogu

Ihor Herasko , 2019.12.02 19:03

Biraz zihninizi genişletin lütfen. Cumartesi günü başladı. TimeCurrent() - Cuma 23:59:59'a sahibiz. Sıradaki ne?


 
Vitaly Muzichenko :

ve?

 
fxsaber :

Sunucunun ve bilgisayarın saat dilimleri arasında.

Sunucu saat dilimini nereden alıyoruz? Temelde tüm iş parçacığı bununla ilgili. Bilmen gereken tam olarak bu.

 
Ihor Herasko :

Sunucu saat dilimini nereden alıyoruz? Temel olarak, tüm iş parçacığı budur. Bilmen gereken tam olarak bu.

Vitaliy bu işleve bir bağlantı verdi. Fikrin neye dayandığını hatırlamıyorum. Ama muhtemelen yazarken kontrol etti. Dene.

 
Evet, bu işlev çalışmıyor, belki bazı özel DC'ler dışında düzgün çalışamıyor.
 
Dmitry Fedoseev :
Evet, bu işlev çalışmıyor, belki bazı özel DC'ler dışında düzgün çalışamıyor.

Oynatılacak verilere sahip olmak güzel olurdu.

 
Dmitry Fedoseev :
Evet, bu işlev çalışmıyor, belki bazı özel DC'ler dışında düzgün çalışamıyor.

Çalışır, 3 farklı üzerinde test edilmiştir. mt5'te kontrol edildi

Bu muhtemelen TC'nin ihtiyacı olan şey değil, ama belki ondan bir şeyler alacak

 #property strict


#define HOUR 3600
#define DAY ( 24 * HOUR)
#define WEEK 7

void OnTick () {
   Comment (TimeServer() + "\n" +
          TimeServerGMT() + "\n" +
          TimeServerGMTOffset());  
}

//--
MqlDateTime Tm;   

datetime GetBarTime( datetime time, bool NextBar = false , string Symb = NULL , ENUM_TIMEFRAMES TimeFrame = PERIOD_M15 ) {
 if (Symb == NULL ) Symb = _Symbol ;
   return ( iTime (Symb, TimeFrame, iBarShift (Symb, TimeFrame, time) - (NextBar ? 1 : 0 )));
 }
//--
datetime GetTimeDayOfWeek( int Shift = 0 , ENUM_DAY_OF_WEEK Day = SUNDAY ) {
 const datetime Res = TimeCurrent () / DAY * DAY;
 TimeToStruct (Res,Tm);
   return (Res - (((WEEK + (Tm.day_of_week - Day)) % WEEK) + Shift * WEEK) * DAY);
 }
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
int TimeServerGMTOffset( void ) {
 static string _sym= NULL ;
 static int _arr= 0 ;
 if (_sym== NULL ) {
   datetime Arr[];
   for ( int i= 0 ;i< SymbolsTotal ( false );i++) {
   if ( StringFind ( SymbolName (i, false ), "EURUSD" , 0 )>- 1 ) {
    _sym= SymbolName (i, false );
     CopyTime (_sym, PERIOD_M15 , 1 , 500 ,Arr);
     if ( SymbolInfoInteger (_sym, SYMBOL_SELECT )== 0 ) SymbolSelect (_sym, true );
    _arr= ArraySize (Arr);
     break ;
   }
  }
   if (_sym== NULL ) Alert ( "Not Symbol EURUSD" );
 }
 if (_arr< 500 ) {_sym= NULL ; return ( 0 );}
 const datetime Sunday = GetTimeDayOfWeek();
   return ((( int ) MathRound (( double ) MathMin (Sunday-DAY-GetBarTime(Sunday, false ,_sym),Sunday+DAY-GetBarTime(Sunday, true ,_sym))/HOUR)- 0 )*HOUR);
 }
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
datetime TimeServer( void ) {
   return ( TimeCurrent ());
 }
// Серверное время
datetime TimeServerGMT() {
   return ( TimeCurrent () + TimeServerGMTOffset()+ TimeGMTOffset ());
 }
 
Vitaly Muzichenko :

Çalışır, 3 farklı üzerinde test edilmiştir. mt5'te kontrol edildi

Bu muhtemelen TC'nin ihtiyacı olan şey değil, ama belki ondan bir şeyler alacak

Çalışıyor - vızıltı anlamında, ancak buzdolabı vızıldamamalı, donmalı. Yanlış çalışıyor ve buna ikna olmak için çok uzağa gitmenize gerek yok.