フィボナッチ系オブジェクト
フィボナッチリトレースメント、フィボナッチエクスパンジョン、 フィボナッチファンのインターフェースはそれぞれChartFibonacciBaseを継承して独自のインターフェースを経由してアクセスします。いずれもChart.DrawFibonacci~(...)で描画し、返り値でこれらの型を取得します。
ChartShape同様に特有のメンバとしては位置情報を持ってるだけなので、ChartFibonacciBaseのメンバさえ確認しておけば使えます。
これらの独自インターフェースの説明はほぼ不要と思うので後回しにして、先にリトレースメントとエクスパンジョンのサンプルコードだけ書いておきます。
サンプルコード
// 冒頭にusing System.Linqが必要
// 直近100本の高値安値を探す
int period = 100;
if (Bars.Count <= period) Bars.LoadMoreHistory();
var bars = Bars.Skip(Bars.Count - period);
var highest = Bars.HighPrices.Skip(Bars.Count - period).Max();
var hIndex = Bars.HighPrices.ToList().LastIndexOf(highest);
var lowest = Bars.LowPrices.Skip(Bars.Count - period).Min();
var lIndex = Bars.LowPrices.ToList().LastIndexOf(lowest);
// Fibonacci~の座標確定
var x1 = (hIndex <= lIndex ? hIndex : lIndex);
var x2 = (hIndex > lIndex ? hIndex : lIndex);
var y1 = (hIndex <= lIndex ? highest: lowest);
var y2 = (hIndex > lIndex ? highest : lowest);
var x3 = Bars.Count - 1;
var y3 = Bid;
// 描く
var retracement = Chart.DrawFibonacciRetracement("fibo_retracement", x1, y1, x2, y2, Color.Red);
var expansion = Chart.DrawFibonacciExpansion("fibo_expansion", x1, y1, x2, y2, x3, y3, Color.Yellow);
var fan = Chart.DrawFibonacciFan("fibo_fan", x1, y1, x2, y2, Color.Blue);
retracement.IsInteractive = expansion.IsInteractive = fan.IsInteractive = true;
retracement.LineStyle = LineStyle.DotsVeryRare;
// リトレースメントのレベル設定
var retDisplayLevels = new double[] { 0.0, 38.2, 50.0, 61.8, 100.0 };
foreach (var level in retracement.FibonacciLevels) {
if (retDisplayLevels.Contains(level.PercentLevel)) level.IsVisible = true;
else level.IsVisible = false;
}
// エクスパンジョンののレベル設定
var exDisplayLevels = new double[] { 100.0, 161.8, 261.8};
foreach (var level in expansion.FibonacciLevels) {
if (exDisplayLevels.Contains(level.PercentLevel)) level.IsVisible = true;
else level.IsVisible = false;
}
実行するとチャート上にフィボナッチリトレースメントとフィボナッチエクスパンジョンが表示されます。
ChartFibonacciRetracementインターフェース
public interface ChartFibonacciRetracement : ChartFibonacciBase, ChartObject
プロパティ
(DateTime) Time1 {get; set;}
フィボナッチリトレースメント始点のX座標の時間を取得、設定します。
(double) Y1 {get; set;}
フィボナッチリトレースメント始点のY座標の価格を取得、設定します。
(DateTime) Time2 {get; set;}
フィボナッチリトレースメント終点のX座標の時間を取得、設定します。
(double) Y2 {get; set;}
フィボナッチリトレースメント終点のY座標の価格を取得、設定します。
ChartFibonacciBase、ChartObjectのプロパティ
IsIntaractive、Name、Comment、Color、LineStyle、Thickness、FobonacciLevelsなど。プログラムから描画した場合FibonacciLevelsは設定必須です。初期状態だと18本ものラインが表示されて使い物になりません。
ChartFibonacciExpansionインターフェース
public interface ChartFibonacciExpansion : ChartFibonacciBase, ChartObject
プロパティ
(DateTime) Time1 {get; set;}
フィボナッチエクスパンジョン始点のX座標の時間を取得、設定します。
(double) Y1 {get; set;}
フィボナッチエクスパンジョン始点のY座標の価格を取得、設定します。
(DateTime) Time2 {get; set;}
フィボナッチエクスパンジョン第2点のX座標の時間を取得、設定します。
(double) Y2 {get; set;}
フィボナッチエクスパンジョン第2点のY座標の価格を取得、設定します。
(DateTime) Time3 {get; set;}
フィボナッチエクスパンジョン第3点のX座標の時間を取得、設定します。
(double) Y3 {get; set;}
フィボナッチエクスパンジョン第3点のY座標の価格を取得、設定します。
ChartFibonacciBase、ChartObjectのプロパティ
IsIntaractive、Name、Comment、Color、LineStyle、Thickness、FobonacciLevelsなど。FibonacciLevelsは7本。人によっては200%のラインが欲しいかもしれませんが、そのときは不要なFibonacciLevelの.PercentLevelを書き換えて使ってください。
ChartFibonaccieFanインターフェース
public interface ChartFibonacciFan : ChartFibonacciBase, ChartObject
プロパティ
(DateTime) Time1 {get; set;}
フィボナッチファン始点のX座標の時間を取得、設定します。
(double) Y1 {get; set;}
フィボナッチファン始点のY座標の価格を取得、設定します。
(DateTime) Time2 {get; set;}
フィボナッチファン終点のX座標の時間を取得、設定します。
(double) Y2 {get; set;}
フィボナッチファン終点のY座標の価格を取得、設定します。
ChartFibonacciBase、ChartObjectのプロパティ
IsIntaractive、Name、Comment、Color、LineStyle、Thicknessなど。