• カテゴリー別アーカイブ MetaTrader5/MQL5
  • MT5ヘッジ口座用ライブラリ

    皆さん、こんにちは。

    前回の記事でもちょっと触れましたが、MT5のヘッジオプション機能が正式にリリースされました。MT5でも、MT4のようにオーダー毎にポジションが建てられるようになったようです。

    以下が日本語のリリース記事です。(タイトルは意味不明ですが・・・)

    MetaTrader 5取引プラットフォームはヘッジを獲得しました

    記事によると、これでMT5への移行は問題ない、と言わんばかりの書き方ですね。しかし、ポジションの扱いは見た目上、MT4と同じにはなりましたが、肝心のプログラミングの部分は相変わらず、互換性のないままです。これでMT5への移行が進むとは考えにくいです。

    ところで、拙著の『メタトレーダーではじめるFXシステムトレードプログラミング』は、MT4とMT5で同じソースプログラムが使えますよ、という本だったのですが、そういう需要がなかったせいか、あまり売れてはいないようです。

    ただ、私がEA作成用に利用しているのがこのライブラリなので、今回、MT5のヘッジ口座で使えるようなライブラリを作成してみました。

    ライブラリは、拡張子がmqhのヘッダファイルとして作成されています。解凍してできたファイルをMT5のデータフォルダの「MQL5\Include\MyLib」の下にコピーしてください。一応、黄色本のサンプルプログラム一式がインストールされていることが前提です。

    ヘッジ口座用のEAを作成するには、プログラムの最初に「#define HedgeAccount」を追加するだけです。下のように「#include」の前に記述します。

    この状態でコンパイルすると、ヘッジ口座用のライブラリを組み込んで実行ファイルが作成されます。EAの使い方はこれまでと同じです。「StartHistory」「RetrieveHistory」といった余計な変数がなくなったので、逆に見やすくなったかと思います。

    なお、ライブラリ関数の仕様は、黄色本に掲載したライブラリ関数と同じです。詳しい使い方については、黄色本を参照していただきたいと思います。但し、例によって本ライブラリを使用したことにより生じるいかなる損害に対しても著者は責任を負いません。自己責任でのご利用をお願いいたします。



  • 新MQL4のカスタム指標をMQL5に移植する

    皆さん、こんにちは。

    最近、MT5に関してちょっとした動きがありました。こちらのMetaQuotes社の記事です。

    MetaTrader 5にポジション計算のヘッジシステムが追加されました

    MT5はもともと同じ通貨ペアのポジションを合算して一つのポジションとして扱う方法を取っていました。これがMT4からの移行が進まない要因の一つでしたが、これを改め、MT4と同じようにオーダー毎にポジションが建てられるようにするオプションが追加されるそうです。

    まだベータ版で、正式な対応にはもう少し時間がかかるでしょうが、動向を注視したいと思います。これを早くやってくれれば、あの七面倒くさいライブラリ作らなくて済んだのに・・・

    ところで、今回の記事は上記のMT5の動きとは直接は関係ありません。新MQL4のプログラムをMQL5に移植する際の注意点についてお話しします。

    まず、『新MT4対応 FXメタトレーダープログラミング入門』に掲載しているカスタム指標のサンプルプログラムの簡単なものを見てみます。

    これは、各バーにおける4本値の平均をプロットするカスタム指標です。特に意味はありません。

    これをMQL5に移植してみましょう。まずは、ファイルの拡張子を「mq4」から「mq5」に変えてMT5のデータフォルダの「MQL5\Indicators」の下にコピーします。すると、MT5のメタエディターで開くことができるので、そのままコンパイルしてみましょう。

    すると、こんなエラーが出ます。

    ‘Open’ – undeclared identifier
    ‘High’ – undeclared identifier
    ‘Low’ – undeclared identifier
    ‘Close’ – undeclared identifier

    MQL4では、4本値の配列が「Open[]」「High[]」「Low[]」「Close[]」という配列としてあらかじめ定義してあるので、それをそのまま使えばよかったのですが、MQL5ではそれがありません。

    ここでは、OnCalculate()関数の引数となっている「open[]」「high[]」「low[]」「close[]」という配列が4本値の配列に対応しているので、「Open→open」「High→high」「Low→low」「Close→close」のように変えます。

    これをコンパイルすると、エラーはなくなりました。実行ファイルはできているので、適当なチャートに挿入して実行してみましょう。でも、何も表示されません。そこでコンパイルの画面に警告メッセージが出ているところに注意してください。

    no indicator plot defined for indicator

    指標プロットが定義されていないということのようです。実は「#property」命令がMQL4とMQL5でちょっと異なっていて、MQL5ではプロットする指標の数を「indicator_plots」で指定しなくてはなりません。またもう一つ、指標の種類も「indicator_type1」で指定する必要があります。ラインの場合、「DRAW_LINE」を使います。これらを追加すると、次のようになります。

    これをコンパイルすると、エラーも警告も出ません。そこで、これをチャートに挿入すると、ラインが表示されます。これで移植完成かと思いきや、しばらくチャートを見ていると新しいバーのラインが更新されません。

    USDJPY.mM1
    これは、指標バッファ用の配列がMQL4とMQL5で異なっているためです。MQL4では指標バッファ用配列は最初から「時系列配列」になっていますが、MQL5ではそうではなく、時系列配列にするためにArraySetAsSeries()関数を実行しなくてはなりません。これを「Buf」だけでなく、4本値配列の「open」「high」「low」「close」に適用すると、次のようになります。

    これで移植完成です。どうでしょうか?MT4からMT5への移行の道のりはまだまだ長そうな気がします。

    なお、新MQL4の詳しいことは、こちらの書籍をご参照ください。

    『新MT4対応 FXメタトレーダープログラミング入門』



  • MetaTrader5日本語化されました!

    久々にMetaTrader5の情報です。
    9月14日にリリースされたMT5 Build 507 で、メニューやダイアログボックスのメッセージが日本語化されています。
    201109151.png
    ブログやTwitterの情報によると、alohafxさんというブロガーの方がMT5の日本語化にご尽力されたとのことです。
    http://alohafx.blog36.fc2.com/blog-entry-173.html
    MetaTrader5では、メニューなどのメッセージを多言語に対応させるための簡単なツールが提供されています。
    http://www.mql5.com/en/articles/311
    これを使うと、MT5の開発者以外の方が、メッセージを他の言語に書き換えることができるようになっています。
    しかし、一口に日本語化と言っても、適切な日本語に訳すこと、膨大な数のメッセージに対応すること、などを考えると、相当の労力を費やすことは間違いありません。
    それをお一人でこなされたということは本当に頭が下がる思いです。
    ともあれ、これで、MT5も格段に使いやすくなったと思います。
    alohafxさん、本当にありがとうございます!



  • MetaTrader5のリリース予定?

    MetaTrader5のリリースも秒読み段階に入ったようですが、なかなか出ません。
    MetaTrader5に関する情報をまとめてあるサイトがあります。
    http://metatrader5.blogspot.com/
    ここを見ていれば、最新情報がわかるでしょう。ちなみにベータ版はPublic Betaと書かれているので、一部の人に配られるのはなく、公開されるのだと思います。
    ベータ版は6月末を予定していたらしいですが、既に1ヶ月遅れています。ベータ版が出れば、かなりのバグ報告、意見や要望が寄せられるでしょうから、正式リリースは来年にずれこむんじゃないかと思います。
    当初はMQL4とMQL5では互換性が保たれるような話だったのですが、どうも最近の情報では、書き換えが必要のようです。
    ファイル名が *.mq4 から *.mq5 に変わるのは当然ですが、MQL5ではC++言語をベースにしているので、それほど大きな変更は伴わないと思うのですが、何ともわかりません。
    既にわかっている大きな違いとしては、オーダーの仕方やポジションの扱いがあります。オーダー単位でポジションができるMT4スタイルに対して、MT5では、ポジションは通貨ペア毎にまとめられてしまうようです。
    NFAの両建て禁止、FIFOルールに対応を余儀なくされたのかという気もしますが、MT4スタイルとMT5スタイルとでは、戦略が大きく変わってくると思います。MT5でもMT4スタイルのオーダーが使えればいいのですが。

    にほんブログ村 為替ブログ FX オプション取引へFXオプション取引は穴場です(^^)
    amazonで売れているFX本はこちら!
    amazonの「証券・金融市場」部門も注目!



  • MetaTrader5 今年リリースか?

    MQL4のサイトにこんな記事がありました。

    Automated Trading Championship 2009 Will Not Be Conducted

    今年の Automated Trading Championship は行われないそうですが、その理由として MetaTrader5のリリース予定を挙げています。
    今年リリース予定とありますが、まだベータ版も公開されていないのでいつになるかわかりません。おそらく今年の終わりか来年になるんじゃないかと思いますが、そんな状態なので、今年の Championship には間に合わないということでしょう。
    しかし、2010年の Championship ではMetaTrader5に対応させたいようですので、遅くとも2010年にはリリースされているんじゃないかと思います。
    ただ、リリース後安定するまではFX業者も完全移行はしないでしょうから、MT5リリース後もしばらくはMT4が利用できるでしょう。

    にほんブログ村 為替ブログ FX オプション取引へFXオプション取引は穴場です(^^)
    amazonで売れているFX本はこちら!
    amazonの「証券・金融市場」部門も注目!