『新メタトレ実践本』可変ロット・マルチポジションシステム
『新MT4対応ライブラリによるメタトレーダーEA実践プログラミング』(新メタトレ実践本)連動企画です。
今回は、本書の第6章「可変ロット・マルチポジションシステム」についてです。
【目次】
第1章 メタトレーダーとプログラミング
第2章 本書ライブラリを使ったEAの作成
第3章 途転(ドテン)売買システム
第4章 手仕舞いを追加したシステム
第5章 仕掛けフィルタを追加したシステム
第6章 可変ロット・マルチポジションシステム
6-1 売買ロット数を変化させるシステム
例題6-1 エンベロープによるトレンドフィルタを用いた可変ロット数
練習6-1 ATRによるボラティリティフィルタを用いた可変ロット数
例題6-2 マーチンゲールを用いた可変ロット数
練習6-2 ピラミッドを用いた可変ロット数
6-2 マルチポジションシステム
例題6-3 複数のポジションで手仕舞いを変える
練習6-3 複数のポジションでトレイリングストップを変える
例題6-4 仕掛けシグナルを複数のポジションに時間差で出す
練習6-4 複数のポジションで仕掛けの指標パラメータを変える
例題6-5 複数の指値注文を入れる
練習6-5 複数のポジションをポジションごとに利食い
練習6-6 複数のポジションの合計損益をもとに損切りと利食い
第7章 EAプログラミングのコツ
第8章 本書ライブラリの解説
本書アップデート情報
本章に関しても、本書掲載のコードや説明で修正が必要となった箇所はありません。
ただ、マルチポジションシステムに関して、本書ライブラリ特有のコードの書き方があり、ちょっと注意が必要です。
同時にオープンするポジションが一つの場合、ポジション番号は省略できたのですが、同時にオープンするポジションが複数ある場合、ポジション番号を指定する必要があります。
ただ、これは意外と忘れがちです。ポジション番号を省略しても0と見なされるだけで、エラーにならないからです。
プログラムにバグは付き物ですが、できればバグの出にくいコード、あるいはバグが出てもデバッグしやすいコードが望ましいです。
そういう意味で、ポジション番号を多用するコードは避けたいところです。
例えば、トレイリングストップのコードでは、いくつかのポジション情報を取得する必要があるので、各関数でポジション番号を指定しなくてはいけません。一か所でもポジション番号を書き忘れると、おかしな結果になってしまいます。
そこで、アップデートしたライブラリでは、トレイリングストップのようなよく利用する機能については、独自の関数SetTrailingStop()を追加しています。それを使えば、ポジション番号の指定は1か所だけなので、ポジション番号の抜けのミスを減らすことができます。
バグの出にくいコードのためのライブラリ関数活用の一例です。
詳しくは、『MQL4/MQL5共通ライブラリCodeBase』をご覧ください。