Pazar kapalı

 

Arkadaşlar geliştiriciler!

Peki, terminalin saatini Borsa saatiyle ne zaman senkronize ediyorsunuz?

2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.978 Trades  'xxxxx': failed buy limit 2.00 ED- 6.17 at 1.0642 [Market closed]
2017.01 . 13 10 : 00 : 03.979 Trades  'xxxxx': failed sell limit 1.00 ED- 6.17 at 1.0813 [Market closed]
 
2017.01 . 13 10 : 00 : 03.210 Trades  'xxxxx': buy limit 1.00 MXI- 6.17 at 2230.15
2017.01 . 13 10 : 00 : 03.210 Trades  'xxxxx': sell limit 1.00 MXI- 6.17 at 2300.75
2017.01 . 13 10 : 00 : 03.216 Trades  'xxxxx': accepted buy limit 1.00 MXI- 6.17 at 2230.15
2017.01 . 13 10 : 00 : 03.218 Trades  'xxxxx': accepted sell limit 1.00 MXI- 6.17 at 2300.75
2017.01 . 13 10 : 00 : 03.219 Trades  'xxxxx': failed buy limit 1.00 MXI- 6.17 at 2230.15 [Market closed]
2017.01 . 13 10 : 00 : 03.220 Trades  'xxxxx': failed sell limit 1.00 MXI- 6.17 at 2300.75 [Market closed]

katma

Sipariş gönderilmeden önce işlem süresi kontrol edilir

//+------------------------------------------------------------------+
//| Expert Check traiding time function                              |
//+------------------------------------------------------------------+
bool CheckTradingTime( MqlDateTime &tick_time)
{
   datetime lk_time = TimeCurrent (tick_time);
   if ( ( tick_time.day_of_week == int (FirstDay)) ||
       ( tick_time.day_of_week == int (SecondDay)))//выходные
  {
     return ( false );
  }
#ifdef DEBUG
   if ((tick_time.hour >= 0 ) && (tick_time.hour < 6 ))   // DEBUG 6-00
  {
     return ( false );
  }
#else
  
if ((tick_time.hour >= 0 ) && (tick_time.hour < 10 ))
  {
     return ( false );
  }
#endif
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600                = 50400 - 14:00:00
// 14 * 3600 + 30           = 50430 - 14:00:30
// 14 * 3600 + 60           = 50460 - 14:01:00

// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60      = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60      = 67560 - 18:46:00

// 19 * 3600                = 68400 - 19:00:00
// 19 * 3600 + 60           = 68460 - 19:01:00  

// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60      = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60      = 85860 - 23:51:00
//---
   ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec;  
//---                    //10:00:02                      
   if (((trade_time >= time_st_mon) && (trade_time < 50370 )) ||
      ((trade_time >= time_st_day) && (trade_time < 67470 )) ||
      ((trade_time >= time_st_evn) && (trade_time < 85770 )))
  {
     return ( true );
  }

return (false); 


}
input string           TimeStMon    = "10:00:02" ;         //Время начала утренней сессии

ulong time_st_mon = GetStringTime(TimeStMon);
ulong GetStringTime( const string a_string)
{
   int k = 0 ;
   string s_sec, s_min, s_hour;
   int str_size = StringLen (a_string);
//---
   if (str_size != 8 ) return ( 0 );  
//---  
   for ( int i = str_size - 1 ; i >= 0 ; i--)
  {
     ushort let_symbol = StringGetCharacter (a_string, i);
    
     if (let_symbol == ':')
    {
      k++;
       switch (k)
      {
         case 1 :
          s_sec = StringSubstr (a_string, i + 1 , str_size - i - 1 );
         break ;
         case 2 :
          s_min = StringSubstr (a_string, i + 1 , str_size - i - 4 );
          s_hour = StringSubstr (a_string, 0 , i);
         break ;
      }
//---
    }
  }
   if (k != 2 ) return ( 0 );
   ulong t_sec = ulong ( StringToInteger (s_sec));
   ulong t_min = ulong ( StringToInteger (s_min)) * 60 ;
   ulong t_hour = ulong ( StringToInteger (s_hour)) * 3600 ;
//---    
   return (t_hour + t_min + t_sec);
}
 
prostotrader :

Arkadaşlar geliştiriciler!

Peki, terminalin saatini Borsa saatiyle ne zaman senkronize ediyorsunuz?

2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.969 Trades  'xxxxx': sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted buy limit 2.00 ED- 6.17 at 1.0642
2017.01 . 13 10 : 00 : 03.975 Trades  'xxxxx': accepted sell limit 1.00 ED- 6.17 at 1.0813
2017.01 . 13 10 : 00 : 03.978 Trades  'xxxxx': failed buy limit 2.00 ED- 6.17 at 1.0642 [Market closed]
2017.01 . 13 10 : 00 : 03.979 Trades  'xxxxx': failed sell limit 1.00 ED- 6.17 at 1.0813 [Market closed]

Burada, kimin dünya saatini umursamadığını ve kendi saatini, bir borsayı veya bir komisyoncuyu belirlediğini anlamalısınız. Bencil çıkarlarıyla ya da sadece aptallıkları yüzünden.

Kimin zamanı dünyayla çakışıyor?

 
Sergey Chalyshev :

Burada, kimin dünya saatini umursamadığını ve kendi saatini, bir borsayı veya bir komisyoncuyu belirlediğini anlamalısınız. Bencil çıkarlarıyla ya da sadece aptallıkları yüzünden.

Kimin zamanı dünyayla çakışıyor?

Evet, Tanrı onu korusun, dünya, zamanına göre Moskova Borsasında ticaret yapıyoruz,

ve suçlanacak olan komisyoncu değil, geliştiricilerdir, çünkü Borsa'dan gelen herhangi bir teklif

zamanı vardır, bu nedenle bilinen son alıntının zamanı olmalıdır

değişimin bilinen zamanı (SUNUCU DEĞİL) ve TERMİNAL

ZamanAkım

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.


TimeCurrent, EXCHANGE'ın değil, SUNUCU'nun zamanını döndürür!

Bu nedenle, muhtemelen, "ve bacaklar büyür."

 
prostotrader :

Evet, Tanrı onu korusun, dünya, Moskova Borsasında zamanına göre ticaret yapıyoruz,

ve suçlanacak olan komisyoncu değil, geliştiricilerdir, çünkü Borsa'dan gelen herhangi bir teklif

zamanı vardır, bu nedenle bilinen son alıntının zamanı olmalıdır

değişimin bilinen zamanı (SUNUCU DEĞİL) ve TERMİNAL

ZamanAkım

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.


TimeCurrent, EXCHANGE'ın değil, SUNUCU'nun zamanını döndürür!

Bu nedenle, muhtemelen, "ve bacaklar büyür."

Sunucu Moskova'daysa ve borsa Brezilya'daysa, bu olabilir mi?

 
Sergey Chalyshev :

Sunucu Moskova'daysa ve takas Brezilya'daysa, bu olabilir mi?

Sunucunun nerede olduğu umrumda değil!

Fiyat teklifi (veya daha doğrusu teklifin ZAMANI) mevcut TİCARET zamanıdır.

Katma

Şimdi aşağıdakiler oluyor

MT5 sunucusu, teklifin saatinden bağımsız olarak teklifi terminale gönderir,

SERVER zamanını teklif zamanı ile senkronize etmeden, çünkü bir ön pazar var.

EA bir sipariş gönderir , terminal bunu onaylar ve sunucu zamanı BELİRSİZCE ne ile kontrol eder ve

sipariş 3 saniyeye varan bir hata ile reddedildi (bilgisayarımın saatine göre) !!!!

 
prostotrader :

Sunucunun nerede olduğu umrumda değil!

Fiyat teklifi (veya daha doğrusu teklifin ZAMANI) mevcut TİCARET zamanıdır.

Katma

Şimdi aşağıdakiler oluyor

MT5 sunucusu, teklifin saatinden bağımsız olarak teklifi terminale gönderir,

SERVER zamanını teklif zamanı ile senkronize etmeden, çünkü bir premarket var.

EA bir sipariş gönderir, terminal bunu onaylar ve sunucu zamanı BELİRSİZCE ne ile kontrol eder ve

3 saniyeye varan bir hatayla siparişi reddedin!!!!

Fiyat teklifi (veya daha doğrusu teklifin ZAMANI) mevcut TİCARET zamanıdır.

stok zamanı.

Sunucu zamanı terminale hiç iletilmez: TimeLocal == TimeTradeServer .

 

Ben de bu sorunu yaşadım. Bu konu forumda defalarca açıldı. Herkes bu sorunu kendine göre çözüyor ama ben doğru çözümü görmedim. Nasıl doğru yapılacağına karar vermek ve geliştiricilerden bunu düzeltmelerini şiddetle istemek gerekir.

Şimdi zamanı almak için üç fonksiyon var (eğer hafıza çalışıyorsa) bunlar:

TimeLocal == TimeTradeServer , bilgisayar saati,

  TimeTradeServer == değersiz fonksiyon,

TimeCurrent == son fiyat teklifi zamanı .

Değişim zamanını eklemeniz, TimeTradeServer'ı çıkarmanız veya bunun yerine mevcut değişim zamanını geçmeniz veya TimeE xchange tipini eklemeniz gerekir .




 

Ve zamanla uğraşmadan terminalde belirli verileri almak en iyisi olacaktır:

- Yeni başvurular gönderebilirsiniz,

- Siparişleri silebilirsiniz

- Ticarete izin verilir.

Nedense artık terminalde böyle bir işlevsellik yok.

 

Нужно добавить время биржы, выкинуть  TimeTradeServer  или вместо него передавать текущее время биржи , или добавить типа  TimeE xchange .

Yine de, bu bizim takasımız için bir seçenek değil, diğerlerinde nasıl olduğunu bilmiyorum.

İstedikleri zaman bazen 10:00'da, bazen 10:03'te veya 10:05'te müzayedeyi açarlar.

Görünüşe göre fazla uyuyorlar, kahve içiyorlar - sonra açıyorlar))


 

Serezha!

TimeCurrent yardımını okuyun - bunun SUNUCU zamanı olduğunu söylüyor

Возвращает последнее известное время сервера , время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.
Neden: