という事の説明と、
OnInit関数が、どのような働きをするのか?という事を見てもらいました。↓
改めて前回のおさらいをしておくと、
コンパイルとは
- 記述した内容を機械が理解できる言葉(=機械語)に変換する作業であり、MQL5 Programファイルを生成する作業である。
- MQL5には、「MQL5 Source File」と「MQL5 Program」という2種類のファイル形式がある。このうち「MQL5 Source File」が自由に記述・編集できるファイル形式であり、この「MQL5 Source File」をコンパイルすることによって、「MQL5 Program」 というファイル形式が生成される。
- 「MQL5 Program」 をチャート上に挿入することによって、プログラムは実行される。
という事をお伝えしました。
今回は、MQL5ウィザードで設定をした直後、コメントアウト部分やプロパティ命令の部分を取り除いた後、残っている部分↓
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
}
についての解説を続けます。
OnInit関数については前回、前々回で解説しましたので、今回はOnDeinit関数についてです。
※1 「MQL5ウィザードって何?」という人は↓をご覧ください。
※2MQL5で自動売買プログラム作るにあたっては、MT5・メタエディター5がお使いのパソコンにインストールされている必要があります。
もし、まだMT5のダウンロードが完了していない方は、
こちらからデモ口座の開設とMT5のダウンロード・インストールを完了して頂ければと思います。
OnDinit関数とは?
※念のため、おさらさいですが、そもそも関数って何?↓
より簡単、かつ効率的にプログラムを動かす記述(掃除機や電気炊飯器のような家電みたいなもの)
のことです。
詳しくは↓をご覧ください。
結論から先に言うと、OnDeinit関数は
プログラムファイルがMT5のチャート上から削除された際に、一度だけ処理を行う関数
になります。
プログラムファイルをMT5のチャートに挿入した直後に1回だけ、指定した処理をする関数
になりますので、ちょうど逆になりますね。
厳密に言うと、チャート上から削除された、以外にもOnDeinit関数が作用する場合はあるのですが、MQL5未経験者の方は、今はそこにはこだわらなくても大丈夫です。
前回、OnInit関数がどのように作用するか確認するために↓のようなサンプルコードを作りました。
int OnInit()
{
Comment("チャートに挿入すると、1回だけ処理を行います");
return(INIT_SUCCEEDED);
}
今回はこのコードにOnDeinit関数を作用させる記述を加えていきます。
int OnInit()
{
Comment("チャートに挿入すると、1回だけ処理を行います");
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
Comment("チャートからプログラムファイルが削除されました");
}
前回の記事で、OnInit関数がどのように作用するのかを見てもらいましたが、今回はそれに加えて
チャートからプログラムファイルが削除されたときに、
「チャートからプログラムファイルが削除されました」
というコメントをチャート左上に表示させる記述を加えます。
※Comment関数は、()の中に書かれている文字情報をチャート左上に反映させる働きをする関数です。
プログラムファイルを削除する方法
では、実際にプログラムファイルを削除して、OnDeinit関数がどのように作用するのかを見ていきましょう。
MT5からプログラムファイルを削除するには、
- プログラファイルが挿入されているチャート上で右クリックして、そこから「エキスパートリスト」を選択。
- 表示されたプログラファイルの中から削除するプログラファイルを選択し、「削除」をクリック。
の手順を辿って行います。
動画にまとめてみましたので、ご覧ください。↓
いかがでしょう?
チャート挿入時は、OnInit関数が作用して、チャート左上に
「チャートに挿入すると、1回だけ処理を行います」
というコメントが表示されていたのが、チャートから削除処理を行った後は
「チャートからプログラムファイルが削除されました」
に変わったのが、確認できたのではないかと思います。
OnDeinit関数が作用して、Comment関数が処理を行った結果ですね。
まとめ
本日は以下のことをお伝えしました。
- OnDeinit関数はプログラムファイルがMT5のチャート上から削除された際に、一度だけ処理を行う関数である
最後までお読みいただきありがとうございました<(_ _)>
コメント