引数名 | 初期値 | I/O | 詳細 |
symbol | - | In | インジケータ計算するデータの通貨ペア名。
NULLは現在の通貨ぺアを意味します。 |
timeframe | - | In | 時間軸。
ENUM_TIMEFRAMES列挙の値を指定します。 0は現在の時間軸を意味します。 |
mode | - | In | インジケータラインインデックス
iFractals()関数用のインジケータラインID列挙の値を指定します。 |
shift | - | In | インジケータバッファから取得する値のインデックス。
(現在バーを基準にして、指定した時間軸のバー数分を過去方向へシフト) |
double result = iFractals( NULL, // 通貨ペア 0, // 時間軸 MODE_LOWER, // ラインインデックス 1 // シフト );
#property strict // strictは絶対に削除しない事 #property indicator_chart_window // カスタムインジケータをチャートウインドウに表示する // インジケータプロパティ設定 #property indicator_buffers 2 // カスタムインジケータのバッファ数 #property indicator_color1 clrRed // インジケータ1の色 #property indicator_type1 DRAW_ARROW // インジケータ1の描画タイプ #property indicator_color2 clrRed // インジケータ2の色 #property indicator_type2 DRAW_ARROW // インジケータ2の描画タイプ // インジケータ表示用動的配列 double _IndBuffer1[]; // インジケータ1表示用動的配列 double _IndBuffer2[]; // インジケータ2表示用動的配列 //+------------------------------------------------------------------+ //| OnInit(初期化)イベント //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer( 0, _IndBuffer1 ); // インジケータ1表示用動的配列をインジケータ1にバインドする SetIndexBuffer( 1, _IndBuffer2 ); // インジケータ2表示用動的配列をインジケータ2にバインドする SetIndexArrow( 0 , 218 ); // インジケータ1のアローシンボル設定 SetIndexArrow( 1 , 217 ); // インジケータ2のアローシンボル設定 return( INIT_SUCCEEDED ); // 戻り値:初期化成功 } //+------------------------------------------------------------------+ //| OnCalculate(tick受信)イベント //| カスタムインジケータ専用のイベント関数 //+------------------------------------------------------------------+ 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[], // Tick出来高 const long &volume[], // Real出来高 const int &spread[]) // スプレッド { int end_index = Bars - prev_calculated; // バー数取得(未計算分) for( int icount = 0 ; icount < end_index ; icount++ ) { // テクニカルインジケータ算出 double result1 = iFractals( NULL, // 通貨ペア 0, // 時間軸 MODE_LOWER, // ラインインデックス icount // シフト ); double result2 = iFractals( NULL, // 通貨ペア 0, // 時間軸 MODE_UPPER, // ラインインデックス icount // シフト ); _IndBuffer1[icount] = result1; // インジケータ1に算出結果を設定 _IndBuffer2[icount] = result2; // インジケータ2に算出結果を設定 } return( rates_total ); // 戻り値設定:次回OnCalculate関数が呼ばれた時のprev_calculatedの値に渡される }