MENU
  • FX必要証拠金計算ツール(ハイレバ対応)
  • CFD必要証拠金計算ツール(XM専用)
  • FX複利計算シミュレーター
  • 余力に応じたロット計算ツール
  • お問い合わせ
FX取引に関するあれこれ
  • FX必要証拠金計算ツール(ハイレバ対応)
  • CFD必要証拠金計算ツール(XM専用)
  • FX複利計算シミュレーター
  • 余力に応じたロット計算ツール
  • お問い合わせ
  1. ホーム
  2. MQL開発
  3. ダウンロードしたMT4インジケータをマルチタイムフレーム化する方法

ダウンロードしたMT4インジケータをマルチタイムフレーム化する方法

2023 4/23
MQL開発
2023年4月23日

ダウンロードしたインジケーターをマルチタイムフレーム化する方法について記載します。

マルチタイムフレームでの分析は環境認識として有用ですので、是非ともご活用ください。

マルチタイムフレーム化にはある程度のプログラム技術が必要です。

目次

①ダウンロード

MQL公式サイトやMT4のターミナル、ネットからダウンロードしたインジケーターをご用意ください。

今回は、MT4のターミナルから「Heiken Ashi Smoothed」をダウンロードしましたので、これを例に説明します。

インストール方法

MT4のターミナルからは右クリックから「ダウンロード」をすれば自動的にインストールされます。

ネットからダウンロードした.mql4ファイルや.ex4を、次の「Indicators」フォルダに設置してください。

ダウンロードしたファイルが「.ex4」の場合

ダウンロードしたファイルが.ex4なら、「Indicators」に設置するだけでインストール完了です。

ダウンロードしたファイルが「.mql4」の場合

mql4ファイルは実行可能な形式にコンパイルする必要がありますので、次の手順を追ってください。

赤枠のボタンを押して、MetaEditorを起動します。

先ほど設置したファイルがありますので、そのファイルをダブルクリックしコードが表示された状態にして、赤枠部分のコンパイルを押してコンパイルしてください。

インストールはこれで完了です。

②MT4表示

MT4に表示された該当のインジケータをダブルクリックしてチャートに反映させてください。

③出力データのチェック

メニューの赤枠部分をクリックすると「データウィンドウ」が開きます。

これで、該当するインジケーターの出力データの形式と個数がわかりました。

④入力パラメータのチェック

チャートを右クリックして該当のインジケーターの設定画面を開いて、入力パラメータの確認を行います。

  • 変数名
  • 入力値
  • 色

⑤カスタムインジケーターの作成

MtetaEditorを起動し、今回作成するインジケーターの名前を入力して作成します。各画面の項目はデフォルトのままで構いません。

⑥マルチタイムフレームのテンプレート

とりあえず、今回作成したインジケーターをテンプレートとしてご利用ください。

コピペでコンパイルすれば一応動きます(事前にHeiken Ashi Smoothedのインストール要)。

//+------------------------------------------------------------------+
//|                                               MTF-Heikinashi.mq4 |
//|                                  Copyright 2022,Greeds Co., Ltd. |
//|                                               https://greeds.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022,Greeds Co., Ltd."
#property link      "https://greeds.net"
#property version   "1.00"
#property strict
#property indicator_chart_window

#property  indicator_buffers 4
#property  indicator_color1  Red
#property  indicator_color2  Lime
#property  indicator_color3  Red
#property  indicator_color4  Lime

double     Buf1[];
double     Buf2[];
double     Buf3[];
double     Buf4[];

input ENUM_TIMEFRAMES in_timeFrame = PERIOD_CURRENT;      //マルチタイムフレーム
input ENUM_MA_METHOD  ma_method     = MODE_SMMA;          //移動平均の種別
input int             ma_period     = 6;                  //移動平均の期間
input ENUM_MA_METHOD  ma_method2    = MODE_LWMA;          //移動平均の種別
input int             ma_period2    = 2;                  //移動平均の期間

int OnInit()
{
  SetIndexBuffer(0, Buf1 );
  SetIndexBuffer(1, Buf2 );
  SetIndexBuffer(2, Buf3 );
  SetIndexBuffer(3, Buf4 );
  SetIndexStyle(0, DRAW_HISTOGRAM , STYLE_SOLID , 1);
  SetIndexStyle(1, DRAW_HISTOGRAM , STYLE_SOLID , 1);
  SetIndexStyle(2, DRAW_HISTOGRAM , STYLE_SOLID , 3);
  SetIndexStyle(3, DRAW_HISTOGRAM , STYLE_SOLID , 3);

  return( INIT_SUCCEEDED );
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
  int limit = Bars - prev_calculated;
  for(int i=0; i<limit; i++)
  {
    int shift = iBarShift(NULL, in_timeFrame, time[i]);
    double hoge1 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,0,shift);
    double hoge2 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,1,shift);
    double hoge3 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,2,shift);
    double hoge4 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,3,shift);
    Buf1[i]=hoge1;
    Buf2[i]=hoge2;
    Buf3[i]=hoge3;
    Buf4[i]=hoge4;
  }
  return(rates_total);
}

⑦入出力データ部分の実装

今回作成するインジケーターが既存の動きと違った動きをしてはいけないので、まず全くの同条件で作成します。

③で確認した出力データ、④で確認した入力パラメータに合わせて次のようにしてください。

数値などは既存のものを見ればわかりますが、移動平均線の種別や適用価格など、画面では確認できないものも多いです。その場合、コードを書き換えるなどして、既存処理と同じ動きになるように調整してください。

同じ動きにならない状態でマルチタイムフレームにしても、その動きが正しいのかが分からないからです。

不慣れな間は調整に時間がかかるかもしれませんが、根気よく調整してください。

⑧ロジック部分の実装

これは、マルチタイムフレームに必要な最低限の処理だけです。

簡単な解説を付け加えておきます。

for文処理

  int limit = Bars - prev_calculated;
  for(int i=0; i<limit; i++)

for文でチャートを0番目からlimit回ループ処理を行っています。これによりインジケーターの処理が行われます。

この例では0番目からループをさせています。0番目はチャートの一番右端の最新ローソクになっています。

つまり、0番目から順番にループ処理をさせるということは、右端から左に向かって処理を行っていくイメージで考えてください。

limitから0に向かって処理する場合もありますので、参考までに。

マルチタイムフレームの要

    int shift = iBarShift(NULL, in_timeFrame, time[i]);

今処理中のローソクが、指定したタイムフレームのどの場所に該当するのかを教えてくれる処理だと思ってください。

インジケーターからのデータ取得

    double hoge1 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,0,shift);
    double hoge2 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,1,shift);
    double hoge3 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,2,shift);
    double hoge4 = iCustom(NULL,in_timeFrame,"Downloads/Heiken_Ashi_Smoothed",ma_method,ma_period,ma_method2,ma_period2,3,shift);

ダウンロード・自作したインジケーターはiCsutom関数で呼び出すことができます。

  • インジケーターのファイル名
  • そのインジケーターの入力パラメータ
  • そのインジケーターからの出力データ

これらを指定してiCustom関数を実行することで、簡単にデータを取得することが可能になっています。

Heiken_Ashi_Smoothedは出力データが4個ありますので、それぞれを取得するために、shiftの前で番号を指定して取得しています。

データの出力

    Buf1[i]=hoge1;
    Buf2[i]=hoge2;
    Buf3[i]=hoge3;
    Buf4[i]=hoge4;

⑦でチャートと配列の紐付けを行っているので、配列にデータをセットするだけでチャートに描画されるようになります。

⑨既存処理との再チェック

データウィンドウで出力データに差異がないかチェックします。

差異がある場合、描画がずれたりしますので調整を行なってください。

  • パラメータが違うのか
  • 表示スタイルが違うのか
  • 実装方法がまずいのか

同じ出力にならない場合、なにかを間違えているということですので原因追及してみてください。

⑩マルチタイムフレーム確認

入力パラメータのマルチタイムフレームを現在の時間軸より上の時間で合わせて、描画がこのようにギザギザしていれば問題ありません。

これでダウンロードしたインジケーターのマルチタイムフレーム化が完了です。

注意点

マルチタイムフレーム化はプログラムを触ります。

わけがわからない人は諦めてください。

この記事ではコンパイルなどする方法を一応書いておりますが、やはり初見の人には難しく感じる部分があるかもしれません。

しかし、それほど難しい実装方法でもありませんので、不慣れな人も一度試してみてください。

面白いですよ!

MQL開発
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 【MT4マルチタイムフレーム】WPR(MTF-WPR)
  • FX必要証拠金計算ツール(ハイレバ対応)の使い方について

この記事を書いた人

たかはしのアバター たかはし

FX取引に関するあれこれVER2.0の管理人たかはしです。
ギャンブルに近い無謀なトレードを繰り返して損失を膨らませてきた元ハイレバトレーダーです。
レバレッジは使い方次第で大きな武器となる可能性を信じ、今までとは違う戦略的なトレードで生まれ変わろうとしています。

関連記事

  • 【MT4マルチタイムフレーム】WPR(MTF-WPR)
    2023年4月22日
  • 【MT4マルチタイムフレーム】標準偏差(MTF-StdDev)
    2023年4月22日
  • 【MT4マルチタイムフレーム】RVI(MTF-RVI)
    2023年4月22日
  • 【MT4マルチタイムフレーム】パラボリックSAR(MTF-ParabolicSAR)
    2023年4月22日
  • 【MT4マルチタイムフレーム】オンバランスボリューム(MTF-OBV)
    2023年4月22日
  • 【MT4マルチタイムフレーム】MoneyFlowIndex(MTF-MoneyFlowIndex)
    2023年4月22日
  • 【MT4マルチタイムフレーム】モメンタム(MTF-Momentum)
    2023年4月22日
  • 【MT4マルチタイムフレーム】ゲーターオシレーター(MTF-Gator)
    2023年4月22日
各種ツール
新着記事
  • ドル円が150円を超えられない意味
    2023年10月4日
    市況
人気記事
  • 【MT4】「CustomCandle6」上位時間足のローソクをチャートに表示するインジケーター
  • 【MQL5】iCustomでインジゲーターの出力が複数個あるデータの取得方法
  • 【MT4インジケーター】水平線を自動描画する自作インジケーター
  • 【MT4インジケーター】Beginner Alertは分かりやすいサポレジとして使える
  • 【MQL】パラメータをリスト形式にする方法
カテゴリー
  • FX初心者 (2)
  • MQL入門 (2)
  • MQL開発 (30)
  • XM (8)
  • お知らせ (11)
  • インジケーター (37)
  • ツール (3)
  • テクニカル分析 (1)
  • トレード手法 (4)
  • 基礎知識 (6)
  • 市況 (11)
目次
たかはし
昔ハイレバでボコボコにやられた管理人
最近トレードをやり直そうかと考えている
カテゴリー
  • FX初心者 (2)
  • MQL入門 (2)
  • MQL開発 (30)
  • XM (8)
  • お知らせ (11)
  • インジケーター (37)
  • ツール (3)
  • テクニカル分析 (1)
  • トレード手法 (4)
  • 基礎知識 (6)
  • 市況 (11)
アーカイブ
スポンサーリンク

© FX取引に関するあれこれ.

目次