仕掛け時間帯指定機能

アイキャッチ

最大3つまで仕掛けの時間帯を指定できる

※2016/8/6 kumaさんのご指摘でcalcTimeDifference()に不具合があることが判明。修正しました。

○時~○時までの間は仕掛けたいが、それ以外の時間帯は仕掛けたくない(EAを稼働させたくない)ことがしばしばあります。これを実現する機能が仕掛け時間帯指定機能です。

サマータイムを考慮した自動GMT設定関数を使って、仕掛け時間帯指定機能を実装してみようと思います。

書籍では○時~○時を1つだけ指定できるものが殆どです。しかし、ロンドン時間とニューヨーク時間の2つの時間帯でEAを稼働させたいシーンってあると思うんですよ。

というわけで、○時~○時を最大3つまで指定できる仕掛け時間帯指定機能(例えば、6:00~9:00、16:00~19:00、21:00~0:00)を紹介します。

EA全体で機能を実装するため、サンプルEAを直接掲載します。

以下のパラメータの記述により仕掛け時間帯を設定できるようになります。1~3のそれぞれに有効フラグを設けることで、機能のon/offを簡単に切り替えられるようになっています。

続いて、OnInit()で有効フラグが何本立っているかカウントしておきます。有効フラグが3本立っている場合で、現在時刻がいずれの仕掛け時間帯にも含まれなかった場合、仕掛け不可と判断するのに利用します。

そして、OnTick()で現在時刻が仕掛け時間帯かどうかを判断し、NOなら仕掛けを不可とし、以降の仕掛け処理をスキップします。

convertLocalToServerTime()関数はローカルタイムをサーバタイムに変換する自作関数です。isOverTime()関数も自作関数で、現在時刻が仕掛け時間帯かどうかを教えてくれます。

if(overCnt == gEntryTimeFlgTrueCnt)の部分が理解しにくいかもしれませんが、一番重要な部分です。言葉でごちゃごちゃ説明されるより、このEAを実際に動かして何をしているのか確認してみてください。その方がずっと理解が深まりますので。

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

  にほんブログ村 為替ブログ FX システムトレード派へ

2件のコメント

  • bakabon

    MQL言語を始めたばかりの初心者です。
    素晴らしいサイトに感激で、早速上をぽちらせて頂きました。

    サンプルEAをデバッグモードで起動させると下記の行で終了してしまいます。

    784 // GetTimeZoneInformation()関数はWindows API
    785 int tzType = GetTimeZoneInformation(timeZoneInfo);

    Windows API 用に何か設定する必要があるのでしょうか?

    \Indicators\Original 配下に
    Application.mph
    Basic.mqh
    DateAndTime.mqh
    OrderHandle.mqh
    OrderReliable.mqh
    は配置しております。

    • りゅーき

      いくつか確認させてください。
      終了してしまうとのことですが、エラーメッセージは出力されていますか?
      出力されているなら、どのようなエラーメッセージですか?
      kernel32.dllはPC内(C:\Windows\System32)に存在しておりますか?

コメントを残す



1 × 4 =