MT4的TimeTradeServer类似物 - 页 3

 
fxsaber:

我可以打电话过去看一下。如果有什么相关内容,请继续。

好吧,叫它来看看。而这是在案件本身上。

 
Vitaly Muzichenko:

代码很清晰,我很早就习惯了Saber的风格,他的代码很简约,可读性强。

他应我的要求写了这个功能,为此我感谢他。

那么这段代码与我们现在正在写的这个分支有什么关系?

 
Dmitry Fedoseev:

这段代码与我们现在编写的分支有什么关系?

关于交易、自动交易系统和策略测试的论坛

MT4的TimeTradeServer类似物

Ihor Herasko, 2019.12.02 19:03

请把思想转过来一点。星期六开始。我们有TimeCurrent() - 星期五23:59:59。下一步是什么?


 
Vitaly Muzichenko:

и?

 
fxsaber:

服务器和计算机时区之间。

我们从哪里获得服务器 时区?这基本上就是这整个主题的内容。这正是我们需要查明的。

 
Ihor Herasko:

我们如何获得服务器的时区?这基本上就是这整个主题的内容。这正是我们需要知道的。

维塔利给了这个功能的一个链接。我不记得这个想法的基础是什么。但我在写作时一定检查过了。试一试吧。

 
这个功能不起作用,它不能正常工作,除非是在一些特殊的DC上。
 
Dmitry Fedoseev:
这个功能不起作用,它不能正常工作,除非是在一些特殊的DC上。

如果有回放数据就好了。

 
Dmitry Fedoseev:
它不起作用,它不能正常工作,除非在一些特殊的经纪公司。

它是有效的,在3个不同的地方测试过。在mt5中检查了

它可能不是TC所需要的,但它可能从中获得一些东西。

#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:

它是有效的,在3个不同的地方测试过。在mt5中检查了

这可能不是TC需要的,但可能会从中获取一些东西。

它能工作--我是说它会发出嗡嗡声,但冰箱不应该发出嗡嗡声,它应该冻结。它没有正常工作,你不必走远就能看到这一点。