MQL言語入門|自作EAに簡単に実装できる複利システム

 

この記事では、MQL言語入門として、MT4のサンプルEA「MACD Sample.mq4」のソースコードの一部を書き換えて「複利システム」を実装します。

仕組みさえわかれば、あなたの自作EAにも簡単に実装できます。

ぜひあなたの勝てるEA作りに役立ててください。

 

複利とは

複利効果とは、トレードで得た利益を再び投資することで、いわば、利息が利息を生んで大きくふくらんでいく効果のことです。

例えば、トレードにあたり、口座資金の一定割合でロット数を決めるとすると、口座資金の増減に応じてロット数が変動します。

もし勝ちトレードで利益が出れば、口座資金の増加に応じて次のトレードのロット数が増えることになります。

一般的な単利の計算は「足し算」ですが、複利の計算は「掛け算」です。

資産に対してどのような割合でロット数を決めるかにもよりますが、この方式で資産が増えていく場合には、爆発的に資産が増えます。

ということは、逆の場合には、爆発的に資産が減っていくことになりますので注意が必要です。

 

MetaEditor の起動

サンプルコード「MACD Sample.mq4」の一部を書き換えて、複利システムを実装させます。

MT4の「メタクォーツ言語エディタ」をクリックします。

 

MeTaEditorが立ち上がったら、画面左側の「Navigater」内のツリーから「Experts」をダブルクリックします。

「Experts」のツリーから「MACD Sample.mq4」をダブルクリックすると、ソースコードが開きます。

 

複利システムの自作

それでは、いよいよソースコードを書き換えていきます。

 

パラメーターの変更

カーソルを10行目に移動させます。
ここでは、ユーザーが変更可能なパラメーターを設定しています。

【変更前】

input double TakeProfit    =50;
input double Lots          =0.1;
input double TrailingStop  =30;
input double MACDOpenLevel =3;
input double MACDCloseLevel=2;
input int    MATrendPeriod =26;

【変更後】

input bool   AccountUSD    =true;
input double TakeProfit    =50;
input double Leverage      =10;
input double TrailingStop  =30;
input double MACDOpenLevel =3;
input double MACDCloseLevel=2;
input int    MATrendPeriod =26;

新たに変数「AccountUSD」を宣言し、ドル建て口座(true)なのか円建て口座(false)なのかを確認します。

変数「Lots」を削除し、新たに変数「Leverage」を宣言します。

ロット数は、サンプルコードでは外部パラメーター「Lots」で決めていましたが、複利システムでは口座残高とレバレッジに応じて内部関数で計算します。

 

テクニカルインジケーター変数の宣言の追加

カーソルを下に移動させます。
ここでは、テクニカルインジケーター変数の宣言を記述しています。

double MacdCurrent,MacdPrevious;
double SignalCurrent,SignalPrevious;
double MaCurrent,MaPrevious;
int    cnt,ticket,total;
double Lots;

ロット数の計算結果を入れる変数として「Lots」を宣言しました。

 

複利システムの追加

カーソルを下に移動させます。
テクニカルインジケーター変数の宣言の前あたりに、新たに複利システムのコードを記述していきます。

if(AccountUSD==true) 
Lots=NormalizeDouble(AccountFreeMargin()*Leverage/1000,1)*0.01;
else Lots=NormalizeDouble(AccountFreeMargin()*Leverage/(10000*Ask),1)*0.01;
if(Lots<=0.01) Lots=0.01; if(Lots>=10) Lots=10;

//--- to simplify the coding and speed up access data are put into internal variables

まず、if文(条件分岐) で、口座タイプがドル建てなのか円建てなのかを確認します。

 

パラメーター「AccountUSA」を「true」にした場合は、ドル建て口座なので、

Lots=NormalizeDouble(AccountFreeMargin()*Leverage/1000,1)*0.01;

NormalizeDouble関数は、指定された精度で丸められた浮動小数点数を返します。

ここでは、口座残高にレバレッジを乗じたものを最低取引単位(1000通貨)で割った値を、小数点以下第1位で丸めています。

さらに、1ロットは10万通貨、最低取引単位(1000通貨)は0.01ロットなので、0.01をかけています。

 

パラメーター「AccountUSA」を「false」にした場合は、

Lots=NormalizeDouble(AccountFreeMargin()*Leverage/(1000*Ask),1)*0.01;

こちらは、買値(Ask)を乗じて円建て口座の場合のロット数を計算しています。

 

さらに、ロット数が小さくなりすぎたり大きくなりすぎるのを避けるため、0.01ロット以下の場合のロット数は0.01ロットとし、10ロット以上の場合は10ロットとしました。

 

ソースコードの書き換えは以上です。

 

まとめ

MQL言語入門として、MT4のサンプルEA「MACD Sample.mq4」のソースコードの一部を書き換えて「複利システム」を実装させました。

仕組みさえわかれば、自作EAに簡単に実装できます。

ぜひあなたの勝てるEA作りに役立ててください。

 

☆MQL言語入門まとめ☆

【保存版】MQL言語入門まとめ~EA自作への道~
せっかくMT4を使うなら、オリジナルのEAやインジケーターを自作してみませんか。「プログラミングなんて自分にはとても無理だ」と思うかもしれませんが、そんなことありません。最低限知っておくべきことさえ押さえておけば、簡単にできますから。

 

もし、あなたが本格的にMQL言語を使いこなしたいと考えているなら、以下の書籍がおすすめです。

FXメタトレーダー実践プログラミング (現代の錬金術師シリーズ)

もしあなたが、MT4をリアル口座で稼働しようと考えているなら、XMTradingがおすすめです。
XMは、海外FX業者の中で、日本人による口座開設数No.1、豊富な入出金方法、24時間対応の日本語サポートなどにより、日本人でも安心して利用できます。

XMの口座開設はこちらから

MT4でシストレ

●免責及び注意事項●
当サイトの全てのコンテンツは管理人自身による情報の提供を目的としており、決して投資行動を勧誘・助言するものではありません。
投資商品、売買価格決定等の投資行動につきましては、ご自身の判断と責任に基づいて行われるようお願いいたします。
また、個々の取引において生じたいかなる損失についても、本ブログサイトおよびその管理者は一切の責任を負いかねます。

Startup!

コメント