ライン定数(MODE)
ライン定数は、ロジック関数の引数として使用します。
ロジック関数(iMACD関数など)は、取得するラインを設定することができます。
その設定をするために、ライン定数を使うと良いでしょう。
例えば、iMACD関数で使うと、取得する値はメインラインなのか、シグナルラインなのかを設定をすることができます。
それぞれ、mode引数の入力値として、ライン定数を使うことができます。
iMACD関数、iRVI関数、iStochastic関数で使用
| 定数 | 値 | 説明 |
| MODE_MAIN | 0 | メインライン |
| MODE_SIGNAL | 1 | シグナルライン |
iADX関数で使用
| 定数 | 値 | 説明 |
| MODE_MAIN | 0 | メインライン(ADX) |
| MODE_PLUSDI | 1 | +DIライン |
| MODE_MINUSDI | 2 | -DIライン |
iBands関数、iEnvelopes関数、iEnvelopesOnArray関数、iFractals関数、iGator関数で使用
| 定数 | 値 | 説明 |
| MODE_UPPER | 1 | 上ライン |
| MODE_LOWER | 2 | 下ライン |
iAlligator関数で使用
| 定数 | 値 | 説明 |
| MODE_GATORJAW | 1 | 顎ライン |
| MODE_GATORTEETH | 2 | 歯ライン |
| MODE_GATORLIPS | 3 | 口ライン |
iIchimoku関数で使用
| 定数 | 値 | 説明 |
| MODE_TENKANSEN | 1 | 転換線 |
| MODE_KIJUNSEN | 2 | 基準線 |
| MODE_SENKOUSPANA | 3 | 先行スパンA |
| MODE_SENKOUSPANB | 4 | 先行スパンB |
| MODE_CHIKOUSPAN | 5 | 遅行スパン |
ライン定数(MODE)の使い方
主に、ロジック関数で使用されます。
それぞれ、mode引数の入力値として、ライン定数を使うことができます。
上記の定数を入力しましょう。
すると、その定数に対応したラインの値を取得することができます。
例えば、以下のように使用します。
//iMACD関数
//メインラインのMACDの値を取得する
double macd = iMACD(Symbol(), PERIOD_CURRENT, 14, 25, 9, PRICE_CLOSE, MODE_MAIN, 0);
プログラム例
以下は、ライン定数を使って複数のインジケーター値を取得するプログラム例です。
void OnTick()
{
//-------------------------------------------
// iMACD関数でライン定数を使用する例
//-------------------------------------------
// メインライン(MACD線)の値を取得
double macdMain = iMACD(Symbol(), PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0);
// シグナルラインの値を取得
double macdSignal = iMACD(Symbol(), PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
// メインラインがシグナルラインを上抜けた場合
if(macdMain > macdSignal)
{
Print("MACDゴールデンクロス: メイン=", macdMain, " シグナル=", macdSignal);
}
//-------------------------------------------
// iStochastic関数でライン定数を使用する例
//-------------------------------------------
// メインライン(%K)の値を取得
double stochMain = iStochastic(Symbol(), PERIOD_CURRENT, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0);
// シグナルライン(%D)の値を取得
double stochSignal = iStochastic(Symbol(), PERIOD_CURRENT, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0);
Print("Stochastic: %%K=", stochMain, " %%D=", stochSignal);
//-------------------------------------------
// iBands関数でライン定数を使用する例
//-------------------------------------------
// メインライン(中央線)の値を取得
double bandsMain = iBands(Symbol(), PERIOD_CURRENT, 20, 2, 0, PRICE_CLOSE, MODE_MAIN, 0);
// 上ラインの値を取得
double bandsUpper = iBands(Symbol(), PERIOD_CURRENT, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, 0);
// 下ラインの値を取得
double bandsLower = iBands(Symbol(), PERIOD_CURRENT, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, 0);
Print("Bands: 上=", bandsUpper, " 中央=", bandsMain, " 下=", bandsLower);
//-------------------------------------------
// iIchimoku関数でライン定数を使用する例
//-------------------------------------------
// 転換線の値を取得
double tenkan = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_TENKANSEN, 0);
// 基準線の値を取得
double kijun = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_KIJUNSEN, 0);
// 先行スパンAの値を取得
double spanA = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_SENKOUSPANA, 0);
// 先行スパンBの値を取得
double spanB = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_SENKOUSPANB, 0);
// 遅行スパンの値を取得
double chikou = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_CHIKOUSPAN, 0);
Print("一目均衡表: 転換線=", tenkan, " 基準線=", kijun);
//-------------------------------------------
// iAlligator関数でライン定数を使用する例
//-------------------------------------------
// 顎ライン(Jaw)の値を取得
double jaw = iAlligator(Symbol(), PERIOD_CURRENT, 13, 8, 8, 5, 5, 3, MODE_SMA, PRICE_MEDIAN, MODE_GATORJAW, 0);
// 歯ライン(Teeth)の値を取得
double teeth = iAlligator(Symbol(), PERIOD_CURRENT, 13, 8, 8, 5, 5, 3, MODE_SMA, PRICE_MEDIAN, MODE_GATORTEETH, 0);
// 口ライン(Lips)の値を取得
double lips = iAlligator(Symbol(), PERIOD_CURRENT, 13, 8, 8, 5, 5, 3, MODE_SMA, PRICE_MEDIAN, MODE_GATORLIPS, 0);
Print("Alligator: 顎=", jaw, " 歯=", teeth, " 口=", lips);
}
上記のプログラムでは、各インジケーター関数のmode引数にライン定数を指定することで、それぞれ対応するラインの値を取得しています。




