記事「時間の取扱い(第2部): 関数」についてのディスカッション

 

新しい記事「時間の取扱い(第2部): 関数」はパブリッシュされました:

証券会社のオフセットとGMTを自動で特定します。おそらく不十分な答えしかくれない(欠如した時間について説明することはいとわないでしょうが)証券会社にサポートを求める代わりに、時間が変わる週に証券会社が価格をどのように計算するかを自分で見ます。結局のところ、私たちはPCを持っているので、面倒な手作業ではなくプログラムを使用します。

インクルードファイル(DealingWithTime.mqh)で、関数の前(およびマクロ置換の後)に必要な変数をグローバル変数として宣言します。

//--- global variables for time switches
int      DST_USD=0,                             // act time shift USA
         DST_EUR=0,                             // act time shift EU
         DST_AUD=0,                             // act time shift Australia
         DST_RUS=0;                             // D'2014.10.26 02:00', -10800,

DST_USD、DST_EURなどの変数には米国、EUなどの実際の時刻のシフトが格納されます。これらは、関数によって更新および設定されます。通常時刻である冬時間では、それらはゼロです。時間はその期間にはシフトされません。

その後、次に時刻の切り替えが行われるときを示す変数があります。これらは主に、CPUリソースを節約するために新しい計算がいつ必要になるかを知るために必要です。

datetime nxtSwitch_USD,                         // date of next switch
         nxtSwitch_EUR,                         // date of next switch
         nxtSwitch_AUD,                         // date of next switch
         nxtSwitch_RUB = D'2014.10.26 02:00';   // Russia s different :(

この記事の後半ではロシアでの状況を検討します。

作者: Carl Schreiber

 
私たちは、すべてのフォックス・トレーダーに実際の値を紹介し、表示することを望んでいる。
 
我々は、表示するために、すべての私達のキツネの貿易に実際の値を導入することをいとわない
 

こんにちは、

記事を読んで理解したのですが、"setBokerOffset() "という関数はストラテジーテスターでも 動作するはずなのですが、動作しません。

void OnTick()
  {
//---
   bool isTimeSet = setBokerOffset();
   if(!isTimeSet)
     {
      Alert("setBokerOffset failed");
      return;
     }
  }
array out of range in 'DealingWithTime.mqh' (201,21)


ストラテジーテスターで正しいタイムを得るには、「入力変数を使った代替方法」しかないのでしょうか?

 
Nauris Zukas ストラテジーテスターでも 動作するはずなのですが、動作しません。


ストラテジーテスターで正しいタイムを得るには、「入力変数を使った代替方法」しかないのでしょうか?

ストラテジーテスターが引用符を取得しておらず、previous.CopyTime()が失敗したのだと思います。要求されたデータと必要なデータがすでにローカルで利用可能かどうかを確認してください。
 
Carl Schreiber #:
ストラテジーテスターが引用符を取得していないため、previous.CopyTime()が失敗したのでしょう。要求されたデータと必要なデータがすでにローカルにあるかどうか確認してください。

OK, CopyTime()をよく見て、解決してみます。

そして、ありがとうございました。とても役に立つ記事です!

 
良い記事だ。ブローカーやディーラーのテクニカル・サポートに問い合わせることなく、そのブローカーやディーラーが冬/夏から切り替わっていることを判断するにはどうすればいいのだろうか?
 
Nikita Chernyshov # :
良い記事だ。しかし、ひとつ問題がある。ブローカー/ディーラーがテクニカル・サポートに問い合わせることなく、冬/夏から切り替えていることをどうやって判断するのか?
  1. なぜ問い合わせないのか?
  2. ソフトウェアは、米国とEUの夏時間と冬時間を知っており、ブローカーのオフセットを計算するためにそれを使用しています。
 
Nikita Chernyshov #:
良い記事だ。ブローカーやディーラーのテクニカル・サポートに問い合わせることなく、そのブローカーやディーラーが冬/夏から切り替わっていることを判断するにはどうすればいいのだろうか?


.
Документация по MQL5: Дата и время / TimeDaylightSavings
Документация по MQL5: Дата и время / TimeDaylightSavings
  • www.mql5.com
TimeDaylightSavings - Дата и время - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:


.

はい、でもユーザーの時間設定に依存するので、あまりうまくいきません。しかも、テスターでモデリングする必要がある。

 
Carl Schreiber #:
  1. なぜ尋ねないのですか?
  2. このソフトウェアは、アメリカとEUの夏時間と冬時間を知っていて、それを使ってブローカーのオフセットを計算する。

1.サポートが常に正しい情報を提供するとは限らないからです。あなた自身がアルパリのディーラーについて指摘しました。+ 各ディーラーから移行を調べるのはオーバーヘッドです。エンドユーザーが誰と議論しているのか分からないのですから。

2.しかし、もしディーラーが冬から夏への移行を行わない場合、計算に奇妙なことが生じます。

私はあなたのライブラリを少し修正しようとしましたが、どうやら何かが間違っていたようです。このコードは、Expert Advisorが自動的にGMT時間を検出し、ブローカーのサーバーではなくGMT時間に従って取引することにつながるはずだと思いました。コードが最適かどうかはわかりませんが、解決策はうまくいったようです。しかし、時間を変更しないディーラーでは、不正確な計算が行われています。

ファイル: