こんにちは!

シェリーです。

 

 

突然ですが、「FXの熟練者は自分でプログラミングも行う」なんて耳にした事はありませんか??

昨今、MT4のプログラミングに対する需要が増えており、多くの人がプログラミングに対して興味を持っています。

 

 

今回は、MT4におけるプログラミングの入門について解説していきます。

MT4のプログラミングについて何もわからない方や、始めてみたけど難しいという方に向けて、わかりやすく解説しているので参考にしてみてください。

 

この記事で解決できること

・そもそもなぜMT4のプログラミングをする必要があるのか

・MT4のプログラミングをしたいけどなにから始めたらいいのかわらかない

・プログラミングの経験がなくても継続し習得できるのか

・今まで理解出来なかったMT4プログラミングの内容を理解するためには?

 

では、早速上記の点を中心にお話ししていきます。

 

MT4のプログラミング入門におけるMQL4とは?

MQL4言語(Meta Quotes Language)とは、MT4のプログラミングで使用されるC++言語をベースとしたプログラミング言語です。

 

EA(Expert Advisor)やカスタムインジケーターは、このMQL4言語で書かれています。

 

MQL4に関してのプログラミングは、MetaTrader4と一緒に提供されている為、MetaTrader4をインストールすれば、同時に開発環境を整えることが出来ます。

 

MT4プログラミング入門の門はいつ叩いても大丈夫?

MT4のプログラミングを始めるに当たり、まだ早い、もう遅い。そんなことはありません。

 

新しいことを始めるのに、不安はあるかもしれませんが、大切なのは、興味を持ったり、始めてみようという気持ちです。

 

MT4のプログラミングを始めることで、出来ることの幅は大きく広がっていきます。

思いきって新しい可能性を広げましょう。

 

MT4のプログラミング入門は敷居が高い?

MT4のプログラミングは決して敷居が高いものではありません。

 

今までプログラミングをした事のない人からすると、違う世界の事と思いがちですが、先入観感だけでそう考えてしまうと非常に勿体ないです。

 

プログラミング自体は難しい

正直、プログラミングは難しいです。

ですが、それは奥が深いという意味です。

 

奥が深いものほど、先を見据えすぎると難しく感じます。

 

初めてだからこそ、少しずつ考えていけば理解しやすいので、安心してください。

 

MT4プログラミング入門に順番はない(好きなところからスタートしよう)

MT4のプログラミングを始めるきっかけは、人それぞれです。

 

独自のロジックをツール化したり、バックテストをとって研究したり、プログラマーを目指したり、本当に様々だと思います。

 

MT4のプログラミングするのに、ここから始めなければいけないという制限はありません。

自分が興味を持ったところから始めるのが、長く続ける為の秘訣でもあります。

 

MT4のプログラミング入門はプログラミング経験が無くても大丈夫?

プログラミングの経験がないから自分には出来ない。そんなことありません。

 

プログラミング経験0から始める人も多い

未経験だから心配。という方でも大丈夫です。

 

活躍しているエンジニアの方の中にも、プログラミングが未経験だったという方も多くいます。

 

多いのは、副業などでFXを始め、独自のロジックをツール化したりやバックテストを自分でしたいと思いプログラミングを始めるという方です。

 

こういった、プログラミング未経験で始める方も多いので心配する必要はありません。

 

文系・理系は特に関係ない

「プログラミングって理系の分野でしょ?」

こういった声を聞くこともありますが、そんな事は決してありません。

 

活躍されているプログラマーさんは、文系・理系問わず沢山の方達がいらっしゃいます。

 

多少の計算はありますが、小数点の計算程度で、難しく考える必要はありません。

プログラミング言語には英語が使われているので、どちらかというと、文系分野である英語の方が使用頻度は高いです。

 

ですが、英語も難しいものはあまり出てこないので安心してください。

 

MT4のプログラミング入門は何から始めれば良いの?

実際、何から始めればいいのかわからない方も多いと思います。

順番にMT4のプログラミングについて解説していきます。

 

既に0からのスタートではない

0からコード書こうとすると非常に難しいですが、

まず前提としてMT4のプログラミングを始めるにあたり、0から始まるということはありません。

 

なぜなら、MT4(MetaTrader4)には、MetaEditorというツールが搭載されているからです。

このツールには、各プログラムを作成する上でのテンプレートが既に備わっっているので、0からコードを書くのではなく、テンプレート内容を書き換えていくという形になります。

 

元々あるものから作成する

MT4に搭載されているツールやネット上で配布されているツールには、コードの内容を変更出来るものがあります。

 

初めは、既存のコードを元に、数値やサインの種類を変えて、自分好みのツールを作る事をおすすめします。

 

その際、変更が可能なmq4ファイルと、変更が不可能なex4ファイルとあるので、確認する様にしてください。

 

人の真似から始めよう

プログラミングを身につけるコツは、人の真似をすることです。

 

プログラミングのコードには、沢山の書き方や種類があるので、初めのうちは人のロジックを真似して書いてみて下さい。

ネット上で配布されているツールなどには解説も載せているものが多いので、参考にすると、とても勉強になります。

 

なぜMT4のプログラミング入門で挫折する人が多いのか?

独学でプログラミングを始めた人の90%が途中で挫折すると言われています。

 

なぜそういった事になってしまうのでしょうか??

 

自己流が多いのが原因

一番の多い理由としては、すべて独学・自己流で学習を進める事です。

 

ネットの記事や専門書を読んでいると、「私は全て独学でプログラミングを身につけました。」という記述を目にする事があります。

確かに、全て独学で習得することも可能で、そういった人もいますが、それはごく一部の限られた人のみです。

 

上記でも述べたように、独学でプログラミングを始めた人の90%の人が挫折しているというのが現実です。

誰にも師事される事なく、プログラミングを習得するのは非常に難しいと言えます。

 

特に、自分で対応出来ない問題に直面した時に、問題解決が出来ずにフェードアウトしてしまう人が多いです。

なので、周りに相談できる人がいたりするとその存在はとても大きいです。

周りにそういった人がいない場合は、専門サイトの掲示板や、プログラミングスクールなどもあります。

 

オンラインのプログラミングスクールもあり、カリキュラムや教材は勿論、メールやチャットなどで質問や相談を受けるサービスも備わっているものが多いです。

 

基本的なノウハウや応用を身につける事や、問題解決の手助けもしてくれるのでおすすめです。

 

目標や目的意識を欠かさずにいよう

物事を継続的に進めていくのには、目標や目的意識がとても大切です。

 

誰から言われた訳でもなく、自分で始めた場合、目標や目的を自分で決めなければなりません。

それが無くなった時に、人のモチベーションは下がってしまいます。

 

大きな目標を立てる必要はありません。

小さい目標を立てて、それに向かって少しずつ進んでいく事が挫折せずに継続するポイントです。

 

MT4のプログラミング入門の前に実際にインジケーターの中身を見てみよう!

では、実際にMT4のインジケーターの中身を見てみましょう。

今回はわかりやすい様に、「期間の違う三本の移動平均線」を例にしてみていきたいと思います。

 

ex)移動平均線

 

 

FXをしたことがある人なら誰もが知っているトレンド系インジケーターです。

画像のコード開いてみると、このような形になっています。

 

//+----------------------------------------------------------------+
//| sample.mq4 |
//| Copyright 2020, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+----------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_width1 1
#property indicator_color1 Red
#property indicator_width2 1
#property indicator_color2 Red
#property indicator_width3 1
#property indicator_color3 Red
double Buffer_0[];
double Buffer_1[];
double Buffer_2[];
double ma1, ma2, ma3;
//+----------------------------------------------------------------+
//| Custom indicator initialization function |
//+----------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
IndicatorBuffers (3);
SetIndexBuffer(0,Buffer_0);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);
SetIndexBuffer(1,Buffer_1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID);
SetIndexBuffer(2,Buffer_2);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID);
//---
return(INIT_SUCCEEDED);
}
//+----------------------------------------------------------------+
//| Custom indicator iteration function |
//+----------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int limit = 0;
limit = Bars - IndicatorCounted ()-1;
for(int i=limit; i >=0;i--)
{
Buffer_0[i]=ma1;
Buffer_1[i]=ma2;
Buffer_2[i]=ma3;
ma1 = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,i);
ma2 = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,i);
ma3 = iMA(NULL,0,40,0,MODE_SMA,PRICE_CLOSE,i);
}
int deinit(){}
//--- return value of prev_calculated for next call
return(rates_total);
}

 

意味不明ですよね(笑)

 

初めはみんなそうです。

これを分解して考えてみると案外簡単に思えてくるので、実際にやってみましょう。

 

コードの内容を見たい場合は、MetaTrader 4を起動させて下さい。

 

 

上のほうの中央付近に、黄色い冊子のようなアイコンがあるのでクリックすると、MetaEditorというツールが立ち上がり、コードの内容を確認、編集することが出来ます。

 

コードの内容

インジケーターのコードは大きく分けて、4つに分類されます。

1.#property

2.On init()

3.OnCulculate()

4.Deinit()

英数字が羅列していると分かりづらいかもしれませんが、この四つがあればインジケーターを作ることが出来ます。

分解して見ていくとわかりやすくなるので、以下で解説していきたいと思います。

 

1.#property

 

 

ここではインジケーターの情報を入力する場所になっています。

インジケーターをチャートに適用した時にプロパティに表示される項目です。

#propertyの上から3行が「バージョン情報」、それ以降の#propertyが、「色の設定」のチャート上に表示される色や、線の幅・形を表し、メインウィンドウに反映される様になっています。

 

 

この時点で気づいた方もいるのではないでしょうか?

上にコードを載せた時とは違い、文字に色がついています。

これはMetaEditorの機能で、関数や変数、決まった語句や数値に色を付けてくれます。

意味に合わせて、文字に色が付くのでコードがずっと読みやすくなります。

 

2.OnInit()

 

 

ここが、インジケーターを適用・時間足を変更した時に一度だけ通る場所です。

OnInit()関数の中で、下に書いていくコードの為の前準備をしています。

 

上記で書かれていた、チャート上に表示するものは、途切れない線を三本用意することが書かれています。

 

3.OnCulculate()

 

 

OnCalculate()関数が、インジケーターを動作させる上で、サイン表示の条件などを書く、一番メインの内容になってきます。

基本的にコードを書く上で一番量の多いところです。

 

今回の場合、前半の青字の部分は上の記事でも解説したテンプレートの部分で、実際に書いたのは実はこの部分だけです。

 

 

ここで、上で設定した線を表示させるために、移動平均線の値を三本分取得し、表示させるとなっています。

 

4.Deinit()

 

 

DeInit()関数は、OnInit()関数と逆の意味になり、インジケーターをチャートから取り除いた時に通る場所になっています。

必ずしも書かなければいけないわけでなく、OnCalculate()関数で書かれた内容により、何も書かれない場合も多いです。

今回の場合はその必要がなかった為、書かれていません。

 

ここで書かれる例としては、表示したオブジェクトを削除したい時です。

今回表示した線とはまた別の種類の、矢印や直線などといった物は、自動では消えません。

指示をしなければ残ったままになってしまうオブジェクトを、インジケーターを取り除いた時に削除します。

 

 

この様に、内容を分解しながら考えると、わかりやすかったのではないでしょうか?

このインジケーターは、なるべくシンプルに考えて頂くために作った簡単なサンプルなので、100行にも満たないです。

 

MT4に搭載されているインジケーターなどのコードを見てみると、この何倍もの量が書かれていると思います。

その時に、うわ、、と思わずにまずは分解して考えてみてください。

以前に目にした時よりも、きっと理解しやすくなっているはずです。

 

まとめ

いかがでしたか?

最後まで読んで頂きありがとうございます。

 

自分でプログラミングを出来た方がいいかと問われたら、勿論出来た方がいいです。

 

独自のロジックを元に、優位性の高いオリジナルのインジケーターやEAを作りたい
バックテストをとって、研究・検証を重ねたい
MQLのプログラミングスキルを身につけて、自作のツールを販売して収入を得たい
プログラミングを通して、FXに対する理解・見解を深めたい

 

このような考えを持っている方には、プログラミングを習得する事で、自分の出来ることの幅がグッと広がってくるはずです。

 

記事の中でも90%も人が挫折していると書きましたが、この記事を読んだ方には、残りの10%になって欲しいと思っています。

プログラミングは難しい、大変だ、そう思っていた気持ちが少しでも前向きに変わっていたら幸いです。

 

シェリーと直接やり取りできる公式ラインはコチラ

投資全般の気になるご質問等は、こちらのLINEから!

気楽にどうぞ^^

Twitterでフォローしよう!

おすすめの関連記事