cAlgo API リファレンス

ChartObject【cAlgo API】

2020年10月23日

チャートに描くなにか

トレードするにあたって、チャート上にはインジケーター以外にもいろいろと表示させたいものはあります。トレンドライン、フィボナッチリトレースメント、ちょっとしたメモなどなど。

cTraderでチャート画面上に描き込まれたこれらのオブジェクトはChartObject(のサブクラス)となってcBotやIndicatorから操作できるようになります。もちろん、cBotやIndicatorから新しくChartObjectを描き込むこともできます。ここではChartObjectでどんなことができるのか見てみましょう。

 

ChartObject インターフェース

チャート上に描かれたもの(=チャートオブジェクト、と呼びます)のベースインターフェースです。

public interface ChartObject

関連するインターフェース:

ChartStaticText, ChartText, ChartTrendLine, ChartEquidistantChannel, ChartFibonacciBase, ChartFibonacciExpansion, ChartFibonacciFan, ChartFibonacciRetracement, ChartHorizontalLine, ChartVerticalLine, ChartIcon, ChartShape, ChartEllipse, ChartTriangle, ChartRectangle, ChartAndrewsPitchfork, ChartDrawing,

 

cTrader内で描画されるチャートオブジェクトはすべてChartObjectを継承しています。ChartがもつプロパティであるObjectsはChartObjectのリストです。実際に操作する際もChartObjectのメンバは多用するため、確認しておきましょう。

 

プロパティ

IsIntaractiveがtrueの場合、ほとんどの項目がチャート画面からのマウス操作で変更できるため、プログラムで使用する際はユーザー側に変更されてる可能性があることを考慮する必要があります。

(sting) Name

チャートオブジェクトの名前を取得します。描くときに他と被らない名前を指定する必要があります。チャート上でもオブジェクト右クリックから参照可能。

(ChartObjectType) ObjectType

チャートオブジェクトの種類を取得します。

(bool) IsAlive

チャートオブジェクトがチャート上に存在するかどうか。チャート上から消せばfalseになります。

(bool) IsInteractive {get; set;}

チャートオブジェクトがマウスなどで操作可能かどうか。初期状態はfalseです。オブジェクトをチャート上からいじられたくなければこれをfalseのままにしておきましょう。

ただし、これがfalseの場合はそのチャートオブジェクトを作成したcBotやIndicatorが止まった時点で自動的にチャート上から消えます。

ポイント

IsIntaractiveプロパティがfalseの場合は他のcBotやインジケーターからもいじれなくなります。他のプログラムからはFindObjectやRemoveAllObjectの対象にもなりません。(自分のChartから呼び出す場合は対象)

他のプログラムで利用したいChartObjectはIsIntaractiveをTrueにしておく必要があります。

(bool) IsHidden {get; set;}

チャートオブジェクトが隠されてるかどうか。チャート左ツールバーの眼のボタンで切り替え可能です。

(bool) IsLocked {get; set;}

チャートオブジェクトがロックされてるかどうか。ロックされたオブジェクトはマウスで動かせなくなります。チャート上右クリックから変更可能。

(int) Zindex {get; set;}

チャートオブジェクトの重ね順です。チャートにいくつオブジェクトがあっても、初期状態では常に0で単純に描かれた順に重なります。

 

 

ChartObjectType 列挙型

チャートオブジェクトがなんなのかを表します。プロパティのObjectTypeで返ってくるのがこの型です。

名前もほぼそのままなのでわかると思いますが、一応チャート画面右側にあるツールバーの順番通りに並べておきます。

VerticalLine 垂直線
HorizontalLine 水平線
TrendLine トレンドライン
Drawing フリーハンド
EquidistantChannel チャネルライン(トレンドラインを平行に並べたみたいなやつ)
AndrewsPitchfork アンドリューピッチフォーク
FibonacciExpansion フィボナッチエクスパンジョン
FibonacciFan フィボナッチファン
FibonacciRetracement フィボナッチリトレースメント
Rectangle 四角形
Ellipse 楕円
Triangle 三角形
Icon アイコン
Text テキスト(スクロールで動く)
StaticText 固定テキスト(スクロールで動かない)

Rayがありませんが、Rayの中身はTrendLineです。

この中でDrawingだけプログラムからは描けませんが、チャート上に描かれたものを取得することはできます。(取得したところでたいしたことできませんけど。)逆にStaticTextはプログラムからしか描けません

 

サンプルコード
// Chart上のChartObjectすべてのオブジェクトのロックを外す
foreach (var chartObj in Chart.Objects) {
    chartObj.IsLocked = false;
    // トレンドラインだけは色を赤にする
    if (chartObj.ObjectType == ChartObjectType.TrendLine) {
        // ChartTrendLineのメンバ使うためにはキャストが必要
        var tl = chartObj as ChartTrendLine; 
        tl.Color = Color.Red;
    }
}

このプログラム自体に意味はないです。(別にロック外さなくてもプログラムからは操作できます。)こんな感じで使うとだけわかってもらえれば。

 

-cAlgo API リファレンス
-,

© 2021 cTrader's Life Powered by AFFINGER5