チャートのプロパティを設定/取得する
あるチャートに設定されたプロパティ(描画スタイルなど)を変更/取得するには、次のような関数を使用します。
- ChartSetInteger 関数 / ChartGetInteger 関数
- 整数型 のプロパティ。ENUM_CHART_PROPERTY_INTEGER で示されるプロパティを設定/取得できます(
INTEGER
という名前がついているけど実際はlong
型であることに注意)。
- 整数型 のプロパティ。ENUM_CHART_PROPERTY_INTEGER で示されるプロパティを設定/取得できます(
- ChartSetDouble 関数 / ChartGetDouble 関数
- 浮動小数点数型 のプロパティ。ENUM_CHART_PROPERTY_DOUBLE で示されるプロパティを設定/取得できます。
- ChartSetString 関数 / ChartGetString 関数
- 文字列型 のプロパティ。ENUM_CHART_PROPERTY_STRING で示されるプロパティを設定/取得できます。
表示項目の OFF/ON 設定
チャートの表示項目を変更するには、ChartSetInteger
関数の第 2 引数 (prop_id
) に以下のようなプロパティ ID を指定します。
プロパティ ID | 設定内容 |
---|---|
CHART_MODE | CHART_BARS : バーチャートCHART_CANDLES : ローソク足CHART_LINE : 折れ線 |
CHART_SHOW_VOLUMES | CHART_VOLUME_HIDE : ボリュームを表示しないCHART_VOLUME_TICK : ボリュームとして Tick 数を表示するCHART_VOLUME_REAL : ボリュームとして実際の取引量を表示する(サーバによって提供されていないことがある) |
CHART_SHOW_GRID | true/false : グリッドを表示する/しない |
CHART_SHOW_PERIOD_SEP | true/false : 一定期間ごとの縦線を表示する/しない |
CHART_SHOW_ASK_LINE | true/false : 買値の水平線を表示する/しない |
CHART_SHOW_BID_LINE | true/false : 売値の水平線を表示する/しない |
CHART_SHOW_DATE_SCALE | true/false : 日時バー(横の軸)を表示する/しない |
CHART_SHOW_PRICE_SCALE | true/false : 価格バー(縦の軸)を表示する/しない |
CHART_SHOW_OHLC | true/false : 左上の Open/High/Low/Close 価格を表示する/しない(これを false にしても、通貨ペア名と時間足は表示されます) |
CHART_SHOW_ONE_CLICK | true/false : 左上のワンクリック注文パネルを表示する/しない |
各種プロパティの変更が実際に画面上に反映されるのは、次のチャートの再描画のタイミングです(例えば、次の tick が発生したとき)。 直ちに設定を画面に反映させたい場合は、上記のように ChartRedraw 関数 を呼び出します。
表示項目の色の設定
チャートの各描画要素の色を設定する場合も、ChartSetInteger
関数を使用します。
第 2 引数 (prop_id
) に次のようなプロパティ ID を指定することで、それぞれの項目の色を設定できます。
プロパティ ID | 設定内容 |
---|---|
CHART_COLOR_BACKGROUND | 背景色 |
CHART_COLOR_FOREGROUND | 価格軸、時間軸、OHLC(Open/High/Low/Close) の色 |
CHART_COLOR_GRID | グリッド線の色 |
CHART_COLOR_VOLUME | ボリュームの色 |
CHART_COLOR_CHART_UP | ローソク足の上昇バーのひげ、および、箱の枠の色 |
CHART_COLOR_CHART_DOWN | ローソク足の下降バーのひげ、および、箱の枠の色 |
CHART_COLOR_CHART_LINE | 折れ線チャートの線の色、ローソク足の十字線の色 |
CHART_COLOR_CANDLE_BULL | 上昇バーの内側の色 |
CHART_COLOR_CANDLE_BEAR | 下降バーの内側の色 |
CHART_COLOR_BID | 売値 (Bid) の水平線の色 |
CHART_COLOR_ASK | 買値 (Ask) の水平線の色 |
CHART_COLOR_LAST | 最新約定価格の水平線の色 |
CHART_COLOR_STOP_LEVEL | 決済価格(指値/逆指値)の水平線の色 |
色の指定は color
型(4 バイトの数値)で行いますが、様々な表現で指定することができます。
上記のチャートの配色は、次のようなコードを実行することによって設定することができます。 スクリプトからチャート設定を行うと、一部の設定だけを変更することができるため、使いようによってはテンプレートによる配色変更を行うよりも便利です。
オブジェクト指向の CChart クラスを使用する
CChart
クラスを使用すると、ChartSetInteger
のようなプロパティセット関数を使用する代わりに、オブジェクトのメソッドを呼び出すことよって、スマートな記述を行うことができます(なぜか CHART_SHOW_ONE_CLICK
に相当するメソッドだけは見つからない・・・)。
下記のスクリプトの setupChart
関数は、CChart
オブジェクトを受け取って、描画スタイルの設定を行っています。
CChart
オブジェクトを既存のチャートに関連付けるには、Attach
メソッドを使用します。
上記の例では、0 を渡すことによって、アクティブなチャートに関連付けています。
CChart
クラスは、デストラクタ内で関連付けられたチャートを閉じようとするので、スクリプトが終了したときにチャートが閉じられないようにするために、Detach
メソッドを読んで関連付けを解除しておかなければいけません。
関連記事
- MetaTrader/MQL: MQL での色の表現方法 (color)
- MetaTrader/MQL: 新しいチャートを開く (ChartOpen)
- MetaTrader/MQL: シンボルのスプレッド情報を取得する (SymbolInfoInteger)
- MetaTrader/MQL: 実行中のプログラムの種類(スクリプト/インジケーター/EA)を判別する (MQL5_PROGRAM_TYPE)
- MetaTrader/MQL: インジケーターの実装例 - Momentum(モメンタム)
- MetaTrader/MQL: カスタムインジケーターに水平線を表示する (IndicatorSet*)
- MetaTrader/MQL: インジケーターの実装例 - WMA(加重移動平均)