ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

忙しいです。ネタもないし・・・

2010-06-17

仮想ポジション管理VOM

既にご存知の通り、MT5 ではポジションが合算されます。買い1ロット保有中に、売り1ロットを注文すると、相殺されてポジションが消えます。

個人的には、この処理は合理的だと思うのですが、MT4の自作EAをそのまま移植して運用しようとすると若干問題があります。あるEAが、EURUSD を買い持ちしている時に、別のEAがEURSUDを売ってしまったら…どうなるか分かりますよね。^^;


この問題への1つの回避策として考案されているのが、仮想ポジション管理 VOM (Virtual Order Manager) です。MT5のシステムとしてはポジションが消えていても、EA側からは仮想的なポジションを保有しているとカウントさせるようなエミュレーションライブラリです。最新版は、ここから入手できます。同梱のヘルプファイルを見れば使い方も分かると思います。(本家記事からも入手できますが、少し古いようです。)


実際にVOMを試したのが下図で、左のEAは青ラインの買い、右のEAは青ラインの売りポジションを持ったつもり..になっています。黄色が仮想TP,オレンジが仮想SLです。

f:id:fai_fx:20100616202014p:image

↑コメント部に保有中のポジションが出ていますが、最下部のウィンドウ内ではポジションがありません。

コメント部から、仮想的な売りポジションに利益が出ていることが分かります。


VOMの導入方法は、同梱のサンプルコードをみれば分かりますが、

1. #include "..\VirtualOrderManager.mqh" を書く。

2. OnInit 内で、VOM.Initialise(MagicNumber); を呼ぶ。

3. OnTick 内の冒頭で、VOM.OnTick();を呼ぶ。

だけで完了です。


実際の使い方は、MQL4の注文関係の関数の先頭に VOM. を追加するだけで、ほぼMQL4と同じ"感覚"で使えます。

f:id:fai_fx:20100616232139p:image

↑敢えてMQL4的に書いていますが、VOMの他の関数を使うともっと簡単に書けます。

VOMでは、EAの名前別にポジションを分別管理するので、MagicNumber だけはMT4と異なる扱いなので要注意です。

VOM.OrderSend には、MagicNumber が無く、注文タイプが VIRTUAL_ORDER_TYPE_BUY に変わっています。



VOMでどんな関数が使えるのか?は、ヘルプの CVirtualOrderManager のPublic Member Functions を見ると分かります。

f:id:fai_fx:20100616234018p:image

VOM自体にもデメリットや欠点があるかもしれませんが、ポジション管理に悩むぐらいなら、VOMをそのまま使ってみて、後からじっくり考えた方が良いかなと思います..。

短期投資管理人短期投資管理人 2010/06/17 12:24 いつもどうもです。
なんとありがたい記事なのでしょうか。
ポジションの合算の件は本当に困っていましたので、VOMにはかなり助けらることになると思います。
弄るのはこれからですけど。
ではでは。

fai >短期投資管理人fai >短期投資管理人 2010/06/17 12:57 「ポジション管理で厄介なことに...」の記事で苦労されてそうだったので記事にしてみました。
作者のポールさんはデモ口座で運用を試しているようですが、まだまだ実績が少ないので、VOMの人柱になってください。笑。

takechantakechan 2010/06/17 15:04 faiさん、お疲れ様です。

質問です。

質問1.VOMを利用するとして、たとえば、午前0時に1万通貨ずつの両建てをして、午前1時にショートのみを決済した場合、MT5上では、午前0時から午前1時まではポジション無しで、午前1時にロングの1万通貨が発注されたかたちになるのでしょうか???

それなら、おおいに助かるのですが。

質問2.ふと思ったのですが、両建てができないのがあくまでもMT5上のことで、証券会社の口座自体が両建てを禁止していなければ、たとえば、同一口座内でMT5を2個インストールしておいて、一方をロング専用、他方をショート専用とすれば、両建てやポートフォリオが可能になりますよね。

どうなんでしょう???

MickMick 2010/06/17 17:24 こんにちは。
以前の記事ではMT5もまだまだ安定していないということでしたが(かなり前の記事ですが)、
そろそろいい感じになって来たんでしょうか?
自分もそろそろ手を出してみようかなと思っています。

短期投資管理人短期投資管理人 2010/06/17 20:25 >苦労されてそうだったので記事にしてみました。

あ、やっぱり(笑)
VOMについては自分では見つけることが出来なかったと思うので大いに助かりました。
今、簡単なEAを作って動作を見ています。
ちなみに、VOM.OrderSendのcommentにマジックナンバーをセットして判定させています。

fai >Mickfai >Mick 2010/06/20 03:14 6月から正式リリースされているので、まぁまぁいい感じなのではと思います。

fai > takechanfai > takechan 2010/06/20 03:15 質問1:そのはずです。

質問2:口座内では両建てできないので、1つの証券会社に二つの口座を用意すれば可能でしょうね。

yamakagasiyamakagasi 2010/07/30 10:36 記事中のVOMとmigrateの表のおかげで、mql5への移植ができましたmm
質問ですがremote agentの使い方がいまいちよくわかりません。
- remote agentの見つけ方
- セキュリティ的な不安
- 外部ファイルの読み込み方法
設定をMQL5/Filesにいれて読み込んでてlocal agentの場合はtester/Agent-xxx/MQL5/Filesに
コピーするのですがremote agentの場合どのように読み込むのか。
お手すきの際にでも!では失礼します。

yamakagasiyamakagasi 2010/07/30 21:13 勘違いしてたかも。世界の速いマシンが公開されていて、
remote agentで使えるものだとばかり。。
通常は自分の別マシンで動かすものかもしれませんね。

fai_fxfai_fx 2010/07/30 21:18 そうでしょう^^;<自分の別マシンで動かす。。

MickMick 2010/08/17 01:10 こんばんは。

この記事へのコメントで、MT5について、
「自分もそろそろ手を出してみようかなと思っています」と書き込んでから、
すぐに手を出して、トレードの合間合間に手を出し続けて、今日でちょうど2ヶ月たったんですが、
全く偶然にも、今日、自作の主なインジケータ(10個くらい)のMT4からの移植が終わりました。

正直疲れましたw まだまだMT5MQL5のバグが多くて、自分のプログラムのデバッグよりも、はまってました。
MT5、いまだに週一ペースでアップデートされてますし。。。

自作のEAは1個しか無いんですけど、ちょっと規模が大きめなので、しばらく移植は保留しようと思ってます。

ロシアのアルパリのデモ(MT4)がメタクォーツ社のデモ(MT5)とほぼ同じデータなので、
MT4と並べて見分けが付かない出来映えのMT5の自分のインジケータを見ながら、
しばらくニヤニヤして満足することにします。

では。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fai_fx/20100617/1276700549