この投稿文は次の言語で読めます: 日本語
Contents
概要
前回 、MT4版のインジケーターをご紹介しましたが、今回はMT5版です。
インジケーターバッファの管理の仕方が大きく変わり感覚を掴むのに苦戦しましたが、
上記にサンプルコードが多々あり、書き方の勉強にすることができます。
一から移行方法を覚えるのも一つの手ですが、正しく動くもののイメージを先に掴むことで
短時間でMQL5の文法に慣れることができてオススメです。
参考
Multi TimeFrame対応についてもいくつかサンプルがありました。
今回は、MultiSilverTrend_x10を参考にさせて頂きました。
指標の見せ方がとてもキレイで勉強になります。
QQEで作ってみた
インジケーター表示内容
10行分の線がありますが、各時間足を指しています。
一番下から、1時間足、2時間足、3時間足、4時間足、6時間足、8時間足、12時間足、日足、週足、月足。
色は4色で、以下のようにしました。
赤(明) | RSI値50未満かつ実戦>破線 |
赤(暗) | RSI値50以上かつ実戦>破線 |
青(暗) | RSI値50以下かつ実戦<破線 |
青 (明) | RSI値50より大きく、かつ事前<破線 |
インジケーターのレンダリング用パラメータ
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_color1 clrDeepSkyBlue, clrNavy, clrMaroon, clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
#property indicator_label1 "Signal Line 1
indicator_color に対し、複数のカラーコードを渡すことができ、
これによってカラー指定画面は下記のようになります。
インジケーターバッファの初期化
SetIndexBuffer(number,ind_color_buffer,INDICATOR_COLOR_INDEX);
SetIndexBuffer の第三引数にINDICATOR_COLOR_INDEX を渡すことで、
各足毎にインジケーターの色を指定することができます。
色の指定
if(main_qqe_signal[0]==1)
{
if(main_rsi[0]<50){
//買シグナル(強)
ind[number].m_color_line_buffer[bar]= 3;
ind[number].m_color_ary_buffer[bar] = 3;
} else{
//買シグナル(弱)
ind[number].m_color_line_buffer[bar]= 2;
ind[number].m_color_ary_buffer[bar] = 2;
}
} else {
if(main_rsi[0]<50){
//売シグナル(弱)
ind[number].m_color_line_buffer[bar]= 1;
ind[number].m_color_ary_buffer[bar] = 1;
} else{
//売シグナル(強)
ind[number].m_color_line_buffer[bar]= 0;
ind[number].m_color_ary_buffer[bar] = 0;
}
}
という感じで、
#property indicator_color で指定した順に、 0, 1, 2, .... という数値をバッファにセットすることで
色を選択させます。
まとめ
最初の勉強に時間がかかりましたが、理屈がわかるとコーディングはMT4の場合よりもシンプルで、表現力も高くなりました。
つい先日もMT5最新版のリリースがあり、実行速度の向上や MT4ライクな関数が追加されたとの発表がありました。
MT5のコーディング作法が随時変わるのは辛い部分もありますが、一方で享受できるメリットが大きくなっていることも実感しています。