mql5言語の特徴、微妙なニュアンスとテクニック - ページ 75 1...686970717273747576777879808182...247 新しいコメント Ihor Herasko 2018.03.29 09:51 #741 Vitaly Muzichenko: 土曜日にEAをチャート上に置いたのですが、EAは最後のティックの時間を取得することができ、それは例えばマーケットウォッチでは23:58で、私のローカル時間は04:45です。サーバーの時間はわかりません。質問は、最後のティックからサーバー時刻(端末時刻)までの経過時間です。しばらく考えた。EAをチャートに貼り付けても差がないことがわかりました。リアルティックがないうちは、プログラムアルゴリズムのうち、サーバーの リアルタイムを使う部分を実行することができない。 ティックが到着する前に計算が必要な場合は、ServerGMTOffsetを要求する。 そのため、ServerTradeTime()が無くても問題は解決します。 Vitaly Muzichenko 2018.03.29 11:31 #742 イホール・ヘラスコ: 少し考えてみました。EAをチャートに貼り付けても差がないことが判明。リアルチックがない以上、プログラムアルゴリズムのうち、リアルサーバーの時間を使う部分は実行できない。ティックが到着する前に計算が必要な場合は、ServerGMTOffsetを要求する。したがって、ServerTradeTime()が無くても問題は解決する。ユーザーはサーバーのOffsetを知らないんだよ。 2つの値しかわかっておらず、このデータだけでは計算できない"最後のティックからサーバー(端末)の時刻までどれだけ時間が経過しているか "ということです。 これは非常に特殊な作業で、皆さんのように解決策が見当たりません。 Alexey Viktorov 2018.03.29 12:03 #743 ヴィタリー・ムジチェンコ土曜日にEAをチャート上に置いたのですが、EAは最後のティックの時間を取得することができ、それは例えばマーケットウォッチでは23:58で、私のローカル時間は04:45です。サーバーの時間はわかりません。 問題は、最後のティックからサーバー時刻(端末時刻)までの経過時間です単なる時間ではなく、datetimeなのです。日付と時刻の両方が表示されます。つまり、このデータで算術演算すると秒単位の差が出るので、日、時、分、秒に換算するのは難しくない。 さらに、TimeTradeServerが 週末に何を表示するかを確認する必要があります。 2018.03.29 15:00:03.640 00 (EURUSD,H1) TimeCurrent() = 2018.03.29 14:59:54 2018.03.29 15:00:03.640 00 (EURUSD,H1) TimeLocal() = 2018.03.29 15:00:03 2018.03.29 15:00:03.640 00 (EURUSD,H1) TimeGMT() = 2018.03.29 12:00:03 2018.03.29 15:00:03.640 00 (EURUSD,H1) TimeGMTOffset() = -10800 2018.03.29 15:00:03.640 00 (EURUSD,H1) TimeTradeServer() = 2018.03.29 15:00:03 サーバー時刻と現地時刻のズレに注意し、さらに現地時刻と推定サーバー時刻の完全一致を確認する。 fxsaber 2018.03.29 12:33 #744 FXの場合、このコードを4つから作り直すことができます。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム mql4言語の特徴、微妙なニュアンスとコツ fxsaber さん 2018.03.29 14:32 #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/docs/dateandtime/timegmtoffset // Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю int TimeServerGMTOffset( void ) { const datetime Sunday = GetTimeDayOfWeek(); return(((int)MathRound((double)MathMin(Sunday - DAY - GetBarTime(Sunday), Sunday + DAY - GetBarTime(Sunday, true)) / HOUR) - 3) * HOUR); } // Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt // Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю datetime TimeServerGMT( void ) { return(TimeCurrent() + TimeServerGMTOffset()); } Vitaly Muzichenko 2018.03.29 12:50 #745 fxsaber このコードをFX用に作り直すこともできますありがとうございます、見てみます。でもって、FX以外のシンボルもある。 不便なのは、現在のサーバーの時刻を、どの時点でも、簡単に取得できないことです。 アレクセイ・ヴィクトロフどちらも単なる時間ではなく、datetimeである。つまり、日付と時刻の両方が表示されます。つまり、これらのデータを使った算術演算では、日、時間、分、秒に換算することは難しくなく、秒の差が得られることになる。 さらに、週末にはTimeTradeServerが 何を示しているかを確認する必要があります。 サーバー時刻の秒数とローカル時刻のズレに注目し、ローカル時刻とサーバー時刻の計算が完全に一致することを確認します。 同じように印刷したのですが、週末には使えません。一般に、情報はテストされるべきものである。 タスクは「最後のティックからサーバー(端末)の時刻までどれだけ時間が 経過しているか」という最小限のものである。 if( TimeCurrent()<TimeServer()-60 ) Alert( "нет котировок более 1-й минуты" ); fxsaber 2018.03.29 12:57 #746 ヴィタリー・ムジチェンコありがとうございます、見てみます。でもって、FX以外のシンボルもある。 ブローカーが少なくとも1つのFXシンボルを持っている場合、それは他の人にも有効である。 ブローカーがFXのシンボルを1つも持っていない場合、合理性の問題が生じます。 Alexey Viktorov 2018.03.29 13:02 #747 Vitaly Muzichenko: ありがとうございます、見てみます。でもって、FX以外のシンボルもある。現在のサーバーの時刻を、いつでも簡単に取得できないのは不便です。私もプリントしていますが、週末にどう使うか。一般的には、提供された情報を回転させる必要があります。タスクは「最後の刻みからサーバー(端末)の時刻までどれだけ時間が 経過しているか」という最小限のものです。もちろん確認は必要ですが、TimeCurrentとTimeTradeServerの 差から判断すると、その差は大きく なることが想定されます。 MQ-demoのサーバーの時刻が モスクワと同じかどうか教えてください。 Vitaly Muzichenko 2018.03.29 13:14 #748 アレクセイ・ヴィクトロフ確認する価値はありますが、TimeCurrentとTimeTradeServerの差から、その差は広がる ことが予想されます。 MQ-demoのサーバー時刻が私のモスクワ時刻と同じかどうか、またサーバー時刻が私の現地時刻と同じでない場合、どのように表示されるか教えてください。ロボ 私の現地時間は17時17分13秒でした fxsaber 2018.03.29 13:16 #749 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム バグ、バグ、質問 fxsaber, 2017.05.19 22:35 TimeTradeServerは、あらゆる種類の無意味なものを返すことができます。例えば、TimeCurrentより小さい値。これでは、実用化は全く不可能です。もし私の考えが正しければ、TimeTradeServerはTimeCurrentを受け取った後に経過時間を計算し、この差を加えることで、将来のTimeCurrentの値をエミュレートするようなものです。さて、Expert Advisorを実行したところ#define TOSTRING(A) #A + " = " + (string)(A) + "\n" void OnInit() { EventSetTimer(1); } void OnTimer() { Comment(TOSTRING(TimeTradeServer()) + TOSTRING(TimeCurrent())); }どんな無意味なものでも見ることができます。日付にご注目ください。 Vitaly Muzichenko 2018.03.29 13:19 #750 fxsaber そして、端末と、設定が曲がったDCと、どちらが悪いのでしょうか? 1...686970717273747576777879808182...247 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
土曜日にEAをチャート上に置いたのですが、EAは最後のティックの時間を取得することができ、それは例えばマーケットウォッチでは23:58で、私のローカル時間は04:45です。サーバーの時間はわかりません。
質問は、最後のティックからサーバー時刻(端末時刻)までの経過時間です。
しばらく考えた。EAをチャートに貼り付けても差がないことがわかりました。リアルティックがないうちは、プログラムアルゴリズムのうち、サーバーの リアルタイムを使う部分を実行することができない。
ティックが到着する前に計算が必要な場合は、ServerGMTOffsetを要求する。
そのため、ServerTradeTime()が無くても問題は解決します。
少し考えてみました。EAをチャートに貼り付けても差がないことが判明。リアルチックがない以上、プログラムアルゴリズムのうち、リアルサーバーの時間を使う部分は実行できない。
ティックが到着する前に計算が必要な場合は、ServerGMTOffsetを要求する。
したがって、ServerTradeTime()が無くても問題は解決する。
ユーザーはサーバーのOffsetを知らないんだよ。
2つの値しかわかっておらず、このデータだけでは計算できない"最後のティックからサーバー(端末)の時刻までどれだけ時間が経過しているか "ということです。
これは非常に特殊な作業で、皆さんのように解決策が見当たりません。
土曜日にEAをチャート上に置いたのですが、EAは最後のティックの時間を取得することができ、それは例えばマーケットウォッチでは23:58で、私のローカル時間は04:45です。サーバーの時間はわかりません。
問題は、最後のティックからサーバー時刻(端末時刻)までの経過時間です
単なる時間ではなく、datetimeなのです。日付と時刻の両方が表示されます。つまり、このデータで算術演算すると秒単位の差が出るので、日、時、分、秒に換算するのは難しくない。
さらに、TimeTradeServerが 週末に何を表示するかを確認する必要があります。
サーバー時刻と現地時刻のズレに注意し、さらに現地時刻と推定サーバー時刻の完全一致を確認する。トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
mql4言語の特徴、微妙なニュアンスとコツ
fxsaber さん 2018.03.29 14:32
このコードをFX用に作り直すこともできます
ありがとうございます、見てみます。でもって、FX以外のシンボルもある。
不便なのは、現在のサーバーの時刻を、どの時点でも、簡単に取得できないことです。
どちらも単なる時間ではなく、datetimeである。つまり、日付と時刻の両方が表示されます。つまり、これらのデータを使った算術演算では、日、時間、分、秒に換算することは難しくなく、秒の差が得られることになる。
さらに、週末にはTimeTradeServerが 何を示しているかを確認する必要があります。
サーバー時刻の秒数とローカル時刻のズレに注目し、ローカル時刻とサーバー時刻の計算が完全に一致することを確認します。同じように印刷したのですが、週末には使えません。一般に、情報はテストされるべきものである。
タスクは「最後のティックからサーバー(端末)の時刻までどれだけ時間が 経過しているか」という最小限のものである。
ありがとうございます、見てみます。でもって、FX以外のシンボルもある。
ブローカーが少なくとも1つのFXシンボルを持っている場合、それは他の人にも有効である。
ブローカーがFXのシンボルを1つも持っていない場合、合理性の問題が生じます。
ありがとうございます、見てみます。でもって、FX以外のシンボルもある。
現在のサーバーの時刻を、いつでも簡単に取得できないのは不便です。
私もプリントしていますが、週末にどう使うか。一般的には、提供された情報を回転させる必要があります。
タスクは「最後の刻みからサーバー(端末)の時刻までどれだけ時間が 経過しているか」という最小限のものです。
もちろん確認は必要ですが、TimeCurrentとTimeTradeServerの 差から判断すると、その差は大きく なることが想定されます。
MQ-demoのサーバーの時刻が モスクワと同じかどうか教えてください。
確認する価値はありますが、TimeCurrentとTimeTradeServerの差から、その差は広がる ことが予想されます。
MQ-demoのサーバー時刻が私のモスクワ時刻と同じかどうか、またサーバー時刻が私の現地時刻と同じでない場合、どのように表示されるか教えてください。
ロボ
私の現地時間は17時17分13秒でした
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
fxsaber, 2017.05.19 22:35
TimeTradeServerは、あらゆる種類の無意味なものを返すことができます。例えば、TimeCurrentより小さい値。これでは、実用化は全く不可能です。
もし私の考えが正しければ、TimeTradeServerはTimeCurrentを受け取った後に経過時間を計算し、この差を加えることで、将来のTimeCurrentの値をエミュレートするようなものです。
さて、Expert Advisorを実行したところ
どんな無意味なものでも見ることができます。
日付にご注目ください。
そして、端末と、設定が曲がったDCと、どちらが悪いのでしょうか?