市场关闭

 

你们是开发者!

你打算什么时候将终端时间与Exchange时间同步?

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]

额外的

在发送订单 之前,要检查 交易时间。

//+------------------------------------------------------------------+
//| 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:

你们是开发者!

你打算什么时候将终端时间与Exchange时间同步?

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]

有必要了解是谁在吐槽世界时间并设定自己的时间,是交易所还是经纪人。有既得利益,或只是出于愚蠢。

谁的时间与世界时间相同?

 
Sergey Chalyshev:

你必须弄清楚是谁向世界的时间吐口水并设定自己的时间,是证券交易所还是经纪人。无论是出于自身利益还是出于愚蠢。

谁的时间与世界时间相同?

是的,让它,世界时间,我们在莫斯科交易所的交易,在同一时间。

这不是经纪人的错,是开发商的错,因为任何来自交易所的报价都是由开发商提供的。

有时间,因此,最后已知报价的时间应该是

交易所(不是服务器)和终端的已知时间。

时代

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


TimeCurrent,返回服务器的时间,而不是终端的时间。

这可能是 "腿长 "的地方。

 
prostotrader:

是的,随它去吧,全世界,我们在莫斯科交易所交易,根据交易所的时间。

这不是经纪人的错,是开发商的错,因为任何来自交易所的报价都是由开发商提供的。

有时间,因此,最后已知报价的时间应该是

交易所(不是服务器)和终端的已知时间。

时代

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


TimeCurrent,返回SERVER的时间,而不是交易所的时间。

因此,可能是 "腿长"。

而如果服务器在莫斯科,而交易所在巴西,能不能?

 
Sergey Chalyshev:

而如果服务器在莫斯科,交易所在巴西,这可能吗?

我不关心服务器在哪里!

报价(或者说报价TIME)是当前的TIME。

添加

现在,发生了什么事?

MT5服务器只是向终端发送一个报价,与报价时间无关。

服务器的时间和报价的时间是不同步的,因为有一个市场前的时间。

EA发送订单,终端确认订单,服务器对照时间检查。

服务器检查时间,除非我知道它是什么,而且订单被重定向,出现了大约3秒(我的时间)的错误!!!!。

 
prostotrader:

我不关心服务器在哪里!

报价(或者说报价的时间)是当前的交易时间。

由以下人员添加

现在,发生的事情是

MT5服务器只是向终端发送一个报价,而不考虑报价的时间。

服务器的时间和报价的时间是不同步的,因为有一个市场前的时间。

EA发送订单,终端确认订单,服务器对照时间检查。

服务器到处检查时间,并重新调整订单,误差约为3秒!!!!。

引用(或者说引用TIME)是当前的TIME。

现在是库存时间。

服务器时间根本没有传输到终端:TimeLocal == TimeTradeServer

 

我也对这个问题感到厌烦。这是一个在论坛上出现过多次的话题。每个人都以自己的方式解决这个问题,但我还没有看到正确的解决方案。有必要确定如何纠正,并敦促开发商解决这个问题。

现在有三个功能可以获得时间(如果没有记错的话)是。

TimeLocal==TimeTradeServer,计算机时间。

TimeTradeServer ==毫无价值的功能。

TimeCurrent==最后一次报价的时间

我们需要添加交换时间,抛出TimeTradeServer或传递当前的交换时间来代替,或者添加一个TimeExchange类型




 

而最好的事情是将具体的数据输入终端,而不被时间所拖累。

- 你可以提出新的申请。

- 你可以删除订单。

- 允许交易。

由于某些原因,现在终端中没有这种功能。

 

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

对于我们的交易所来说,这仍然不是一个选项,我不知道其他人怎么样。

他们想什么时候开始交易就什么时候开始,有时在10点,有时在10点3分或10点5分。

显然,当他们醒来喝咖啡时,就会把它打开))。


 

谢尔盖!

阅读TimeCurrent帮助 - 它说这是SERVER时间

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