という事をお話ししました。↓
改めて前回のおさらいしておくと、
OnInit関数とは、
プログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする関数、という説明をしました。
そして、そもそも関数って何?という点についてですが、
関数とはより簡単、かつ効率的にプログラムを動かす記述であり、日常生活の中で言うと、掃除機や電気炊飯器のような便利家電みたいなものである。
のことであるという事もお話ししました。
今回は、前回言及しなかった、
OnInit関数の「プログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする」ってそもそもどういこと?
という点と、
「コンパイル」
という作業について、触れていきたいと思います。<(_ _)>
※MQL5で自動売買プログラム作るにあたっては、MT5・メタエディター5がお使いのパソコンにインストールされている必要があります。
もし、まだMT5のダウンロードが完了していない方は、
こちらからデモ口座の開設とメタトレーダー5のダウンロード・インストールを完了して頂ければと思います。
コンパイルとは?
そもそもコンパイル=Compile は「編集する・作成する」という意味の動詞です。
そこから転じて、プログラミングの世界では
記述した内容を機械が理解できる言葉(=機械語)に変換すること。
を意味します。
プログラミング初心者の方には、これから取り組もうとしているソースコードも十分機械語のように見えるかもしれませんが、これらは人間が理解できるように書かれているものなんです。
コンパイルとはそれを機械語=もっと数字と略語でまみれたコンピュータが理解できる言語に変換することにほかなりません。
コンパイルの方法
コンパイル、すなわち
記述した内容を機械が理解できる言葉(=機械語)に変換する作業
はどうやって行えばよいのかを説明します。
メタエディターのウィンドウ中央上部を見ると、「コンパイル」というボタンがあるかと思います。
このボタンをクリックすることによってコンパイルが行われます。
記述したコードに文法的なエラーがなければ、ページ下部のツールボックス、エラータブのところに
このような画面が出てコンパイルが正常に行われたことを知らせてくれます。↓
逆に記述したコードに文法的なエラーがある場合、
ページ下部のツールボックス、エラータブのところに
このような画面が出てコンパイルが正常に行われなかったことを知らせます。
ここまではよろしいでしょうか?
エラーが出ずに、コンパイルが正常に行われた場合、コンピューターがプログラムを実行するファイルが生成されます。
以下の画像をご覧ください。↓
これはMT5に内蔵されている、サンプルの自動売買プログラムなのですが、
同じ名前で、ファイルの種類が
と、
MQL5 Program
という2種類存在するのがお分かりいただけるかと思います。
この2種類のファイルの違いはどこにあるのか、それをこれから説明します。
MQL5 Source Fileとは?
MQL5 Source File というファイル形式は、我々MQL5開発者が自由に記述・編集できるファイル形式です。
このMQL5 Source File の内容をコンパイルすることによって、
この後説明する「MQL5 Program File」というファイル形式が生成される仕組みになっています。
※MQL5 Source Fileで記述した内容をコンパイルによって「MQL5 Program File」というファイル形式が生成される過程については、動画で取ってみましたのでご確認ください。↓
MQL5 Program Fileとは?
MQL5 Program FileはMQL5 Source Fileをコンパイルする事によって生成された実行ファイルになります。
MQL5 Program Fileが、実際に自動売買プログラム(EA)としてMT5上で動作するファイルになります。(このMQL5 Program Fileはデコンパイル等のグレーな行為をする以外、基本的に、編集することができません)
コンパイルとは、このMQL5 Program Fileを生成する作業、と言い換えることもできるでしょう。
次は、MQL5 Program FileをどうやってMT5上で実行するのか?
という点を見てきましょう。
MQL5 Programファイルを実行して、OnInit関数の処理を確認する。
プログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする
関数であると説明しましたが、コンパイルとMQL5 Program File生成についてお話したことによって、ようやくOnInit関数の挙動を確認できる段階になりました(-_-;)
int OnInit()
{
return(INIT_SUCCEEDED);
}
この状態から、以下のような記述を加えます。
int OnInit()
{
Comment("チャートに挿入すると、1回だけ処理を行います");
return(INIT_SUCCEEDED);
}
加えたのは、{}の中に、
Comment(“チャートに挿入すると、1回だけ処理を行います”);
という記述を加えただけです。
Commentというのは関数の一つで、()の中に書かれている文字情報をチャート左上に反映させる働きをする関数になっています。
文末にセミコロン(;)がついているのは、日本語の「。」 や英語の「. (ピリオド)」みたいなもので、
MQL5においては、セミコロン(;)がついていると、いったん記述に一区切りがついたことを意味します。
return(INIT_SUCCEEDED);については、今後の記事で説明するので、一旦わきに置いておいてください。
ここまでの記述で意味するところを整理しましょう。
OnInit関数はプログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする
OnInit関数はプログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする役割を担っています。
そして、MQL5の関数は、{}カッコの中に書かれている処理を実行する、というプログラミング文法上のルールがあります。
そして、OnInit関数の{}カッコのなかにはComment関数が書かれています。
Comment関数は、()の中に書かれている文字情報をチャート左上に反映させる働きをする関数です。
すなわち
int OnInit()
{
Comment(“チャートに挿入すると、1回だけ処理を行います”);
return(INIT_SUCCEEDED);
}
の記述は
チャートにプログラムファイルを挿入した直後、1回だけ
“チャートに挿入すると、1回だけ処理を行います”
という文字をチャート上に表示します
という意味になるわけです。
MQL5 Programファイルをチャート上に挿入する
では、MQL5 Program FileをMT5のチャート上に挿入してみましょう。
コンパイルに成功して、生成されたMQL5 Program Fileは、MT5の画面左側の、
ナビゲータウィンドウに格納されています。
挿入の仕方は、簡単で該当のプログラムファイルをチャートの上までドラッグしてくるだけです。
ドラッグをリリースすると設定画面ウィンドウが出てくるので、「アルゴリズム取引を許可」
にチェックが入っているのを確認して「OK」ボタンをクリックすると処理が実行されます。
↓の動画で流れを確認してみてください。
「test」というMQL5 Program Fileをチャート上にドラッグして、チャート上左上にコメントが
表示されているのが確認できたと思います。
OnInit関数はこのようにチャートに挿入後、一度だけ処理を行う関数である、という再三の説明がこれでご理解頂けたのではないでしょうか?
次回はOnDeinit関数についてお話しする予定です。
最後までお読みいただきありがとうございました<(_ _)>
MQL5講座 第5回「OnInit関数」← →MQL5講座 第7回「OnDeinit関数」
—————————————————————
コメント