引数名 | 初期値 | I/O | 詳細 |
symbol | - | In | インジケータ計算するデータの通貨ペア名。
NULLは現在の通貨ぺアを意味します。 |
timeframe | - | In | 時間軸。
ENUM_TIMEFRAMES列挙の値を指定します。 0は現在の時間軸を意味します。 |
step | - | In | ステップ。
ストップの増分値。通常は0.02を使用します。 |
maximum | - | In | 最大値。
ストップの最大値。通常は0.20を使用します。 |
shift | - | In | インジケータバッファから取得する値のインデックス。
(現在バーを基準にして、指定した時間軸のバー数分を過去方向へシフト) |
#property strict // strictは絶対に削除しない事 #property indicator_chart_window // カスタムインジケータをチャートウインドウに表示する // インジケータプロパティ設定 #property indicator_buffers 1 // カスタムインジケータのバッファ数 #property indicator_color1 clrRed // インジケータ1の色 #property indicator_type1 DRAW_ARROW // インジケータ1の描画タイプ // インジケータ表示用動的配列 double _IndBuffer1[]; // インジケータ1表示用動的配列 //+------------------------------------------------------------------+ //| OnInit(初期化)イベント //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer( 0, _IndBuffer1 ); // インジケータ1表示用動的配列をインジケータ1にバインドする SetIndexArrow( 0 , 119 ); // インジケータ1のアローシンボル設定 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 result = iSAR( NULL, // 通貨ペア 0, // 時間軸 0.02, // ステップ 0.2, // 最大値 icount // シフト ); _IndBuffer1[icount] = result; // インジケータ1に算出結果を設定 } return( rates_total ); // 戻り値設定:次回OnCalculate関数が呼ばれた時のprev_calculatedの値に渡される }