MetaTrader5
新しいバーイベントハンドラーを使ったインジケーターの活用法
今回は、MetaTrader 5でのインジケーターにおける「新しいバー」イベントハンドラーの考え方についてお話しします。このアプローチの詳細は、「新しいバー」イベントハンドラーの記事で詳しく説明されています。ここでは、インジケーターのための解決策を紹介します。基本的なアイデアは同じで、新しいバーが出現したときだけ再計算を行うことができる便利な方法です。この方法は、OnCalculate()関数の直接的な使用に代わる便利な選択肢です。
以下に、新しいバーが出現したときにラインを表示するシンプルなインジケーターの例を示します:
//+------------------------------------------------------------------+
//| OnNewBarCalculate.mq5 |
//| Copyright 2010, Lizar |
//| Lizar@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, Lizar"
#property link "Lizar@mail.ru"
#property version "1.00"
#property indicator_chart_window
#include <OnNewBarCalculate.mqh> // OnNewBarCalculate()関数を呼び出す秘密//+------------------------------------------------------------------+
//| インジケーター用の新しいバーイベントハンドラー |
//+------------------------------------------------------------------+
int OnNewBarCalculate(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[])
{
//--- ここにOnCalculate()に似たコードを書けます。
//--- ただし、この関数は新しいバーが出現したときのみ呼ばれます(毎ティックではありません)
PrintFormat("新しいバー: %s",TimeToString(TimeCurrent(),TIME_SECONDS));
//--- 次回の呼び出しのためのprev_calculatedの返り値
return(rates_total);
}
2011.01.21