どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 557

 
GSB:

私は原則に異存はありませんが、その人はExpert Advisorをテスターで動かしたいので、あなたのオプションは彼に合いません。

テスターでも実機でも動作しますが、サマータイムを自動的に考慮する機能ができるまで、今年の移行時間を以下のように定義してください。

2013年3月から2014年11月までは正常に動作し、テストされます。ブローカーに応じてシフトを設定する


テスターで時間が発生すると書いてあるところは見ません、自分で分かっているはずです。しかし、ヘルプには具体的に次のように書かれています。

 var2=StrToTime("17:35");      // возврат текущей даты с указанным временем

一方、StringToTime()については 特に何も書かれていない。

考慮すべきは、(DCサーバーの)テスターの時間だけです。また、それに伴い、テスト時にはこのフクロウが動作するのと同じ種類のアカウントの履歴が必要です。

 
AlexeyVik:


テスターで時間が生成されるってどこに書いてあるのか調べる気もない、自分でわかってるだろ。しかし、ヘルプには具体的に次のように書かれています。

一方、StringToTime()については特に何も書かれて いない。

考慮すべきは、(DCサーバーの)テスターの時間だけです。そのため、テストを行う際には、このフクロウが動作するのと同じ種類のアカウントの履歴が必要です。


Alexeyさん、私はStrToTime()という関数についての質問はしていません。 質問は違います。正しい時刻を返してくれますが、今日の21時間は3月9日の22時間前です。そのため、ブローカーのサマータイムを正しく考慮した関数を作成しました。

エキスパートアドバイザーは、いくつかのタイムスケジュールに従って動作している場合、それなしではテストすることは不可能である。すべてが1時間ずつずれる。実際の取引では問題ないのですが、テスターでは問題があります。以前からタイムシフトを計算する機能を使えるようにしてほしいと開発者に要望していました。TimeGMT()を実装しているが、ローカルタイムと コンピュータのタイムゾーンに縛られている。そして、ブレーカーシフトが必要なのです。そして、彼らの夏時間は私たちの夏時間とは異なります。ブローカーは11月の第一日曜日と3月の第二日曜日、ロシアは10月の最終日曜日と3月の最終日曜日にシフトします。だから、今のところ自分で関数を書くしかない。

 
GSB:

私は原則に異存はありませんが、その人はExpert Advisorをテスターで動かしたいので、あなたのオプションは彼に合いません。

私のバリアントを使用して、それは、実際のテスターの両方で動作しますが、彼らは自動的にアカウント夏時間を取るために機能を作っていないまで、今年のように移行の時間を決定します。

2013年3月から2014年11月までは正常に動作、テストされます。ブローカーに応じたシフトを設定

ありがとうございます、結果をお知らせします。
 

現在の金曜日と3月8日以前の金曜日の最後のバーの時間をチャート< h4>で確認する必要があります。もしこれらの時間が一致するならば、hrd値は一定で、冬と夏の時間変化に依存しないので、すべてが単純で、冬と夏の時間変化に関係なくテスト中に正しく動作する。

datetime tc=TimeCurrent();
datetime te=StrToTime("20:45");                    //   время конца сессии по котировкам брокера минус 15 минут или сколько вам надо до конца сессии
if(TimeDayOfWeek(tc)==5 && tc>te) {  CloseAll(); } //    закрытие пятницу позже указанного времени 

が、この2つの時間が違う(1時間違う)場合は、先に書いたとおりです。

 
GSB:

M1チャートで現在の金曜日と3月8日前の金曜日の最後のバーの時刻を確認する必要があります。もしこれらの時間が一致するならば、hrd値は一定で冬夏時間の移行に依存せず、すべてが単純で、冬夏時間の移行に関係なく、テスト中に正しく動作することになります

が、この2つの時間が違う(1時間違う)場合は、先に書いたとおりです。


なぜコードに15分という時間があるのでしょうか。つまり、セッション終了の15分前にポートフォリオがシフトし始めると言いたいのでしょうか。 確かにfreschのmt4でそのような瞬間に気づきましたし、いくつかの通貨ペアで良いレベルを見ることができました。
 

例えば、セッション終了の1分前でも取引を終了させたい。週末に注文を残しておくと、月曜日の始値が 100、200、あるいはもっとpips跳ね上がることがあるからだ。

まだテストしていません。 今日中にテストします。

 
ブローカーがロシアにあり、私がウクライナにいる場合、夏時間や冬時間の切り替えはなく、私にもサーバー時間の切り替えはなく、現地時間のみ なのでしょうか?
 
GSB:

まあこれはテスターでは動かないはずなのですが。

関数は現在時刻を基準にしており、TimeCurrent()とTimeDayOfWeek()が正しく動作するため、上に書いたものは動作します。夏時間・冬時間の切り替え機能、すなわちパラメータhrdを追加するだけです。切り替えは通常、アメリカのサマータイム(11月第1日曜日 3月第2日曜日)に合わせて行われますが、切り替えを行わないブローカーもありますので、その際は


仮定は抜きにして、単純にStrategy TesterでExpert Advisorを動かして見てみました。動作して終了します。

 
belck:
私のブローカーがロシアにあり、私がウクライナにいる場合、夏時間や冬時間の変更はありません、その後、私のブローカーで夏時間の切り替えがないことが判明し、現地時間のみ?

ブローカーとあなたの現地時間を比較する必要はありません。いくら時計を動かしても、チャート上のブローカーセッションの終了時刻は変わりません。3月8日~9日のブローカーの夏時間 相場への移行についての 質問でしたが、やっているブローカーとやっていないブローカーがあるとのことでした。

3月9日前後の最後のバーの時間のチャートを見て、同じなら最後のシンプルなオプションを使い、1時間違えばより複雑なオプションを使う、と書きました。

 

みんな、脱帽です :)DayOfWeek() TimeDayOfWeek(datetimedate) と同様の数式は、テスターではどちらも正しく動作します。Testerは処理するティックの時間をモデル化しているため、最後の既知のサーバー時間を 取るDayOfWeek()も動作するのです。より正確には、TimeDayOfWeek(dt1) を使用します。

一般的にはすべて正しいのですが、あとは上に書いたように、ブローカーが冬時間から夏時間に移行する時期があれば、それを考慮することです。