MT4用TimeTradeServerアナログ。 - ページ 3

 
fxsaber:

電話をして見ることができる関連するものがあれば、どうぞ。

まあ、呼んで見てくださいよ。しかも、ケースそのものにです。

 
Vitaly Muzichenko:

コードは明快です。私はずいぶん前にSaberのスタイルに慣れましたが、彼のコードはミニマルで読みやすいものです。

この機能は、私のリクエストで書いてくれたもので、感謝しています。

では、このコードと、今書いているこのブランチと、どんな関係があるのでしょうか?

 
Dmitry Fedoseev:

このコードと、今書いているブランチはどう関係があるのでしょうか?

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MT4用TimeTradeServerアナログ。

イホール・ヘラスコ さん 2019.12.02 19:03

少し考えを変えてみてください。土曜日にスタート。TimeCurrent() - Friday 23:59:59があります。次はどうする?


 
Vitaly Muzichenko:

и?

 
fxsaber:

サーバーとコンピューターのタイムゾーン間。

サーバーのタイムゾーンはどこから取得するのですか このスレッドは基本的にそういうものです。それこそが、私たちが見つけなければならないことなのです。

 
Ihor Herasko:

サーバーのタイムゾーンはどのように取得するのですか?このスレッドは基本的にそういうものです。それこそが、私たちが知るべきことなのです。

Vitalyからこの機能へのリンクがありました。何を基準にしたアイデアなのかは覚えていません。でも、書くときに確認したはずなんです。試してみてください。

 
その機能は、何か特別な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に必要なものではないのでしょうが、そこから何かを感じ取ることができるかもしれません。

ブザーは鳴りますが、冷蔵庫はブザーが鳴るものではなく、凍るものなのです。正常に動作していないのは、遠くへ行くまでもないことです。