0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MQLの基本的な関数とか

Last updated at Posted at 2019-12-21

さっくりとだけ解説。
詳しい話はこのサイトを見てください。

最初についてくるvoidとかintとかdoubleって何?

戻り値の型です。代入するときに使います。
intは整数(integer)、doubleは小数(精度浮動小数点数)、void(何もなし)

例えば

test
a = TimeCurrent();

みたいなことをすると、aにはその時のサーバー時間が「整数」で入ります。
「int TimeCurrent(){}」みたいに定義されてるので、整数が入るわけです。
このintがdoubleであったならば小数だし、voidであれば入れる値がないのでエラーとなるはずです。

他にもいろいろありますが、bool(真偽値)とstring(文字列)、datetime(日付時刻)だけでもいろんなことができます

EA,インジケータ、スクリプト共通

宣言部

下に羅列されている関数(On~~~)共通で使う変数、定数を定義する。
ここで宣言せず、以下の関数内で宣言した場合は、その関数のみで使われることになる。

例えば、EAが稼働した期間を測定したいとする。その場合、最初と最後のサーバー時間の差を求めればいい。
OnInit()EAを開始したときのサーバー時間を記録しておいて、OnTester()でその時のサーバー時間との差を求める。
複数の関数で同じ変数を扱う必要があるため、ここに定義する必要がある。

int OnInit(){}

Initialize(初期化する)。voidもOK
EAが稼働し始めて最初に通る場所。
最初に初期化したいものを入れておく。
例)EAが開始したときのサーバー時間

void OnDeinit(){}

Deinitialize(初期化をもとに戻す)。
EAを終了するときに呼び出される関数。
何に使うんだろ?ファイル書き込みを終了するとか?

EA, インジケータ共通

void OnTimer(){}

指定の時間が経過したら通る。
時間指定をするには、OnInit()内でEventSetTimer(int)を利用する。intには指定した秒数を入れる。
タイマーを解除するには、EventKillTimer()を利用する。
OnTickで良くない?って思う

void OnChartEvent(){}

チャートに何かあったときに通る。
「何が」あったときに通すのかは設定できる。
例)クリックされた、更新された、カーソルが入った・出た

EAのみ

void OnTick(){}

Tickごとに処理される。めっちゃ使う。

double OnTester(){}

バックテスト・最適化のときのみ。
OnDeinit()の手前で呼び出される
MT5ではカスタム最大を返すことができる。便利。

インジケーターのみ

int OnCalculate(){}

OnTickとほぼ同じ。インジケーターを表示するのに必要な値を計算する場所。

スクリプトのみ

void OnStart(){}

スクリプトを開始したときに通るはず。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?