トレンドライン
ChartTrendLineインターフェース
トレンドラインを操作するためのインターフェースです。Chart.DrawTrendLine(...)で描画し、返り値でこの型を取得します。
public interface ChartTrendLine : ChartObject
プロパティ
(Color) Color {get; set;}
トレンドラインの色を取得、設定します。
(DateTime) Time1 {get; set;}
トレンドラインの開始点の横位置を取得、設定します。
(double) Y1 {get; set;}
トレンドラインの開始点の縦位置を取得、設定します。
(DateTime) Time2 {get; set;}
トレンドラインの終了点の横位置を取得、設定します。
(double) Y2 {get; set;}
トレンドラインの終了点の縦位置を取得、設定します。
(LineStyle) LineStyle {get; set;}
ラインスタイルを取得、設定します。
(int) Thickness {get; set;}
線の太さを取得、設定します。
(bool) ExtendToInfinity {get; set;}
ラインをY2Time2方向に無限延長するかどうかを取得、設定します。
(bool) ShowAngle {get; set;}
角度を表示するかどうかを取得、設定します。これがtrueのChartTrendLineがRayです。
ChartObjectのプロパティ
IsAlive、IsIntaractive、Name、Commentなど。
メソッド
(double) CalculateY(int barIndex)
barindexのローソク足位置のトレンドラインの価格を計算し、返します。
(double) CalculateY(DateTime time)
time時点でのトレンドラインの価格を計算し、返します。
サンプルコード
// ファイル冒頭に using System.Linq が必要。
// 直近20本最高値とその前20本最高値を結ぶトレンドラインを引く
int period = 20;
var y2 = Bars.HighPrices.Skip(Bars.Count - period).Max();
var x2 = Bars.HighPrices.ToList().LastIndexOf(y2);
var y1 = Bars.HighPrices.Skip(Bars.Count - period*2).Take(period).Max();
var x1 = Bars.HighPrices.Take(Bars.Count - period).ToList().LastIndexOf(y1);
var trendLine = Chart.DrawTrendLine("sample_trendline", x1, y1, x2, y2, Color.Red);
trendLine.IsInteractive = true;
trendLine.ExtendToInfinity = true;
// 一つ前のBarの終値がラインより上か下か見てみる
var closePrice = Bars.Last(1).Close;
var linePrice = trendLine.CalculateY(Bars.Count - 2);
if (closePrice > linePrice) Print("終値ははラインより上!");
else Print("終値はラインより下!");
ラインを意識したトレードをするcBotを作る場合、CalculateYはよく使います。