【MQL4定数】ライン定数(MODE)

【辞書】MQLリファレンス

ライン定数(MODE)

ライン定数は、ロジック関数の引数として使用します。

ロジック関数(iMACD関数など)は、取得するラインを設定することができます。

その設定をするために、ライン定数を使うと良いでしょう。

例えば、iMACD関数で使うと、取得する値はメインラインなのか、シグナルラインなのかを設定をすることができます。

 

それぞれ、mode引数の入力値として、ライン定数を使うことができます。

 

iMACD関数、iRVI関数、iStochastic関数で使用

定数説明
MODE_MAIN0メインライン
MODE_SIGNAL1シグナルライン

 

iADX関数で使用

定数説明
MODE_MAIN0メインライン(ADX)
MODE_PLUSDI1+DIライン
MODE_MINUSDI2-DIライン

 

iBands関数、iEnvelopes関数、iEnvelopesOnArray関数、iFractals関数、iGator関数で使用

定数説明
MODE_UPPER1上ライン
MODE_LOWER2下ライン

 

iAlligator関数で使用

定数説明
MODE_GATORJAW1顎ライン
MODE_GATORTEETH2歯ライン
MODE_GATORLIPS3口ライン

 

iIchimoku関数で使用

定数説明
MODE_TENKANSEN1転換線
MODE_KIJUNSEN2基準線
MODE_SENKOUSPANA3先行スパンA
MODE_SENKOUSPANB4先行スパンB
MODE_CHIKOUSPAN5遅行スパン

 

ライン定数(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引数にライン定数を指定することで、それぞれ対応するラインの値を取得しています。