[MQL]EAとインジケータとスクリプトの違いまとめ
EAとスクリプトとインジケーターの違いを明確に知っていますか?
私はざっくりとは知っていましたが、正確かと言われると正直あやふやでした。そこで、それぞれの違いをあらためて勉強し直しました。
この記事では、EAとインジケーターとスクリプトの違いをまとめて説明します。
MQLのプログラミングをするならば正確に知っておいて損はないと思います。
EA/スクリプト/インジケータの定義
EA、スクリプト、インジケータのそれぞれの定義は以下の通りです。
- EA(Expert Advisor)
- 毎ティック実行されるプログラム。トレード(注文)機能を有する。主にトレードを実行するために使用する。
- スクリプト(Script)
- 1回のみ実行されるプログラム。トレード(注文)機能を有する。1度だけ処理を実行したい場合に使用する。
- インジケータ(Indicator)
- 毎ティック実行されるプログラム。トレード(注文)機能を持たない。計算した値をチャートにグラフィカルに表示するために使用する。
このあたりはだいたいイメージ通りでしょうか。一番のポイントはインジケータはトレード機能を持たないというところです。
EA/スクリプト/インジケータの主な違い
EAとスクリプトとインジケータの主な違いは下の表の通りです。
項目 | EA | スクリプト | インジケータ |
---|---|---|---|
プログラムの実行期間 | 長期 | 1回 | 長期 |
トレードの機能 | 〇可 | 〇可 | ×不可 |
ライン等の表示 (オブジェクトによるもの) |
〇可 | 〇可 | 〇可 |
ライン等の表示 (インジケータバッファによるもの) |
×不可 | ×不可 | 〇可 |
1つのチャートで複数同時使用 | ×不可 | ×不可 | 〇可 |
他のプログラムから実行(※1) | ×不可 | ×不可 | ×不可 |
※1:EA、スクリプト、インジケータのいずれも他のプログラムから呼び出して実行することはできません。ただし、iCustom()
関数を使用することでインジケータのデータ(インジケータバッファの値など)を取得することはできます。
表の差異からわかるように、「スクリプトは1回だけ実行するEA」と言えます。
EA/スクリプト/インジケータで使える関数の違い
「EAまたはスクリプト」と「インジケーター」では、使用可能な関数に違いがあります。それぞれで使用不可の関数はそれぞれ下の表の通りです。
プログラム | 使用不可の関数 |
---|---|
EAまたはスクリプト |
IndicatorBuffers() IndicatorCounted () IndicatorDigits() IndicatorShortName() SetIndexArrow() SetIndexBuffer() SetIndexDrawBegin() SetIndexEmptyValue() SetIndexLabel() SetIndexShift() SetIndexStyle() SetLevelStyle() SetLevelValue()
|
インジケータ |
OrderSend() OrderClose() OrderCloseBy() OrderDelete() OrderModify()
|
上記の表の通り、EAまたはスクリプトではインジケーターバッファーがらみの関数を使うことができません。一方でインジケータはオーダーがらみの関数を使うことができません。
まとめ
EAとスクリプトとインジケータの違いの説明でした。
もっと詳しく知りたい方はMQL4.comの以下のページあたりを参照ください(ただし英語のみ)
MQL4.com「Program types」「Creation of Custom Indicators」
では良いトレードを!
コメント
この記事へのコメント(0 件)