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関数を使ってください。