このインジケーターは以下のように表示されます:

視覚的な効果を得るために、以下の3種類のグラフィカル構成が使用されています:
- DRAW_HISTOGRAM2("レベルUP");
- DRAW_LINE("CCI");
- DRAW_HISTOGRAM2("レベルDOWN")。

インジケーターの入力設定
- 平均化期間 - インジケーターの平均化期間;
- レベルUP - UPレベルの値;
- レベルDOWN - DOWNレベルの値。
UPレベルとDOWNレベルは、インジケーターのサブウィンドウに即座に表示されます:

エキスパートアドバイザーでのインジケーターデータの取得方法
DRAW_HISTOGRAM2スタイルは、2つのインジケーターバッファに基づいているため、データウィンドウには2つのレベルUP値と2つのレベルDOWN値が表示されます:

これらの値は、インジケーターバッファ0から4までに対応しています。
エキスパートアドバイザーでは、インジケーターハンドルを作成するために iCustomを使用します:
//--- 入力パラメーター input int Inp_CCI_ma_period = 14; // 平均化期間 input double Inp_CCI_LevelUP = 90; // レベルUP input double Inp_CCI_LevelDOWN =-90; // レベルDOWN //--- int handle_iCustom; // iCustomインジケーターのハンドルを格納するための変数 //+------------------------------------------------------------------+ //| エキスパート初期化関数 | //+------------------------------------------------------------------+ int OnInit() { //--- iCCIインジケーターのハンドルを作成 handle_iCustom=iCustom(Symbol(),Period(),"CCI Color Levels",Inp_CCI_ma_period,Inp_CCI_LevelUP,Inp_CCI_LevelDOWN); //--- ハンドルが作成されなかった場合 if(handle_iCustom==INVALID_HANDLE) { //--- 失敗を通知し、エラーコードを出力 PrintFormat("シンボル %s/%s の iCCI インジケーターのハンドル作成に失敗しました、エラーコード %d", Symbol(), EnumToString(Period()), GetLastError()); //--- インジケーターは早期に停止 return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); }
ここでは、CCI Color Levelsインジケーターが[data folder]\MQL5\Indicators\に配置されていることが前提です。
インジケーター値の取得方法(バッファ0、2、および4のみが重要):
//+------------------------------------------------------------------+ //| エキスパートティック関数 | //+------------------------------------------------------------------+ void OnTick() { //--- double level_up = iCustomGet(handle_iCustom,0,0); // バッファ #0 -> BufferUpHigh double cci = iCustomGet(handle_iCustom,2,0); // バッファ #2 -> BufferCCI double level_down = iCustomGet(handle_iCustom,4,0); // バッファ #4 -> BufferDownLow string text="レベルUP #0: "+DoubleToString(level_up,2)+"\n"+ "CCI #0: "+DoubleToString(cci,2)+"\n"+ "レベルDOWN #0: "+DoubleToString(level_down,2); Comment(text); }
上記のスクリーンショットでは、マウスがインデックス0のバーにポイントしており、インジケーターデータを持つ「データウィンドウ」も表示され、EAの情報がバッファ0、2、および4をチャート上に表示しています。