MT4的TimeTradeServer类似物 - 页 5

 
fxsaber:

你如何根据图纸进行复制?

我认为这个数字非常雄辩地表明了这一点。

  1. 有欧元兑美元。
  2. 有一个一分钟的历史。
  3. 有一个服务器时间和GMT时间。
  4. 你已经指明了TC的名称。
  5. 它们之间的差异应该是2,但实际上是0。
我还需要什么?请让我知道,我会去做。
 
fxsaber:

作出这样的改变,它就会继续耕耘。夏季和冬季的定义还没有做,有人会做。

首先,这不是 "减2",而是 "加2"。那么对于我的情况来说,它适合。

第二,对于一个与格林尼治标准时间相差4小时的服务器,你是否建议把4小时而不是2小时放进去?那么我就不需要函数了,我只需要使用最初的已知数就可以得到正确的答案。)))

 
Ihor Herasko:

你还需要什么?告诉我,我将提供。

交易服务器的代码和名称,你可以通过终端打开一个演示来连接。

 
Ihor Herasko:

首先,这不是 "减2",而是 "加2"。那么对于我的情况来说,它适合。

其次,对于一个与格林尼治标准时间相差4小时的服务器,你是否建议把4小时而不是2小时放进去?那么我就不需要函数了,我只需要使用最初的已知数就可以得到正确的答案。)))

你把我没有说过的话归于我,然后说这是错的。你还试图为此开个玩笑。

 
Dmitry Fedoseev:

由于OrderSend()函数遇到一个错误 "市场关闭"(有一些这样的事情),我们停止所有的交易尝试,等待价格变化,这将意味着市场已经开放。

这个想法肯定会有帮助,我想知道市场何时关闭,而没有不必要的错误。我们需要考虑一下。

 
Maxim Kuznetsov:
我们不应该在欧元兑美元上寻找最后(23:59)分钟,而应该在黄金上寻找夜晚。黄金交易严格按照阿姆斯特丹,货币的服务器时间进行。从这里找到服务器的GMT偏移量

我告诉你一个可怕的秘密,不是每一天都能在晚上11点59分结束 :-)而且我们可能事先不知道它将在什么时候结束。例如,在节前的日子和星期五。

 
fxsaber:

作出这样的改变,它就会继续耕耘。没有做夏季和冬季的定义,有人会做。

它不会工作,在系统上,他们不他妈的更新系统的安装:-)例如,在射频领域仍然存在着从冬季到夏季的时间变化。我曾遇到过这样的系统...

 
fxsaber:

交易服务器的代码和名称,你可以通过终端打开一个演示连接到该服务器。

代码:https://www.mql5.com/ru/forum/327616/page3#comment_14093858

登录: 12752745

服务器: yk2mkat

服务器:Alpari-Demo

TimeTradeServer аналог для МТ4
TimeTradeServer аналог для МТ4
  • 2019.12.02
  • www.mql5.com
Интересует решение этой функции под МТ4 TimeTradeServer...
 
fxsaber:

你把我没有说过的话归于我,然后说这是错的。然后你还想拿它来开玩笑。

不是你写的 吗?

没有开玩笑的意思。在你提交的代码中,0被改成了2。确切地说,我得到的真实时间和服务器的计算时间之间存在差异。这就是为什么我对这种方法感到惊讶:看一下需要的差异,然后把需要的偏移量而不是0。这里没有什么可笑的。

TimeTradeServer аналог для МТ4
TimeTradeServer аналог для МТ4
  • 2019.12.03
  • www.mql5.com
Интересует решение этой функции под МТ4 TimeTradeServer...
 
Ihor Herasko:

代码:https://www.mql5.com/ru/forum/327616/page3#comment_14093858

登录: 12752745

帐户: yk2mkat

服务器:Alpari-Demo

伊霍尔-赫拉斯科

不是你写的 吗?

关于这个笑话--不是笑话。在你提交的代码中,0已被改为2。我得到了真实和估计的服务器时间之间的差异。这就是为什么我对这种方法感到惊讶:看一下需要的差异,然后把需要的偏移量而不是0。没有什么可笑的。

检查码

#property strict

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

datetime GetBarTime( const datetime time, const bool NextBar = false, string Symb = NULL, const ENUM_TIMEFRAMES TimeFrame = PERIOD_M1 )
{
  if (Symb == NULL)
    Symb = _Symbol;
    
  return(iTime(Symb, TimeFrame, iBarShift(Symb, TimeFrame, time) - (NextBar ? 1 : 0)));
}

datetime GetTimeDayOfWeek( const int Shift = 0, const ENUM_DAY_OF_WEEK Day = SUNDAY )
{
  const datetime Res = TimeCurrent() / DAY * DAY;
  
  return(Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK) + Shift * WEEK) * DAY);
}

// https://www.mql5.com/ru/forum/327616/page4#comment_14098877
// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
int TimeServerGMTOffset( const bool SummerTime = false )
{
  const datetime Sunday = GetTimeDayOfWeek();
  
  return(((int)MathRound((double)MathMin(Sunday - DAY - GetBarTime(Sunday), Sunday + DAY - GetBarTime(Sunday, true)) / HOUR) - SummerTime - 2) * HOUR);
}

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt
// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю
datetime TimeServerGMT( void )
{
  return(TimeCurrent() + TimeServerGMTOffset());
}

#define  PRINT(A) Print(#A + " = " + (string)(A))

// https://www.mql5.com/ru/forum/170953/page8#comment_6940794
void OnStart()
{  
  PRINT(TimeGMT());
  PRINT(TimeServerGMT());  
}


在一台与Alpari的GMT相同的机器上的结果。

2019.12.03 19:28:09.048 Test5-3 EURUSD,M1: TimeServerGMT() = 2019.12.03 17:28:12
2019.12.03 19:28:09.048 Test5-3 EURUSD,M1: TimeGMT() = 2019.12.03 17:28:09


已检查

AccountServer() = AMPGlobalUSA-Demo

它是正确的。