MT4でマルチ通貨ストラテジーは可能か?

最近、色々な方からEAやインジケータの開発依頼を頂く様になったのですが、

・MT4のEAで複数通貨に対して一括して売買を行いたい
・複数の通貨ペアの情報を取得して指標を作り、その結果を元にした売買ロジックをMT4で作りたい

というご要望が結構多いです。

こういったものを総称してマルチ通貨ストラテジーと呼んでいますが、
今回はその実現性についてまとめたいと思います。

スポンサーリンク

結論

から先に申し上げると、「MT4での実装は非常に難しい」です。

できなくはありませんが、いくつかの課題があり、実装、検証に困るケースが多くあります。

バックテストが出来ない

これが致命傷と言っても良いのですが、
プログラム開発を行っても、その動作検証や性能検証のために行うバックテストが正常に動作しません。

例えば、チャートの通貨ペアに USDJPY を指定し、USDJPY, EURUSD に対して注文を発行するようなEAがあったとします。
このEAをストラテジーテスターで実行しても USDJPY 分の注文しか結果が表示されません。

ではEURUSD に対する注文がどうなるかというと、

   int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
   if(ticket<0)
     {
      Print("OrderSend failed with error #",GetLastError());
     }
   else
      Print("OrderSend placed successfully");

注文用の処理 OrderSend のエラーをGetLastErorで取得してみると、

[OrderSendError] : 4106 unknown symbol

というエラーが発生します。

こういったEAは、複数通貨ペアの合計の成績をもって総合的に評価したいところですが、
1通貨ペア分の結果だけでは適切な判断が下せません。

インジケータ値が正しく取得できない

通貨強弱系のインジケータなど、複数通貨ペアのレート情報を元に指標を作り出すようなインジケータを元に
売買ロジックを作成したい場合。

これもバックテストではインジケータ値が正しく取得できません。

ストラテジーテスターでは、 fxtファイルという疑似的なTick情報を保有したレート情報を元にバックテストが実行されます。
([mt4_root]\tester\history\ 配下に作成されます)

通常、指定した通貨ペアのfxtファイルがローカル環境に存在しない場合、一定範囲が自動でダウンロードされますが、
インジケータが参照する通貨ペア分のfxtファイルが自動で生成されるかというと、生成されません。

色々試した結果、 インジケータが参照しているのは fxtファイルではなく .hstファイル(チャート上に表示されるレート情報を持つファイル)
を参照していることが分かり、(とある通貨強弱系インジケータでの確認結果のため、全てにおいて同一仕様であるかは不明ですが)
関連する通貨ペアの.hstファイルの用意が必要ですが、
既成品のインジケータによっては、どの通貨ペア/期間を参照するのか不透明なこともあり、
自分が必要であろうと思った.hstファイルを集めても本番の値通りにならないこともあります。

通貨ペア情報が取得できない

やむを得ず、無理やり実装しようとするならば
各通貨ペアのレート情報を取得し、Bid値とAsk値が取得できるならば
それらを元に内部的に売買レートを判定し、ファイルなどに結果を出力する方法も考えられますが、

iClose, iOpenなどのレート取得関数で取得できるレートは Bid値のため、これをAsk値へ変換するため
スプレッド情報を取得するべく

MarketInfo("EURUSD",MODE_SPREAD)

とすると、、

なんと、これもストラテジーテスター上で動作箚せた場合、チャート指定通貨以外の値が取得できません。。

つまり、外部からスプレッド情報を与えてあげないと、Ask値ひとつ満足に取得できません。

まとめ

総合的に見て「労力に見合わない」不毛な実装を沢山すればやれなくもないのですが、
本来のビジネスロジックを作り込む以外の部分(付帯作業的なもの)に多くの時間と費用をかけるのは
非常にもったいないと思うのです。

対応策

MT5を使う

素直に、MT5でEAを実装する方法がお勧めです。

MT5はストラテジーテスターにおいてもマルチ通貨対応がされており、従来MT4で抱えていた問題は全てなくなります。

A.マルチ通貨に対して売買を同時に行う
→このケースは、MT5で実装するのが最も早く、簡単です。

B.複数の通貨ペア情報を使用したインジケータを元に売買を行う
→インジケータをMT5に対応させ、その上でEAもMT5で開発するのが理想的です。
MT4インジケータのソースコードがあれば、MT5へ移行することは可能ですが、
Marketplaceで販売されているようなインジケータでMT4版しかないような場合、前者よりは対応難易度が上がります。
(開発者にMT5版のリリースを要望するくらいですかね)

 

MT5での実装例

スポンサーリンク

MT5が利用可能な証券会社

海外FX業者に目を向けると、既に多くの証券会社で利用できます。

※国内証券会社は軒並み対応していませんが、個人的には国内FX業者を選択するメリットが薄れてきているので
あまり気にする必要はないと思います

マルチ通貨で売買する場合は、同時に多くの通貨へ売買注文をするため必要証拠金も多くなりがちですが、
海外FX事業者では

ハイレバレッジに対応している
ゼロカットにより、ハイレバレッジ運用時のリスクを低減できる

といったメリットがありますので、海外FX + MT5 での運用は、とても理にかなっています。

特に XM では、最大888倍のレバレッジで運用ができるだけでなく、ボーナスクレジットによって入金額以上の運転資金で運用できるメリットも受けられます。

マルチ通貨ストラテジーを試したいと思った場合は、無理にMT4で実装せずMT5の利用も検討してみて下さい。

 

MT5を使用したEA、インジケータの開発依頼もお受けしておりますので、
ご要望がありましたらお問い合わせ下さい。

関連記事


								
スポンサーリンク
おすすめの記事