MT4 EAの作り方 ランダムエントリーにマーチンゲール法を組み込む


マーチンゲール法はギャンブルの世界では昔から有名な手法で、
簡単にいえば、負けたら倍掛けにする手法で、負けた分を1回で取り戻すというものです。

資産が無制限にあれば絶対に負けない手法ではありますが、連敗が続くと掛ける金額がとても大きくなります。
どうしても損大利小になってしまうので、個人的にはあまり好きな手法ではありません。

ですが、今回は実験したいことがあり、コードを書いてみました マーチンゲール法を自分のEAに組み込みたい方は参考にしてみてください。

ランダムエントリーにマーチンゲール法を組み込んだEA

作ったEAはこちらからダウンロードしてくださいrandom_martin.zip

ロット数を出す関数は、詳解 MT4 様を参考にさせてもらいました。

今回作ったEAは以前に作成した、ランダムエントリーのEAを流用しています
以前の記事はこちら

これが今回のコードです。

エントリー部とは別に、エントリーに使用するロットサイズを計算する関数を作りました。

以下がコードです

引数のBaseLotsは、最初のロットサイズ、M_bairituは負けた時にポジション数を何倍にするか、M_maxは最大何回までマーチンゲール法を使うかを指定しています。

マーチンゲールのロットサイズ計算の流れ

マーチンゲール法を使う場合、まず現在が何連敗しているかを調べなければいけません。
このコードではrenpai変数に何回連敗しているかを格納します。
OrdersHistoryTotal()という、今までの決済済みの注文の合計数を返す関数を使い、古い決済から新しい決済注文に向けて検索をかけます。

ループ内ではOrderSelectをMODE_HISTORYとし過去のオーダーを選択して、
マジックナンバーと通貨が一致するかを調べ、トレードがマイナスならrenpaiカウンタを+1
プラストレードならループを終了させます。

OrderProfitは選択した取引の損益を取得することができます。

ループ終了後 renpai数が マーチンを行う最大数を超えていた場合、最大数を変数renpaiに格納します。
実際のポジション数はべき乗で計算するので、MathPow関数を使用します。
今回は、ポジションを増やす倍率を連敗数分乗算します。

バックテスト結果

まずはこちらはマーチンの最大回数を5回にしたものです
典型的な利少損大な動きです。

mt5

お次は最大回数10回にしてみました。 1万通貨単位で口座残高100万でスタートしてもすぐ破産だったので、1000万円スタートですが結局は証拠金不足でポジションが持てなくなりました。

mrt10

いろいろ実験してみてください

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です