
MQL4MQL5 テクニカル指標
iIchimoku()
- できること
- 一目均衡表の各線の値を取得する
- 対応
- MQL4・MQL5
iIchimoku() とは
一目均衡表(転換線・基準線・先行スパンA・先行スパンB・遅行スパン)を計算する関数です。どの線を取得するかを指定します。
iIchimoku() の書式と引数
MQL4 の場合MT4
double iIchimoku(
string symbol,
int timeframe,
int tenkan_sen,
int kijun_sen,
int senkou_span_b,
int mode,
int shift
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
timeframe | int | 必須 | 時間足。0 または PERIOD_CURRENT でチャートの時間足。 |
tenkan_sen | int | 必須 | 転換線の期間(標準は 9)。 |
kijun_sen | int | 必須 | 基準線の期間(標準は 26)。 |
senkou_span_b | int | 必須 | 先行スパンB の期間(標準は 52)。 |
mode | int | 必須 | 取得する線。MODE_TENKANSEN、MODE_KIJUNSEN、MODE_SENKOUSPANA、MODE_SENKOUSPANB、MODE_CHIKOUSPAN。 |
shift | int | 必須 | 値を取得するバーの位置。0 が現在(未確定)のバー、1 がひとつ前の確定したバー。 |
戻り値(MQL4)
指定した線の値。
MQL5 の場合MT5
int iIchimoku(
string symbol,
ENUM_TIMEFRAMES period,
int tenkan_sen,
int kijun_sen,
int senkou_span_b
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
period | ENUM_TIMEFRAMES | 必須 | 時間足。PERIOD_CURRENT でチャートの時間足。 |
tenkan_sen | int | 必須 | 転換線の期間(標準は 9)。 |
kijun_sen | int | 必須 | 基準線の期間(標準は 26)。 |
senkou_span_b | int | 必須 | 先行スパンB の期間(標準は 52)。 |
戻り値(MQL5)
インジケーターのハンドル。バッファ番号は 0 転換線(TENKANSEN_LINE)、1 基準線(KIJUNSEN_LINE)、2 先行スパンA(SENKOUSPANA_LINE)、3 先行スパンB(SENKOUSPANB_LINE)、4 遅行スパン(CHIKOUSPAN_LINE)です。
iIchimoku() の使い方(コード例)
MQL4
double tenkan = iIchimoku(_Symbol, 0, 9, 26, 52, MODE_TENKANSEN, 1);
double kijun = iIchimoku(_Symbol, 0, 9, 26, 52, MODE_KIJUNSEN, 1);
Print(tenkan > kijun ? "転換線が基準線より上" : "転換線が基準線以下");MQL5
int hIchi = INVALID_HANDLE;
int OnInit()
{
hIchi = iIchimoku(_Symbol, PERIOD_CURRENT, 9, 26, 52);
return hIchi == INVALID_HANDLE ? INIT_FAILED : INIT_SUCCEEDED;
}
void OnTick()
{
double tenkan[], kijun[];
if(CopyBuffer(hIchi, TENKANSEN_LINE, 1, 1, tenkan) < 1 || CopyBuffer(hIchi, KIJUNSEN_LINE, 1, 1, kijun) < 1)
return;
Print(tenkan[0] > kijun[0] ? "転換線が基準線より上" : "転換線が基準線以下");
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
iIchimoku() の注意点
- MQL5 では値ではなく「ハンドル」(インジケーターの番号)が返ります。ハンドルは OnInit() で1回だけ作り、OnTick() などで CopyBuffer() を使って値を読み出します。毎ティック作り直すと動作が重くなります。
- 先行スパンは未来(右)にずらして表示される線です。現在の足の位置で読むと、その時点で表示されている雲の値になります。












