MTF(マルチタイムフレーム)のテンプレート
自分でカスタムインジケーターやEAそして制作する際に
MTF(マルチタイムフレーム)で作成する場合が多いと思います。
MTF(マルチタイムフレーム)を作るのは難しいと感じたりしますが、実は簡単に作れます。
今回は、MTF(マルチタイムフレーム)のテンプレートを紹介します。
パラメーター
まず、inputでenumを活用したタイムフレームを作りましょう。
enumについては以下の記事を参照してください。
【MQL言語入門】定数をひとまとめにすることができる『Enum(列挙型)』についてわかりやすく説明してみた
Enum(列挙型) Enum(列挙型)とは、複数の定数をひとつにまとめておくことができる型のことです。 定数をひとまとめにすることができる優れものです。 Enumで定義する定数のことを列挙子と呼びます。 Enumの特徴 E...
ENUM_TIMEFRAMESは以下の表に従い取得したい時間軸を指定します。
ID | 値 | 詳細 |
PERIOD_CURRENT | 0 | 現在チャートの時間軸 |
PERIOD_M1 | 1 | 1分 |
PERIOD_M5 | 5 | 5分 |
PERIOD_M15 | 15 | 15分 |
PERIOD_M30 | 30 | 30分 |
PERIOD_H1 | 60 | 1時間 |
PERIOD_H4 | 240 | 4時間 |
PERIOD_D1 | 1440 | 1日 |
PERIOD_W1 | 10080 | 1週間 |
PERIOD_MN1 | 43200 | 1ヶ月 |
変数の型はENUM_TIMEFRAMESという事前定義済みのENUM列挙型を使用しています。
初期値はPERIOD_CURRENT(現在のチャートの時間軸)を設定します。
ちなみにこのENUM列挙型というのは、整数(int)型の定数リストです。
この定数リストの値は全て重複していないユニーク値になります。
input ENUM_TIMEFRAMES timeFrame = PERIOD_CURRENT;//MTF
OnCalculate()
iBarShiftは指定したオープン時間のバーシフト数を返します。
iBarShift(通貨ペア名, 時間足, 時間, 戻り値モード)
- 通貨ペア:通貨ペアを文字列で指定
- 時間足:時間足を整数または定数で指定
- 時間:datetime型の時間を指定
- 戻り値モード:false or true
具体的には以下のように記述しましょう。
int shift = iBarShift(NULL, timeFrame, time[i]);//シフト数iの指定時間足のシフト数
そして必要なテクニカル指標関数のshiftに入れるだけです。
double mtfMa = iMA(NULL, timeFrame, ma_period, 0, MODE_SMA, PRICE_CLOSE, shift);//MTFのMA
とても簡単にできます。具体的には以下のような形で記述していきます。
int limit = rates_total-maPeriod-1; for(int i=limit; i>=1; i--) { int shift = iBarShift(NULL, timeFrame, time[i]);//シフト数iの指定時間足のシフト数 double mtfMa = iMA(NULL, timeFrame, ma_period, 0, MODE_SMA, PRICE_CLOSE, shift);//MTFのMA }
まとめ
今回はMTF(マルチタイムフレーム)のテンプレートをご紹介しました。
こうしたテクニックをいくつか引き出しと持っておくだけで、開発の幅が広がります。
ぜひマスターしておくようにしましょう。
コメント