時間を指定して売買する

 MetaTrader4(MT4)では、プログラムを記述することによって、時間指定注文を出す(=特定の時間を指定して発注する)ことで、時間を指定して売買することができます。

 そこで、五十日(ごとおび)に売買するEA(Time Limit Trade.mq4)を具体例として、MT4において時間指定注文を出すためのプログラムについて解説します。

 なお、五十日とは、毎月5日、10日、15日、20日、25日、30日又は月末のことで、当該日には企業の支払いが集中し、国際的な決済通貨であるドルの需要が高まり(=ドル高)、仲値公示日本時間午前9:55に向けて円安に向かいやすいといわれています。

  1. 売買の概要
  2. 全体像
  3. #property命令の記述
  4. 変数の宣言
  5. 関数の定義
  6. 初期設定の記述
  7. 具体的な売買ロジックの記述
  8. 時間指定注文を出すことのできるFX業者
  9. 関連ツール
  10. 関連EA

1.売買の概要

 上述のように、五十日においては、仲値公示(日本時間午前9:55)に向けて円安に向かいやすいといわれていることから、以下のような内容の時間指定注文を出すようにします。

  • エントリー
    五十日(=5日、10日、15日、20日、25日、30日)における日本時間午前9:30に成行で買いエントリーする。
  • クローズ(決済)
    エントリーと同一日の日本時間午前9:50に成行で決済する。
  • ポジション数
    取引するポジション数は「1」とする。
  • 時間軸
    5分足チャートを使用する。

>>目次に戻る

2.全体像

 MT4でEAを作成するには、以下の手順に従ってプログラムを記述していくことになります。

  1. #property命令を記述する。
  2. 変数の宣言を行う。
  3. 関数の定義を行う。
  4. init()関数内にEAの初期設定を記述する。
  5. start()関数内に具体的な売買ロジックを記述する。

 具体的には、以下のようになります。

Download (PDF, 595KB)

>>目次に戻る

3.#property命令の記述

 「Time Limit Trade.mq4」においては、以下のように記述して、著作権と関連HPのURLを指定しています。

copyroght and HP
著作権と関連HPのURLを指定

 #property命令の詳細については「こちら」を参照してください。

>>目次に戻る

4.変数の宣言

 変数の詳細については「こちら」を参照してください。

 「Time Limit Trade.mq4」においては、以下のように変数を宣言しています。

Declaration of Variable in Time Limit Trade
変数の宣言

 各変数の意味は、以下のとおりです。

  • Magic
    マジックナンバー(=EAを識別するための整数値)を格納します。
  • Open_Hour
    エントリーする時間」(取引サーバーを基準とする)を格納します。
    具体例では、初期設定を「3」としていますが、これは、「XM」のMT4のサーバー時間を基準としています。
  • Open_Minute
    エントリーする」を格納します。
  • Close_Hour
    決済する時間」(取引サーバーを基準とする)を格納します。
    具体例では、初期設定を「3」としていますが、これは、「XM」のMT4のサーバー時間を基準としています。
  • Close_Minute
    決済する」を格納します。
  • Lots
    取引するロットサイズを指定します。
    MT4では、通常、1ロットは10万通貨を意味します。
  • Slippage
    許容スリッページ数を格納します。
  • Comments
    エントリー注文に付加するコメントを格納します。
    コメントは、「ターミナルウィンドウ」の「取引」タブで確認することができます。
  • Ticket
    エントリー注文が約定した際に、ポジションに付される整数値(=チケット番号)を格納します。
  • Adjusted_Slippage
    AdjustSlippage()関数によって調整された許容スリッページ数を格納します。
  • Bar_Time
    バーの形成開始時刻を格納します。
  • Closed
    保有ポジションの決済処理が正常に行われたかどうかの結果を格納します。

>>目次に戻る

5.関数の定義

 関数の詳細については「こちら」を参照してください。

 「Time Limit Trade.mq4」においては、以下のように関数を定義しています。

Definition of Function in Time Limit Trade
関数の定義

 AdjustSlippage()関数の詳細については「こちら」を参照してください。

>>目次に戻る

6.初期設定の記述

 「Time Limit Trade.mq4」においては、AdjustSlippage()関数を使用しますが、当該関数による処理は、EAをチャートに適用した際に、最初に一度だけ実行されれば足りるものなので、init()関数内に以下のように記述します。

Initialization Function in Time Limit Trade
初期設定の記述

 init()関数の詳細については「こちら」を参照してください。

>>目次に戻る

7.具体的な売買ロジックの記述

 「Time Limit Trade.mq4」における具体的な売買ロジックの記述は、以下のようになります。

Download (PDF, 271KB)

  • start()関数の詳細については「こちら」を参照してください。
  • if()文の詳細については「こちら」を参照してください。
  • return(0)の詳細については「こちら」を参照してください。

⑴ 始値か否かのチェック

 「Time Limit Trade.mq4」は、5分足チャートの始値のみで取引するので、以下のようなコードを記述して、EAが始値のみで稼働するようにしています。

Open Only
具体例

 上記コードの詳細については「こちら」を参照してください。

⑵ クローズ処理

 「Time Limit Trade.mq4」におけるクローズ処理に関するコードは、以下のようになります。

Position Close Logic
クローズ処理

 上記コードの解釈を示すと、以下のようになります。

ア ポジションを保有していることを確認

 OrdersTotal()関数を使用して、ポジションを保有していることを確認しています。

  • OrdersTotal()関数の詳細については「こちら」を参照してください。
イ 注文を選択

 OrderSelect()関数を使用して、「Time Limit Trade.mq4」によって取得したポジションを選択しています。

  • OrderSelect()関数の詳細については「こちら」を参照してください。
ウ 決済条件

 if()文内のコードの解釈は、以下のようになります。

 「日にちが5、10、15、20、25、30のいずれかで」かつ「時間がClose_Hourで指定した値と等しく、かつ、分がClose_Minuteで指定した値と等しく」かつ「選択した注文が未決済」だったら

  • Day()関数の詳細については「こちら」を参照してください。
  • Hour()関数の詳細については「こちら」を参照してください。
  • Minute()関数の詳細については「こちら」を参照してください。
  • OrderCloseTime()関数の詳細については「こちら」を参照してください。
エ 決済する

 OrderClose()関数を使用してポジションを決済し、正常に決済されたら、変数TicketとClosedを初期化するようにしています。

  • OrderClose()関数の詳細については「こちら」を参照してください。
  • OrderClosePrice()関数の詳細については「こちら」を参照してください。

⑶ エントリー処理

 「Time Limit Trade.mq4」におけるエントリー処理に関するコードは、以下のようになります。

Entry Logic
エントリー処理

 上記コードの解釈を示すと、以下のようになります。

ア ポジションを保有していないことを確認

 OrdersTotal()関数を使用して、ポジションを保有していないことを確認しています。

  • OrdersTotal()関数の詳細については「こちら」を参照してください。
イ エントリー条件

 if()文内のコードの解釈は、以下のようになります。

 「日にちが5、10、15、20、25、30のいずれかで」かつ「時間がOpen_Hourで指定した値と等しく、かつ、分がOpen_Minuteで指定した値と等し」かったら

  • Day()関数の詳細については「こちら」を参照してください。
  • Hour()関数の詳細については「こちら」を参照してください。
  • Minute()関数の詳細については「こちら」を参照してください。
ウ エントリーする

 OrderSend()関数を使用してエントリーし、チケット番号を変数Ticketに格納しています。

  • OrderSend()関数の詳細については「こちら」を参照してください。
  • Symbol()関数の詳細については「こちら」を参照してください。

>>目次に戻る

8.時間指定注文を出すことのできるFX業者

FX取引ならヒロセ通商へ

 時間指定注文を出すことのできるFX業者としては、「ヒロセ通商【LION FX】」があります。

 「ヒロセ通商【LION FX】」では、以下のような時間指定注文を出すことができます。

  • 時間指定成行注文
    時間指定成行注文とは、指定した時間に成行注文を出して、新規エントリーしたり保有ポジションを決済したりするものです。
  • 時間指定指値注文
    時間指定指値注文とは、保有ポジションの指値決済注文に時間指定を付加し、指定した時間までに相場レートが指値で指定したレートに達すれば、当該指値で決済し、達しなければ、指定した時間で成行決済するものです。
  • 時間指定逆指値注文
    時間指定逆指値注文とは、保有ポジションの逆指値決済注文に時間指定を付加し、指定した時間までに相場レートが逆指値で指定したレートに達すれば、当該逆指値で決済し、達しなければ、指定した時間で成行決済するものです。

FX取引ならヒロセ通商へ

>>目次に戻る

9.関連ツール

MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!
『EAつくーる』
『EAつくーる』 | fx-on.com

『EAつくーる』
『EAつくーる』 | fx-on.com

 上記ツール(EAつくーる『EAつくーる』 | fx-on.com)の詳細については「こちら『EAつくーる』 | fx-on.com」を参照してください。

>>目次に戻る

10.関連EA

日本時間の朝の動きに注目しました。
Morning_Limited
Morning_Limited | fx-on.com

Morning_Limited
Morning_Limited | fx-on.com

 上記EA(Morning_LimitedMorning_Limited | fx-on.com)の詳細については「こちらMorning_Limited | fx-on.com」を参照してください。

ごとうびの早朝にエントリーするシンプルなモデルのEA
ごとうびエントリー
ごとうびエントリー | fx-on.com

ごとうびエントリー
ごとうびエントリー | fx-on.com

 上記EA(ごとうびエントリーごとうびエントリー | fx-on.com)の詳細については「こちらごとうびエントリー | fx-on.com」を参照してください。

>>目次に戻る


MT4の使い方からプログラミングまで、わかりやすく解説