【MQL5】 MT5のEA作成の勉強 その12 ナンピンを実装する ( 2 / 2 )

まえがき
前回の投稿で「価格がある程度下落したらポジションを買足す」という、ナンピンのポジションオープン処理の部分を実装しました。今回は「ポジションの総利益率が○○%になったら、ポジションを全てクローズする」という、処理を実装し、ナンピンを完成させたいと思います。
ポジションの総利益を取得する。
ポジションの総利益を取得するために、一つ一つのポジションの利益を合計します。(もっとスマートなやり方がありそうな気もしますが・・・。別のやり方を知ってるよという方はコメント頂けると嬉しいです。)ポジションの利益を調べるには、CPositionInfoクラスのProfitメソッドを使用します。ポジションの選択には 前回の投稿で最新のポジションを選択するのに使用した、CPositionInfoクラスのSelectByIndexメソッドを利用します。
uint total=PositionsTotal();
double sumProf = 0;
for(uint i=0; i<total; i++)
{
if(m_position.SelectByIndex(i))
{
sumProf += m_position.Profit();
}
}
上記の様にFor文で一つづつポジションを取得し、longポジションの利益率をsumProfに加算してゆきます。
その直下に、 sumProf が100(ドル)以上ならば、全てのポジションを決済する処理を入れます。ポジションの選択方法は先ほどと全く同じです。ちなみに、 Profitメソッドは公式リファレンスには「口座の預金通貨でのポジションの現在利益」とあります。ここでは、ポジションの利益が100ドルになった時決済されるようになっています。
※USD/JPYはクロス円通貨なので、証拠金の単位は円かと思っていたのですが、ドルでした・・・。今まで初期資金100万円のつもりでバックテストしてきましたが、実際には1億円・・・。そんなんあるか。
そうこうして作ったバックテストの成績は以下です。予想以上の好成績でびっくりしました。証拠金負荷が一番大きい、2019年の5月~6月でギリギリ1%を超えるくらいなので、証拠金200万円くらいでも最大証拠金負荷50%強で同じ利益が出せる計算です。

あれ?意外に悪くないのでは?と思い、さらに長期のバックテストを行った結果が以下です。

まとめ
以外にあっさりと悪くない利益カーブを持つEAができたと思いきや、世の中そんなに甘くないよというお話でした。ところで、このEAですが、元々単一ポジションを扱うEAを参考に始めたせいで、一部の処理に不具合が出ています。一番問題なのは、ストップロスがほぼ効かないことです。原因は分かっていますので、ぼちぼちそこを修正しつつ、長期運用EAに欠かせない、ロスカット処理(強制終了)の実装方法を学んでゆきたいと思います。・・・が、その前に、次回は上記のグラフを書くために使ったストラテジーテスターの使い方について学んでいきたいと思います。というのも、最初、資金の設定を少し変えると、上記と全く異なるグラフ形状になっていた、ということがあったからです。(スプレッドが変わればグラフ形状が変わるのは分かりますが、それ以外という意味です。)テストのやり方が間違っている、なんて恐ろしいので、まずはこちらが優先です。
-
前の記事
【MQL5】 MT5のEA作成の勉強 その11 ナンピンを実装する ( 1 / 2 ) 2021.08.22
-
次の記事
【MQL5】 MT5のEA作成の勉強 その13 ストラテジーテスターの使い方 2021.08.28
コメントを書く
コメントを投稿するにはログインしてください。