2012年6月5日火曜日

FXのチャート分析ソフトMT4のインディケーターの作り方

FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)のインディケーターの作り方について解説します。

インディケーターの作り方の大まかな流れは次の通りです。
  1. MetaEditorの起動
  2. インディケーターの作成
  3. コンパイル

▼MetaEditorの起動

MT4のメニューから「ツール」、「MetaQuotes Language Editor」を選びます。


MetaEditorの画面が表示されますので、メニューから「File」、「New」を選びます。

Expert Advisor Wizardの画面が表示されますので、「Custom Indicator」のラジオボタンを選び、「次へ」のボタンをクリックします。


インディケーターの名前、作者名、Webサイトのアドレスを入力して、「次へ」のボタンをクリックします。なお、インディケーターの名前がファイル名になり、拡張子に「.mq4」が付いて保存されます。


「Indicator in aseparate window」は、インディケーターによって描画するラインなどをサブウィンドウに表示する時にチェックを入れます。チェックを入れないと、チャート画面に描画します。ここではチェックを入れないで「完了」のボタンをクリックします。


MetaEditorの「sample.mq4」の編集画面が表示されます。この編集画面でインディケーターを作成していきます。

▼インディケーターの作成


上の図はインディケーターの編集画面です。

インディケーターは、Metaquotes Language(MQL)というMT4専用の言語によって記述されています。なお、ここでは言語の解説は割愛します。

編集画面の内容を下記に書き換えます。

「sample.mq4」
//+------------------------------------------------------------------+
//| sample.mq4 |
//| sample |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "sample"
#property link "http://www.metaquotes.net"
//チャートウィンドウに描画
#property indicator_chart_window
//バッファの確保
#property indicator_buffers 3
//初期の色の設定
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_color3 Blue
//初期の本数を設定
extern int MA0_period=26;
extern int MA1_period=14;
extern int MA2_period=7;
//移動平均の数値のバッファを確保
double MA_buffer0[];
double MA_buffer1[];
double MA_buffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//移動平均1本目
SetIndexBuffer(0, MA_buffer0);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1);
//移動平均2本目
SetIndexBuffer(1, MA_buffer1);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);
//移動平均3本目
SetIndexBuffer(2, MA_buffer2);
SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 1);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//移動平均の取得
int limit=Bars-1-counted_bars;
for(int i=limit-1; i>=0; i--)
{
MA_buffer0[i] = iMA(NULL,0,MA0_period,0,MODE_SMA,PRICE_CLOSE,i);
MA_buffer1[i] = iMA(NULL,0,MA1_period,0,MODE_SMA,PRICE_CLOSE,i);
MA_buffer2[i] = iMA(NULL,0,MA2_period,0,MODE_SMA,PRICE_CLOSE,i);
}
return(0);
}
//+------------------------------------------------------------------+

このインディケーターは、3本の移動平均線を描画するものです。移動平均線の初期値として、26本、14本、7本を設定しています。また、それぞれの色の初期値として黄色、赤色、青色を設定しています。

▼コンパイル

作成したインディケーターをMT4で使用するには、「コンパイル」という作業が必要になります。

コンパイルは、MetaEditorの画面の上部の「Compile」のボタンをクリックするだけです。


コンパイルが終了すると、画面の下側に「0 error(s), 0 warning(s)」と表示されます。これは、コンパイルの作業でエラーや警告がなかったことを意味しています。


もし、コンパイルのエラーが発生した場合には、エラーの行番号とその内容が表示されますので修正を行います。

以上で、インディケーターの作成が終わりました。

MT4の画面に戻り、ナビゲーターのCustom Indicatorsの一覧に「sample」があることを確認します。そして、「sample」の文字をダブルクリックをするとインディケーターが起動します。