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

複利システム

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

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

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

 

スポンサーリンク
スポンサーリンク

複利とは?単利との違い

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

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

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

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

複利イメージ

 

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

ということは、逆の場合には、負けも大きくなるので注意が必要です。

 

MetaEditor の起動

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

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

メタエディター起動

 

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

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

MACDサンプル起動

 

複利システムの自作

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

 

パラメーターの変更

カーソルを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ロットとしました。

 

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

 

複利システムの注意点

最初の方で、複利は負けも大きいので注意が必要だと書きましたが、ちょっと説明します。

複利システムは、当然ですが、勝てるEAに使うのが前提です。

ただし、勝てるEAであっても、ドローダウンが大きいEAにも向いていません。

そんなEAに複利システムを使えば、ドローダウンの負けはより大きくなり、ドローダウン後の回復にはより時間がかかってしまいます。

複利システムを実装する場合は、EAの特性を理解した上で使いましょう

 

まとめ

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

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

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

ただし、くれぐれも、EAの特性を理解した上で、複利システム向きのEAに使いましょう。


もっと本格的にMQL言語を使いこなしたいなら、この書籍がおすすめです。私もこの本で勉強しました。
スポンサーリンク

おすすめFX業者とVPSサービス

もしあなたがMT4のリアル口座を検討中なら『XM』がおすすめです。豊富な入出金方法、24時間日本語サポート、レバレッジ888倍、お得なボーナスなどにより、日本人の口座開設数No.1の人気FX業者です。スマホ・PC・Macすべて同じMT4口座で取引できます。


もしあなたがMT4をVPS稼働しようとお考えなら、このMT4専用VPSがおすすめです。初期費用0円なので気楽に試してみませんか♪


MT4用のPCなら、数あるメーカー直販ショップの中でも、豊富な品揃えと価格の安さから『レノボ・ショッピング』がおすすめです。

スポンサーリンク

おすすめFX業者とVPSサービス

もしあなたがMT4のリアル口座を検討中なら『XM』がおすすめです。24時間日本語サポート、レバレッジ888倍、お得なボーナスなどから、日本人の口座開設数No.1の人気FX業者です。スマホ・PC・Macすべて同じ口座で取引できます。


もしあなたがMT4をVPS稼働しようとお考えなら、このMT4専用VPSがおすすめです。初期費用0円なので気楽に試してみませんか♪


MT4用のPCなら、数あるメーカー直販ショップの中でも、豊富な品揃えと価格の安さから『レノボ・ショッピング』がおすすめです。

MQL言語入門
スポンサーリンク
スポンサーリンク
スポンサーリンク

●免責及び注意事項●
当サイトの全てのコンテンツは管理人自身による情報の提供を目的としており、投資行動を勧誘・助言するものではありません。
当サイトに掲載している全ての情報について、その正確性、完全性、有用性等について保証するものではありません。
個々の取引において生じたいかなる損失について、当サイトの管理人は一切の責任を負いかねます。
取引にあたっては、FXという金融商品のリスクを十分に理解した上で、ご自身の判断と責任でなさるようお願いいたします。
当サイトの記載内容は、予告なしに変更することがあります。

Startup!

コメント

タイトルとURLをコピーしました