
MQL4 インジケーター作成
SetIndexArrow()
- できること
- 矢印表示のバッファの記号(Wingdings コード)を設定する
- 対応
- MQL4
SetIndexArrow() とは
MQL4 のカスタムインジケーターで、DRAW_ARROW で表示するバッファの記号を Wingdings フォントの文字コードで指定する関数です。233 が上向き矢印、234 が下向き矢印です。
SetIndexArrow() の書式と引数
void SetIndexArrow(int index, int code)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
index | int | 必須 | バッファの番号。 |
code | int | 必須 | Wingdings の文字コード(32〜255)。233=上矢印、234=下矢印、159=点 など。 |
戻り値
なし
SetIndexArrow() の使い方(コード例)
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrRed
double ArrowBuf[];
int OnInit()
{
SetIndexBuffer(0, ArrowBuf);
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 233); // 上向き矢印
SetIndexEmptyValue(0, EMPTY_VALUE);
return INIT_SUCCEEDED;
}
// 陽線の下に矢印を出す
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[],
const long &volume[], const int &spread[])
{
int limit = rates_total - prev_calculated;
if(prev_calculated > 0) limit++;
for(int i = 0; i < limit && i < rates_total; i++) // MQL4 は 0 = 最新
ArrowBuf[i] = (close[i] > open[i]) ? low[i] - 10 * _Point : EMPTY_VALUE;
return rates_total;
}MetaEditor でコンパイルできることを確認済みです。
SetIndexArrow() の注意点
- 矢印を出さないバーには EMPTY_VALUE を入れます(0 を入れると価格 0 の位置に矢印が出ることがあります)。
MQL4 と MQL5 の違い
MQL5 では PlotIndexSetInteger(番号, PLOT_ARROW, 233) で設定します。












