【MQL5】 MT5のEA作成の勉強 その14 EA運用開始からの総損益 / ロスカット処理
今回のテーマは「ロスカット」です。今までの投稿でも触れてきた、「損切」や、一定の損失が出た際の「逆指値注文」は「ストップロス」と呼ばれ、EAの戦略の一環として、個々のポジションの損失を抑えるために組み込まれるものです。対して、ロスカットはEAによる損失が一定以上になった場合に、EAそのものを強制終了する仕組みです。
ITエンジニアが趣味で勉強したことを書き綴ります。PythonとMT5用言語のMQL5についての記事多めです。
今回のテーマは「ロスカット」です。今までの投稿でも触れてきた、「損切」や、一定の損失が出た際の「逆指値注文」は「ストップロス」と呼ばれ、EAの戦略の一環として、個々のポジションの損失を抑えるために組み込まれるものです。対して、ロスカットはEAによる損失が一定以上になった場合に、EAそのものを強制終了する仕組みです。
前回の投稿で予告したように、今回はストラテジーテスターの使い方を学びたいと思います。ストラテジーテスターとはMT5画面上部のツールバーから「表示」→「ストラテジーテスター(r)」を選択すると出てくる、下のような画面のことです。この画面を用いて、作成したEAのテスト条件を設定し、グラフ画面を生成します。
前回の投稿で「価格がある程度下落したらポジションを買足す」という、ナンピンのポジションオープン処理の部分を実装しました。今回は「ポジションの総利益率が○○%になったら、ポジションを全てクローズする」という、処理を実装し、ナンピンを完成させたいと思います。
ナンピンとは、ポジションをオープンした後、相場が想定と逆に動いた場合、さらにポジションを追加でオープンすることで、損益分岐点を現在の価格に近付ける手法です。長期安定運用を目指すEAには多く採用されています。今回は、ナンピンをEAに実装する方法を学んでいきたいと思います。
複数ポジションを保有できるように処理を書ました。しかし、そのままでは以下の様に、条件を満たすバーで何度もポジションがオープンされるようになってしまい、実用的ではありません。そこで、今回は、条件を満たすバーで一度だけ取引を行うように処理を書き換えて行きたいと思います。
前回の投稿でやっとこさ任意の条件(Parabolic SAR)で取引を行うEAを作ることができました。どこかで取引を制限しなければ、条件を満たすバーでティックごとにポジションをオープンするという処理になるはずです。そこをブラックボックスのままにしておくのは怖いので、しっかり学んでおきたいと思います。
前回の投稿で、公式サイトのMACD Sampleの説明を読みつつ、Parabolic SARを使った判定を行うEAを作成しました。エラーもなく、無事にコンパイルとテスターでの実行まで漕ぎ着けたのですが、どういうわけか、想定した条件が満たされても注文が行われないという状況に陥りました。
EA自動作成で作ったソースを、書き換えようとすると、それは不可能なことが分かりました。なぜなら、取引条件はデフォルトで用意されているライブラリを使用して定義する必要があるからです。ライブラリ化されていないソースの書き方を学んでいこうと思います。
前回の投稿で、価格の更新ごとに実行されるOntickメソッドで、取引に関する操作を行っているProcessingメソッドの前半部分について学びました。今回はその続き、後半のポジションオープンの判定を行っている部分を解読してゆきたいと思います。
前回の投稿で省略した、自動作成したEAのOntickメソッドの中身を詳細に学び、取引条件を記述する場所を突き止めたいと思います。前回の投稿はこちらをご覧ください。Ontickメソッドは「価格が更新されるたびに実行されるメソッド」です。更新された価格を取得し、設定したテクニカル指標に基づいて取引を行う処理が入るはずです。