cAlgo API リファレンス

ChartEquidistantChannel【cAlgo API】

2020年10月26日

チャネルライン

ChartEquidistantChannel

直訳すると等幅チャネルですが、よくチャネルラインって呼ばれてるやつです。トレンドラインが2本ならんだものと考えていいです。

Chart.DrawEquidistantChannel(...)で描画し、返り値でこの型を取得します。

public interface ChartEquidistantChannel : ChartObject

1本が基準の線となり、もう一本がChannelHeight分離れた場所に平行に引かれます。

 

プロパティ

トレンドラインのプロパティにChannelHeightが加わっただけです。

(double) ChannelHeight {get; set;}

チャネルの幅を取得、設定します。なぜか+で下方向です。感覚と逆な気がします。なんで?

(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;}

角度を表示するかどうかを取得、設定します。

ChartObjectのプロパティ

IsAlive、IsIntaractive、Name、Commentなど

 

サンプルコード
// ファイル冒頭に using System.Linq が必要。
// 今あるトレンドラインに重ねてそれっぽいチャネルラインを引く

// トレンドライン一覧の最後の1本を使う。1本もなければ終了。
var trendLines = Chart.FindAllObjects<ChartTrendLine>();
if (trendLines.Count() == 0) return;
var tl = trendLines.Last();
tl.ExtendToInfinity = true;

// チャネル高さ設定
var bars = Bars.Skip(Bars.OpenTimes.GetIndexByTime(tl.Time1));
double channelHeight;
if (tl.Y1 < tl.Y2) {
    channelHeight = bars.Select(b => b.High > tl.CalculateY(b.OpenTime) ? b.High - tl.CalculateY(b.OpenTime) : 0)
                        .OrderBy(price => price)
                        .Skip((int)(bars.Count() * 0.9))
                        .Average();
} else {
    channelHeight = bars.Select(b => b.Low < tl.CalculateY(b.OpenTime) ? b.Low - tl.CalculateY(b.OpenTime) : 0)
                        .OrderByDescending(price => price)
                        .Skip((int)(bars.Count() * 0.9))
                        .Average();
}

// チャネルラインを引いて、マウスで操作可能にする
Chart.DrawEquidistantChannel("channel_line", tl.Time1, tl.Y1, tl.Time2, tl.Y2, -1*channelHeight, Color.Yellow).IsInteractive = true;

チャートに1本だけトレンドライン引いたうえで実行してください。

チャネル高さ設定のところは少しわかりにくいかもしれませんが、ここではなんか高さを設定してるんだな、とだけ思ってもらえればいいです。

-cAlgo API リファレンス
-

© 2021 cTrader's Life Powered by AFFINGER5