MetaTrader 4のバージョンアップにより仕様が変わってきた部分がありますので、 記事を新しい仕様で書き直しております。この注意書きが書かれていないページは 旧仕様の記事になります。旧仕様の記事でも一部を除き基本的にはシステムの制作に問題はありません。
今回から、プログラム編に進みます。
MetaTrader 4のプログラム
プログラムをやったことがない人は、物凄く大変そうだなというイメージがありませんか?
確かに、初めから色んなことをしようとすると大変ですが、基本を抑えながら少しずつやって行けば、それほど大変ではないです。
出来るだけ分かり易く説明するようにしますので、頑張って下さい。
それでは、MetaTrader 4を起動させて下さい。上のほうの中央付近に、黄色い冊子のようなボタンがあります。
それをクリックして下さい。
![MetaEditor立ち上げボタン](https://jidoubaibai.com/wp-content/uploads/2019/06/set00.png)
MetaEditorというツールが立ち上がります。
まずは使いやすいように言語を日本語にします。画像のようにタブのView > Languages > Japanese の順で選んでください。再起動が必要という内容のウインドウが出てきますのでRestartを選んでください。左側のボタンになります。
![Language](https://jidoubaibai.com/wp-content/uploads/2019/06/set01.png)
これで言語が日本語になりました。
次にプログラム内部で日本語のコメントを使用出来るようにします。タブのツールからオプションを選んでください。
![option](https://jidoubaibai.com/wp-content/uploads/2019/06/set02.png)
オプションのウィンドウが出てきたら、タブのフォントを選び、MSゴシック(日本語が使えるフォントなら何でも良いです)を選んでください。そしてスクリプトを日本語にして下さい。あとはOKを押して下さい。これで日本語のコメントが使えるようになりました。
![option2](https://jidoubaibai.com/wp-content/uploads/2019/06/set03.png)
では設定が終わりましたので、次からシステム制作に入ります。まずは、左上のファイルをクリックして、新規作成を選んでください。
![新規作成](https://jidoubaibai.com/wp-content/uploads/2019/06/set04.png)
新しいウィンドウが出て来たと思います。
![MQL_Wizard1](https://jidoubaibai.com/wp-content/uploads/2019/06/set05.png)
エキスパートアドバイザにチェックが入っているかどうか確認して(最初から入っていると思います)、「次へ」を押してください。
少々、分かりにくそうな感じのが出てきたと思いますが、名前以外はそのままでいいです。
名前はシステムの名前になります。Experts\というのはシステムを入れるフォルダの指定です。この後にシステムの名前を入れます。
とりあえず、今回は「Experts\Print」と入れておきます。Printがシステム名になります。名前を入れたら次へを押して下さい。
![MQL_Wizard2](https://jidoubaibai.com/wp-content/uploads/2019/06/set06.png)
次の画面のその次の画面は今のところ必要ありませんので、そのまま次へと完了をおしてください。
![MQL_Wizard3](https://jidoubaibai.com/wp-content/uploads/2019/06/set07.png)
![MQL_Wizard4](https://jidoubaibai.com/wp-content/uploads/2019/06/set08.png)
ウィンドウが消えて、プログラムのひな型が出てきたと思います。
![MetaEditor1](https://jidoubaibai.com/wp-content/uploads/2019/06/set09.png)
画面が小さい人はプログラムが書かれたウィンドウを最大化して見易くしてください。
パッと見て色々と分からないものが並んでいて、難しそうに見えるかもしれませんが、今回やることはとても簡単なので頑張って下さい。
まず、下のコードですが、
//+-----------------------------------------------------+
//| print.mq4 |
//| Copyright ゥ 2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+-----------------------------------------------------+
//で始まるものは、プログラム本体ではなくコメントなので、気にしないでいいです。
次に、下のコードですが、
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
これも気にしなくていいです。
残るのは、//で始まるコードを抜いたら、
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
}
この三つだけです。
この三つのうち、int OnInit()とvoid OnDeinit(const int reason)は今回は必要ありませんので、気にしなくていいです。
一応説明をするとint OnInit()はシステムを開始した時に、一度だけ呼び出されるプログラム。
void OnDeinit(const int reason)はシステムを終了した時に、一度だけ呼び出されるプログラムになります。こちらは使用する時にまた詳しく説明します。
void OnTick()
{
}
上記ですが、これが実質自動売買をするためのシステムの中身です。
ここにルールを書き込んで行きます。
{で始まって、}で終わります。
この中に色々と書き込んで行きます。
とりあえず、簡単なルールを書きますので覚えておいてください。
※プログラミングをする時は、半角英数でやって下さい。(全角だとエラーになります)
※文の終わりには、;(セミコロン)をつけて下さい。
簡単なプログラムでエラーが出る場合は、大半がこの二つが原因です。
今回は、これだけ覚えておいてください。
では、まず次の通りにvoid OnTick()の中のreturn(0);の上辺りに書いてください。
Print("test");
これだけです。
最初のPだけは大文字にして下さい。
実際に書くと下のようになります。最初のPだけは大文字にして下さい。
void OnTick()
{
Print("test");
}
書けましたか?
今回はこれだけです。
解説
では、内容を説明して行きます。
Print()というのは、関数というものです。
関数とは、プログラムの中で決められたことをやってくれる便利なものと覚えておいてください。
Print()は中に書いてある文字を描写してくれる関数です。
”test”ですが、数字などの場合は“”をつけなくて良いのですが、文字として表示させる場合には“”が要ります。
testは分かりやすいようにtestと書いただけで、別に何でも構いません。
最後に、;が付いてますが、これは先ほど説明したとおりです。忘れないで付けて下さい。
では、最後にコンパイルしましょう。
コンパイルというのは、プログラミングの内容をパソコンが理解できるように変換することです。
コンパイルしないとシステムは動きません。
まず、MetaEditorの上の中央付近にある紙にチェックマークがついて、コンパイルと書かれたボタンを押してください。
![コンパイル](https://jidoubaibai.com/wp-content/uploads/2019/06/set10.png)
次に、エラーがないかどうか下のDescriptionと書かれたところを見てください。
0 error(s), 0 warning(s)
エラーが出た人は全角で打っているか、;の付け忘れだと思うので、 もう一度見直して見て下さい。
では、実際にこのシステムを動かして見ましょう。
MetaEditorを閉じて、MetaTrader 4の画面を出してください。
バックテストのテスターの画面を出します。
エキスパートアドバイザーにさっき作ったPrintというシステムが入っているはずなので、それを選んでください。
そして、スタートを押してください。
今回は、売買をするシステムではないので、レポートなどには何も出ませんが、 レポートの横の操作履歴を押してください。
メッセージの一番右端のところにtestと出ています。
今回のシステムは操作履歴のところにtestと書くシステムです。
![操作履歴](https://jidoubaibai.com/wp-content/uploads/2019/06/set11.png)
プログラミングは簡単でしたか?
まずは、プログラミングに慣れることが大事なので、後数回は簡単なプログラミングをやりながら、 内容を説明して行きたいと思います。
次回は、変数というものを説明して行こうと思います。
内容には注意を払っていますが、保障は出来ません。
実際に運用する場合は、自己責任でお願いします。