さまざまなイベント専用引数
イベント処理を書く際に重要なのが、イベント発生時の情報を持ってるパラメータです。cAlgoではほぼイベントごとにそのイベント専用のEventArgsクラスが定義されています。
なお、イベント一覧を見てもわかると思いますが、イベントの多くはChartが持ってます。MT4のイベント処理関数もOnChartEvent()でしたよね。
cAlgoは細かなイベントが色々用意されてるので実際はChart以外のイベントもたくさんあるのですが、よく使うものは結局Chartイベントなんです。
ここではChartのイベントとして紹介してますが、ほとんどがChartのベースとなってるChartAreaインターフェースで用意されてるものなので、ほとんどはIndicatorAreaでも使用可能です。
Chart (ChartArea)マウスイベントパラメータ
ChartMouseEventArgs と ChartDrawEventArgs
MouseDown、MouseUp、MouseEnter、MouseLeave、MouseMoveといったイベントがChartMouseEventArgsで、DragStart、Drag、DragEndといったイベントがChartDrawEventArgsで情報を提供します。イベント内容は文字通りなので説明不要でしょう。
なお、ドラッグした時のイベント発生順はMouseDown→DragStart→MouseMove→Drag→...→MouseUp→DragEnd→MouseMoveです。(マウスを動かさなくても最後に1回MouseMoveが発生します。)
(2021/3/3追記)cTrader4.0で変わりました。イベント発生順はMouseDown→DragStart→MouseMove→Drag→...→DragEnd→MouseMove→MouseUpとなり、MouseUpが最後になりました。この順序に依存したコードは書かないほうがよさそうです・・・
public class ChartMouseEventArgs : Object
public class ChartDragEventArgs : ChartMouseEventArgs
この2つのクラスは名前は違えど、中身は全く同じです。ChartDragEventArgsはChartMouseEventArgsを継承して独自のクラスとなってますが、特有のプロパティを持ちません。
クラスですが、メソッドは持っておらず、引数として受け取って読み取り専用プロパティで中の情報を読み取るためだけに使います。(基本的に他のEventArgsも同様です。)
プロパティ
(DateTime) TimeValue
イベントが発生した場所のX軸位置を時間で取得します。
(int) BarIndex
イベントが発生した場所のX軸位置をBarsのインデックスで取得します。
(double) YValue
イベントが発生した場所のY軸位置を価格で表します。
(bool) AltKey
イベント発生時にAltキーが押されてたかどうか取得します。
(bool) ShiftKey
イベント発生時にShiftキーが押されてたかどうか取得します。
(bool) CtrlKey
イベント発生時にCtrlキーが押されてたかどうか取得します。
(double) MouseX
イベントが発生した場所のX軸位置の座標を取得します。
(double) MouseY
イベントが発生した場所のX軸位置の座標を取得します。
(Chart) Chart
イベントが発生したChartを取得します。
(ChartArea) ChartArea
イベントが発生したChartAreaを取得します。
ChartMouseWheelEventArgs
MouseWheelイベントの情報を持ちます。マウスホイールが回されたときの情報を保持します。ちなみにMouseWheelイベントは、シングルチャートモード(1画面1チャートでホイールでチャートを切り替えるレイアウト)になってると拾えませんので使用時は注意してください。
public class ChartMouseWheelEventArgs : ChartMouseEventArgs
ChartMouseEventArgsにホイールがどれだけ回されたかの情報を加えただけです。
プロパティ
(double) Delta
このイベントでどのくらいマウスホイールが回されたか取得する。
ChartMouseEventArgsのプロパティすべて
上記参照
Chart(ChartArea)のオブジェクト関連イベントパラメータ
cTrader4.0よりチャートオブジェクトの複数選択が可能になりました。それに伴い、オブジェクト関連EventArgsも単数形→複数形に変更となっています。(2021/3/3更新)
ChartObjectsAddedEventArgs、ChartObjectsRemovedEventArgs、ChartObjectsUpdatedEventArgs、(ChartObjectsEventArgs)
それぞれObjectsAdded、ObjectsRemoved、ObjectsUpdatedイベントの情報を持ちます。チャートオブジェクト(トレンドラインなど)が追加された、削除された、更新されたときに発生するイベントです。
public class ChartObjectsEventArgs : Object
public class ChartObjectsAddedEventArgs : ChartObjectsEventArgs
public class ChartObjectsRemovedEventArgs : ChartObjectsEventArgs
public class ChartObjectsUpdatedEventArgs : ChartObjectsEventArgs
すべてChartObjectEventArgsを継承していますが、特有プロパティを持たず、中身はChartObjectEventArgsと全く同じです。
プロパティ
(IReadOnlyList<ChartObject>) ChartObjects
イベントが発生したチャートオブジェクトのListを取得します。プロパティの型はChartObjectのため、たいていはキャストして使うことになります。
(Chart) Chart
イベントが発生したチャートを取得します。
(ChartArea) Area
イベントが発生したチャートエリアを取得します。
ChartObjectHoverChangedEventArgs
ChartObjectHoverChangedイベントの情報を持ちます。オブジェクトのホバーが変更した時に発生するイベントです。マウスカーソルがのってホバーされた時とカーソルが外れてホバーが外れた時、どちらも発生します。
public class ChartObjectHoverChangedEventArgs : ChartObjectEventArgs
プロパティ
(bool) IsObjectHoverd
オブジェクトがホバーされてるかどうか取得します。
ChartObjectEventArgsのプロパティすべて
ChartObjectなど
ChartObjectsSelectionChangedEventArgs
ChartObjectsSelectionChangedイベントが使用します。チャートオブジェクトの選択が変更されたときに発生するイベントです。選択が外れた時も発生します。
public class ChartObjectsSelectionChangedEventArgs : object
cTrader4.0からはChartObjectEventArgsを親クラスに持たなくなりました。
プロパティ
(IReadOnlyList<ChartObject>) ObjectsAddedToSelection
選択されたオブジェクトのリストを取得します。
(IReadOnlyList<ChartObject>) ObjectsRemovedFromSelection
選択が外れたオブジェクトのリストを取得します。
(Chart) Chart
イベントが発生したチャートを取得します。
(ChartArea) Area
イベントが発生したチャートエリアを取得します。
(非推奨) ChartObjectAddedEventArgs、ChartObjectRemovedEventArgs、ChartObjectUpdatedEventArgs、(ChartObjectEventArgs)
こちらはcTrader3.8まで使われていたEventArgsです。互換性のため残っていますが、4.0以降は非推奨なので使わないほうがいいでしょう。一応記事は残しておきます。
それぞれ単数形のObjectAdded、ObjectRemoved、ObjectUpdatedイベントの情報を持ちます。
public class ChartObjectEventArgs : Object
public class ChartObjectAddedEventArgs : ChartObjectEventArgs
public class ChartObjectRemovedEventArgs : ChartObjectEventArgs
public class ChartObjectUpdatedEventArgs : ChartObjectEventArgs
すべてChartObjectEventArgsを継承していますが、特有プロパティを持たず、中身はChartObjectEventArgsと全く同じです。
プロパティ
(ChartObject) ChartObject
イベントが発生したチャートオブジェクトを取得します。プロパティの型はChartObjectのため、たいていはキャストして使うことになります。
(Chart) Chart
イベントが発生したチャートを取得します。
(ChartArea) Area
イベントが発生したチャートエリアを取得します。
(非推奨) ChartObjectSelectionChangedEventArgs
cTrader3.8まで使われており、互換性のため残っていますが、4.0以降は非推奨。単数形のChartObjectSelectionChangedイベントが使用します。
public class ChartObjectSelectionChangedEventArgs : ChartObjectEventArgs
プロパティ
(bool) IsObjectSelected
オブジェクトが選択されてるかどうか取得します。
ChartObjectEventArgsのプロパティすべて
ChartObjectなど
チャート自体の変更に関するイベントパラメータ
ChartScrollEventArgs
ScrollChangedイベントの情報を持ちます。チャートがスクロールされた際に発生するイベントです。マウスでのドラッグやAPI呼び出し、ローソク足更新による自動スクロールでも発生します。
public class ChartScrollEventArgs : Object
プロパティ
(int) BarsDelta
イベント発生でローソク足何本分スクロールされたか取得します。
(double) BottomYDelta
イベント発生でY軸の最低値 (Chart.BottomY) がどれだけ動いたか取得します。
(double) XTopYDelta
イベント発生でY軸の最大値 (Chart.TopY) がどれだけ動いたか取得します。
(Chart) Chart
イベントが発生したチャートを取得します。
(ChartArea) Area
イベントが発生したチャートエリアを取得します。
ChartSizeEventArgs
SizeChangedイベントの情報を持ちます。チャートサイズが変更された際に発生するイベントです。
public class ChartSizeEventArgs : Object
プロパティ
(Chart) Chart
イベントが発生したチャートを取得します。
(ChartArea) Area
イベントが発生したチャートエリアを取得します。
Chart特有イベントのパラメータ
ここからはIndicatorAreaでは使用不可のイベントです。
ChartTypeEventArgs、ChartColorEventArgs、ChartDisplaySettingEventArgs
それぞれChartTypeChanged、ColorsChanged、DisplaySettingsChangedイベントの情報を持ちます。チャートタイプが変わった、色が変わった、表示設定が変わったときに発生するイベントですね。
public class ChartTypeEventArgs : Object
public class ChartColorEventArgs : Object
public class ChartDisplaySettingsEventArgs : Object
すべて別のクラスですが、プロパティが同一のためまとめます。
プロパティ
(Chart) Chart
イベントが発生したチャートを取得します。
IndicatorAreaAddedEventArgs、IndicatorAreaRemovedEventArgs、(IndicatorAreaEventArgs)
IndicatorAreaAdded、IndicatorAreaRemovedイベントの情報を持ちます。インジケータ用別窓が追加された削除されたときに発生するイベントです。
public class IndicatorAreaEventArgs : Object
public class IndicatorAreaAddedEventArgs : IndicatorAreaEventArgs
public class IndicatorAreaRemovedEventArgs : IndicatorAreaEventArgs
例によって実質同じクラスです。
プロパティ
(Chart) Chart
イベントが発生したチャートを取得します。
(ChartArea) Area
イベントが発生したチャートエリアを取得します。
ChartZoomEventArgs
ZoomChangedイベントの情報を持ちます。チャートの拡大率が変わったときに発生するイベントです。
public class ChartZoomEventArgs : Object
プロパティ
(Chart) Chart
イベントが発生したチャートを取得します。