———————————————————–
前回はproperty命令(#property directive)とは何か?
という事をお話ししました。↓
#property命令について改めておさらいしておくと、
「プログラムのメインではないけど、補助的な細かい設定を#property の後に色々書くことによってできる」
機能の記述方式のことです。
#(シャープ)を書いて、その後にpropertyを書いて、その後MQL5のルールに従って、色々書く・・・。
↑書き方はそんな感じです。(#もpropertyも半角で記述してください。全角だとエラーが出てしまいます)
メタエディターの「新規作成」アイコンをクリックして、MQLウィザードの設定をすると、
#property copyright~
#property link~
#property version~
といった#property命令の記述が自動的にファイルに記述されます。
これらは著作者、ホームページ、バージョンに関する表記で、自動売買プログラムに直接関係あるわけではないから、なんなら消してしまっても構わない、
そんな話を前回しました。今回はその続きです。
※メタエディターについては↓をご覧ください
※MQL5で自動売買プログラム作るにあたっては、メタトレーダー5・メタエディター5がお使いのパソコンにインストールされている必要があります。
もし、まだメタトレーダー5のダウンロードが完了していない方は、
こちらからデモ口座の開設とメタトレーダー5のダウンロード・インストールを完了して頂ければと思います。
OnInit関数とは?
前回までで、
コメントアウトされている部分を消し、
#property命令の部分を消し、↓のような記述が残りました。
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
}
今回は一番上に記載されている、
int OnInit()
{
return(INIT_SUCCEEDED);
}
の部分を見ていこうと思います。
この部分をOnInit関数と言います。
そもそも関数って何?
OnInit関数とは何か?、を説明する前に
そもそも関数って何?
と疑問に思われる方もいるかと思います。
1次関数や、2次関数といった言葉を中学高校で聞いて言葉自体を見知っている人は多いと思います。
(そして嫌悪感の残像も・・・)
関数の詳細については、今後講座記事の第25回で一つの単元として取り扱っていく予定ですが、
とりあえず今は関数をこのように考えてください。↓
より簡単、かつ効率的にプログラムを動かす記述
・・・どういうことか?
例えば、部屋の中を掃除することを想像してみてください。
ほうきとちり取りでごみを集めるより、掃除機でごみを集めた方がより簡単、かつ効率的ですよね?
あるいは、ご飯を炊くとき。
ガスと釜を使って炊くより、電気炊飯器を使った方が、より簡単、かつ効率的ですよね?
プログラミングにおける、関数とは↑の例でいうところの、掃除機や電気炊飯器のようなものと思ってくれれば大丈夫です。
プログラミングの記述の仕方にも、色々なやり方があり、その中で関数は、より簡単かつ効率的にプログラミングをしたいという必要性に応じて生まれたものです。
話が若干長くなりましたが、OnInit関数はその中の一つという訳です。
OnInit関数の機能と使い方
関数、というものの性質をざっくり説明したところで改めて↓の記述を見てみましょう。
int OnInit()
{
return(INIT_SUCCEEDED);
}
これだけ見ても、まだまだ分からないことが多いですよね?
「一番最初のintって何?」
「{}の中にあるreturn(INIT_SUCCEEDED);って何?」
・・・もっともな疑問ですが、
int の意味や
return(INIT_SUCCEEDED);の意味については、
今後詳しく扱っていきますのでご安心ください。
※int については第11回「データ型その1 整数型」にて解説をしております。
※returnについては第42回「return演算子について」 にて解説をしております。
先ほど、関数を掃除機や電気炊飯器のような家電みたいなもの、と説明しましたが、それで言うと
int や return(INIT_SUCCEEDED);の内容を理解するということは、
掃除機や炊飯器を分解して、中の仕組みを理解すること
に近いです。
この記事を読んでいる方というのは、MT5でEAを作ろうという意思がある方=開発者に当たるわけですから、いずれは理解しなくてはいけないことではあるんですが、
順番としては、まずは家電自体の使い方、すなわちOnInit関数の使い方を理解することが先になります。
という訳で、OnInit関数の機能と使い方なんですが、まず機能としては
プログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする
関数になります。
人によっては、
「プログラムファイルをチャートに挿入?」
・・・と再び新たな疑問を生じさせてしまったかもしれません。
OnInit関数の使い方を見てもらううえで、その「プログラムファイルをチャートに挿入」という事の意味やコンパイルという操作も説明したいので、次回の記事「コンパイルについて」
で、OnInit関数の使い方を画像や動画でお届けする予定です。
今回はいったん以上とさせていただきます。
まとめ
今回の記事では↓のようなことをお伝えしました。
- 関数とはより簡単、かつ効率的にプログラムを動かす記述である。
- 日常生活の中で言うと、掃除機や電気炊飯器のような便利家電みたいなものである。
- OnInit関数は、プログラムファイルをチャートに挿入した直後に1回だけ、指定した処理をする関数である。
最後までお読みいただきありがとうございました<(_ _)>
※関数について、先に詳しく知りたい、という方は↓の記事をご覧ください。
先に読んでも特に差し支えありません。
MQL5 EA講座 第4回「#プロパティ命令(#property directive)」←
※
※なお、この先EAの自作していく過程でどのようにOnInit関数を用いていくか?という具体的な記述方法については以下↓の講座記事群で取り扱っていく予定です。(まだ見なくても大丈夫です)
・MQL5 EA講座 第68回「簡単な仕組みのMT5用EAを作るーその1ー」
・MQL5 EA講座 第92回「待機注文クラスを使ってEAを作る」
・MQL5 EA講座 第110回「インジケータ取得クラスに派生クラスを追加する」
コメント