【MQL4関数】OnStart関数とは?スクリプトだけに使われるイベント関数!

【中級編】MQLプログラムの読み方・書き方
朝日奈りさ
朝日奈りさ

OnStart関数は、自動売買EAを作成するために使われる関数ではありません
スクリプトというプログラムで使われるイベント関数で、よほど詳しくないと使う機会はないでしょう。

OnStart関数とは

「自動売買を作るほどじゃないけど、少しだけプログラムを実行したい!」

という方は、スクリプトを作成してみましょう!

例えば、勝敗を集計してファイルに出力するだけのプログラムなどです。

ちょっとしたプログラムを動かすときは、自動売買プログラムよりもスクリプトが適切です。

 

スクリプトを新規作成すると、以下のようなプログラムが自動作成されます。

//+------------------------------------------------------------------+
//|                                                  onStartTest.mq4 |
//|                                     Copyright 2022, Asahina Risa |
//|                                      https://mql-programing.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, Asahina Risa"
#property link      "https://mql-programing.com/"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   
  }
//+------------------------------------------------------------------+

このように、すでにOnStart関数が記述されています。

OnStart関数とは、スクリプトだけに使用される関数なので、馴染みのない方が多いと思います。

スクリプトで使われる唯一のイベント関数です。

OnStart関数はイベント関数なので、イベントが起こったときに実行されます。

そのイベントとは、「ロウソク足が動いたとき」です。

感覚的には、OnTick関数と似たような感じです。

そのため、OnTick関数とOnStart関数を、一緒のものだと勘違いする方が多いです。

実際、OnTick関数をOnStart関数に書き換えても、問題なく動きます。

しかしMT4では、OnTick関数が記述されているのが自動売買EAで、OnStart関数が記述されているのがスクリプトと判断するので、どこかで不具合が発生する可能性があります。

そのような不具合を作らないためにも、今回はOnStart関数を理解していきましょう!

OnStart関数の書き方

OnStart関数の使い方は、基本的な関数と同じです。

関数をマスターしていない方はこちらの記事が参考になります。

 

基本的な書き方

OnStart関数はとてもシンプルな関数です。

引数なしで実行できます。

OnStart関数の基本的な書き方は以下の通りです。

void OnStart()
  {
   
  }

 

返り値は void型なので、特にreturnを書く必要はありません。

戻り値

void型

引数

なし

 

 

まとめ

OnStart関数は、スクリプトで実行される唯一のイベント関数です。

ロウソク足が動くたびに実行されます。

そのため、OnTick関数と混同してしまうことがありますので、注意しましょう。

余計な不具合を出さないためにも、正しくOnStart関数を使ってください。