【MQL4定数】アローコードの定数(Arrow Code)

【辞書】MQLリファレンス

アローコードの定数(Arrow Code)

アローコードの定数は、オブジェクトの矢印の種類を設定するときに使われます。

アローコードとは、チャート上に表示する矢印オブジェクトの種類を、定数にしたものです。

例えば、上矢印を表示したい場合は、SYMBOL_ARROWUPを使います。

 

アローコードは、ObjectSetInteger関数、ObjectGetInteger関数で使われます。

簡単に関数の説明です。

  • ObjectSetInteger関数:オブジェクトの状態を設定する
  • ObjectGetInteger関数:オブジェクトの状態を取得する

 

それぞれ、OBJPROP_ARROWCODEの設定値として、アローコードの定数が使われます。

 

アローコードの定数(Arrow Code)

定数説明
SYMBOL_THUMBSUP親指アップの矢印
SYMBOL_THUMBSDOWN親指ダウンの矢印
SYMBOL_ARROWUP上矢印
SYMBOL_ARROWDOWN下矢印
SYMBOL_STOPSIGNストップサイン(バツ)
SYMBOL_CHECKSIGNチェックサイン(チェック)
SYMBOL_LEFTPRICE左側に価格を表示
SYMBOL_RIGHTPRICE右側に価格を表示

 

アローコードの定数(Arrow Code)の使い方

ObjectSetInteger関数、ObjectGetInteger関数で使用されます。

それぞれ、OBJPROP_ARROWCODEの設定値として、アローコードの定数が使われます。

上記の定数を入力しましょう。

すると、その定数に対応した矢印の種類が設定されます。

例えば、以下のように使用します。

  //ObjectSetInteger関数
  //オブジェクトを上矢印に設定
   bool objectSetInteger = ObjectSetInteger(ChartID(), "自動売買を作ろう!", OBJPROP_ARROWCODE, SYMBOL_ARROWUP);

  //ObjectGetInteger関数
  //オブジェクトのアローコードを取得
   long objectGetInteger = ObjectGetInteger(ChartID(), "自動売買を作ろう!", OBJPROP_ARROWCODE);

 

サンプルプログラム

以下は、チャート上に矢印オブジェクトを作成し、アローコードの定数を使って矢印の種類を設定するサンプルプログラムです。

//+------------------------------------------------------------------+
//| スクリプト:アローコードのサンプルプログラム                      |
//+------------------------------------------------------------------+
void OnStart()
{
   //--- オブジェクト名
   string objName1 = "ArrowUp_Sample";
   string objName2 = "ArrowDown_Sample";
   string objName3 = "CheckSign_Sample";
   string objName4 = "StopSign_Sample";

   //--- 現在のチャートIDを取得
   long chartId = ChartID();

   //--- 現在の時間と価格を取得
   datetime currentTime = TimeCurrent();
   double currentPrice   = Ask;

   //--- 既存のオブジェクトがあれば削除
   ObjectDelete(chartId, objName1);
   ObjectDelete(chartId, objName2);
   ObjectDelete(chartId, objName3);
   ObjectDelete(chartId, objName4);

   //--- 上矢印オブジェクトを作成(SYMBOL_ARROWUP)
   ObjectCreate(chartId, objName1, OBJ_ARROW, 0, currentTime, currentPrice - 0.001);
   ObjectSetInteger(chartId, objName1, OBJPROP_ARROWCODE, SYMBOL_ARROWUP);
   ObjectSetInteger(chartId, objName1, OBJPROP_COLOR, clrBlue);
   ObjectSetInteger(chartId, objName1, OBJPROP_WIDTH, 2);
   Print("上矢印を作成しました。アローコード: ", ObjectGetInteger(chartId, objName1, OBJPROP_ARROWCODE));

   //--- 下矢印オブジェクトを作成(SYMBOL_ARROWDOWN)
   ObjectCreate(chartId, objName2, OBJ_ARROW, 0, currentTime, currentPrice + 0.001);
   ObjectSetInteger(chartId, objName2, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN);
   ObjectSetInteger(chartId, objName2, OBJPROP_COLOR, clrRed);
   ObjectSetInteger(chartId, objName2, OBJPROP_WIDTH, 2);
   Print("下矢印を作成しました。アローコード: ", ObjectGetInteger(chartId, objName2, OBJPROP_ARROWCODE));

   //--- チェックサインを作成(SYMBOL_CHECKSIGN)
   ObjectCreate(chartId, objName3, OBJ_ARROW, 0, currentTime - PeriodSeconds() * 3, currentPrice);
   ObjectSetInteger(chartId, objName3, OBJPROP_ARROWCODE, SYMBOL_CHECKSIGN);
   ObjectSetInteger(chartId, objName3, OBJPROP_COLOR, clrGreen);
   ObjectSetInteger(chartId, objName3, OBJPROP_WIDTH, 2);
   Print("チェックサインを作成しました。アローコード: ", ObjectGetInteger(chartId, objName3, OBJPROP_ARROWCODE));

   //--- ストップサインを作成(SYMBOL_STOPSIGN)
   ObjectCreate(chartId, objName4, OBJ_ARROW, 0, currentTime - PeriodSeconds() * 6, currentPrice);
   ObjectSetInteger(chartId, objName4, OBJPROP_ARROWCODE, SYMBOL_STOPSIGN);
   ObjectSetInteger(chartId, objName4, OBJPROP_COLOR, clrOrangeRed);
   ObjectSetInteger(chartId, objName4, OBJPROP_WIDTH, 2);
   Print("ストップサインを作成しました。アローコード: ", ObjectGetInteger(chartId, objName4, OBJPROP_ARROWCODE));

   //--- チャートを再描画
   ChartRedraw(chartId);

   Print("すべてのアローオブジェクトの作成が完了しました。");
}

このサンプルでは、SYMBOL_ARROWUP(上矢印)、SYMBOL_ARROWDOWN(下矢印)、SYMBOL_CHECKSIGN(チェックサイン)、SYMBOL_STOPSIGN(ストップサイン)の4種類のアローコードを使用しています。

ObjectCreate関数でOBJ_ARROW型のオブジェクトを作成した後、ObjectSetInteger関数OBJPROP_ARROWCODEにアローコードの定数を設定することで、矢印の種類を変更できます。

また、ObjectGetInteger関数で設定済みのアローコードを取得し、Print関数でログに出力しています。