通貨ごとの総ポジション数をスマホに通知するEA|無料シリーズ

2018年11月15日

自由な人

MT4/MT5で自動売買していると、同じ通貨の同じ方向に大量のポジションを持ってしまうことがありませんか?

せっかく沢山のEAでポートフォリオを組んでいても、複数のEAが同じ方向にポジションを取ってしまっては意味がありません。(想定通りの動きであれば問題ないですが。)

気づいたら6ポジション全て同じ方向にエントリーしていて、それぞれ数十ピップスの含み損・・・もっと早く気づいていれば・・・というパターンもあります。

 

そこで、ポジション数を通知するEAを作成しました。

EAと言ってもポジション数を確認するのみなので自動売買は行いません。

このEAを使えばポジション数が異常な場合は随時通知されるので、早期に手動決済やいくつかのEA停止などの判断ができるようになります。

 

※ここで紹介するプログラムはまだMT5には対応していませんので、MT5をお使いの方はもう少々お待ちください。

 

プログラムの仕様

通知条件

一定時間ごとに通知しますが、毎回通知されるのは逆に邪魔になる可能性があるので、設定したロットを上回った場合のみ通知するようにします。

例えば、ロット上限を0.5に設定しておけばUSDJPYのBuy方向に合計で0.5ロット以上のポジションを持った場合に通知されます。

 

時間とロットの上限はEAのセットアップ時に設定可能です。

 

通知方法

スマホへの通知はMT4の標準機能である、プッシュ通知を利用します。

 

プッシュ通知

簡単に設定方法を記載しますが、設定済みの方は読み飛ばしてください。

 

スマートフォンにMT4をインストールします。

次に設定画面を開きます。

MT4のスマホプッシュ通知設定

上記の水色部分に記載されているIDをメモします。

 

PC側のMT4を開いて、「ツール」→「オプション」→「通知機能」タブ選択。

同じく以下の水色部分にメモしたIDを設定します。

※「プッシュ通知機能を有効にする」は必須でチェック

※「トレード処理を通知する」は任意でチェック

MTのプッシュ通知設定

 

メール通知

今回は利用しませんが、念のためメールの通知設定も載せておきます。

「テスト」をクリックして「宛先」に設定したメールアドレスにメッセージが届けばOKです。

MTのメール通知設定

 

 

通知イメージ

各通貨の各ポジションごとにロット数を集計したものを通知します。

例:
[通貨名1] | buy=1.23ロット | sell=0.24ロット

[通貨名2] | buy=0.30ロット | sell=0.00ロット

 

ポジション数を確認できる通貨の数

プログラムを簡易にするため、5通貨までとします。

 

ダウンロード

こちらのページで「Download」ボタンをクリックしてプログラムをダウンロードしてください。

ダウンロードしたファイルを「Experts」フォルダに配置します。

Expertsフォルダの場所が分からない方は先に、「初心者でも分かる!MT4/MT5のプログラミング入門|MQL入門(1回目)」をご確認ください。

 

使い方

適当なチャートにプログラムをドラッグ&ドロップします。

このEAは一定間隔で動作するものなので、選択する通貨やタイムフレームはどれを選択しても構いません。

 

チャートに適用したら、「全般」タブを選択して、下図の赤枠の通り不要なチェックを全て外してしまいましょう。

EA設定画面(全般)

 

次に「パラメーターの入力」タブを選択します。

EA設定画面(パラメタ入力)

 

1つ1つ項目の意味を説明します。

変数 設定値の例
ポジションを確認する間隔 600~7200
秒単位なので1時間にしたい場合は3600とします。
検証用に60秒(1分)でテストしますが、基本的には600秒以上が推奨値です。
利用する通貨の数 1~5
currency_1~5で設定した通貨の数と同じ数値を入力してください。
ロット上限 通知の際に使うロットの上限値です。
currency_1~5 USDJPY
USDJPY.
USDJPY.oj5k
各業者によって異なります。

currency_1~5の設定値は各業者ごとに異なりますので、以下画面のようにMT4の気配値表示のところに記載されている通貨ペア名を入力してください。

ドット付きの通貨ペア名

 

動作確認をしたいので、自分の好きな値に設定して「OK」をクリックしてください。

今回は60秒間隔、5通貨設定、ロット上限0.2としました。

EA設定画面(パラメタ値の入力)

 

動作検証用に購入しておいた通貨の状態は以下です。(デモ口座なのでかなり適当にエントリーしました。)

MTでエントリーした結果の確認

USDJPY

買い(合計)・・・0.07ロット

売り(合計)・・・0.15ロット

 

GBPUSD

買い(合計)・・0.22ロット

売り(合計)・・・0.06ロット

 

[結果確認]
赤枠部分以外は事前のテストで利用したものなので無視してください。

MT4のスマホプッシュ通知状況確認(1回目)

0.2ロットを超えているのはGBPUSDのbuyのみなので、想定通り通知されました。

0.2ロットを超えているのはbuyのみにもかかわらず、sellも一緒に通知しているのはbuy/sell両方が通知された方が、より正しい判断ができると考えたためです。

 

次にEURUSDを0.5ロット売りました。

MT4のスマホプッシュ通知状況確認(2回目)

問題なく通知が行われました。

 

正規の設定に変更する

先ほどまでの設定はあくまでも動作確認用です。

例えば今回の設定では60秒間隔の0.2ロット上限としましたが、これでは0.2ロット以上を持ち続ける限りひたすら1分間隔で通知されてしまいます。

とんでもない異常値なら1分単位でチェックするべきですが、ある程度の値であれば600秒(10分)~7200秒(2時間)で良いかと思います。

例えば以下のような設定をします。

EAのパラメタ設定を正規の設定に戻す

 

今後の拡張性

同一通貨の同一方向に想定以上のロットが張られれば、異常事態と考えることができます。

その場合は、「全通貨を総合して損益ゼロになったタイミングで自動で全ての建玉を決済してしまう。」ということも可能です。

 

また、USDJPYのbuyというグルーピングではなく、相関のある程度強い通貨はまとめて1つのグループにして管理することもできます。

単純に「EURJPYのbuy」と「GBPJPYのbuy」を同一グループにしたり、「USDJPYのbuy」、「EURUSDのsell」を同一グループにすることも可能です。

 

最後に

ポジションの確認方法は色々ありますが、タイムリーに必要な情報だけを受け取るという意味では、今回のようなEAが役に立つのではないかと思います。

市販EAを自動で完全にコントロールするのは難しいですが、自作EAであれば全てを自動でコントロールできます。

 

自動売買に興味がある方は以下の記事もご覧ください。

自動売買の選択肢を考える(第3回)

メタトレーダー(MT4/MT5)で自動売買するための事前準備(第1回)