アローコードの定数(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関数でログに出力しています。





