FinancialChart for UWP
CCI
分析機能 > インジケータ > CCI

CCI (商品チャンネル指数) インジケータは、資産の現在の時価レベルを、指定された期間の平均時価と比較して測定するオシレータです。新しいトレンドを判断したり、極端な状況について警告するために使用されます。

FinancialChart では、CCI オブジェクトを使用して CCI を使用する必要があります。また、FinancialChart では、実行時に GetValues() メソッドを使用して、計算された CCI 値を取得できます。これにより、アプリケーションでアラートを作成したり、動的データを使用する際にログを取ることができます。

CCI インジケータの使用方法については、次のコードスニペットを参照してください。このコードスニペットは、クラス DataService を使用します。このコードは、ATR で確認できます。

Partial Public Class Indicators
    Inherits Page
    Private dataService As DataService = dataService.GetService()
    Private cci As New CCI() With {
        .SeriesName = "CCI"
    }


    Public Sub New()
        InitializeComponent()
    End Sub

    Public ReadOnly Property Data() As List(Of Quote)
        Get
            Return dataService.GetSymbolData("box")
        End Get
    End Property

    Public ReadOnly Property IndicatorType() As List(Of String)
        Get
            Return New List(Of String)() From {
                "Commodity Channel Index",
            }
        End Get
    End Property



    Sub OnIndicatorTypeSelectionChanged(sender As Object, e As SelectionChangedEventArgs)
        Dim ser As FinancialSeries = Nothing

        If cbIndicatorType.SelectedIndex = 2 Then
            ser = cci
        End If

        If ser IsNot Nothing AndAlso Not indicatorChart.Series.Contains(ser) Then
            indicatorChart.BeginUpdate()
            indicatorChart.Series.Clear()
            indicatorChart.Series.Add(ser)
            indicatorChart.EndUpdate()
        End If
    End Sub

    Sub OnCbPeriodValueChanged(sender As Object, e As PropertyChangedEventArgs(Of Double))
        wi.Period = CType(e.NewValue, Integer)
        cci.Period = wi.Period
        rsi.Period = cci.Period
        atr.Period = rsi.Period
    End Sub

    Sub OnFinancialChartRendered(sender As Object, e As RenderEventArgs)
        If indicatorChart IsNot Nothing Then
            indicatorChart.AxisX.Min = (CType(financialChart.AxisX, IAxis)).GetMin()
            indicatorChart.AxisX.Max = (CType(financialChart.AxisX, IAxis)).GetMax()
        End If
    End Sub
End Class
public partial class Indicators : Page
{
    DataService dataService = DataService.GetService();
    CCI cci = new CCI() { SeriesName = "CCI" };

    public Indicators()
    {
        InitializeComponent();
    }

    public List<Quote> Data
    {
        get
        {
            return dataService.GetSymbolData("box");
        }
    }

    public List<string> IndicatorType
    {
        get
        {
            return new List<string>()
            {
                "Commodity Channel Index",
            };
        }
    }

    void OnIndicatorTypeSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        FinancialSeries ser = null;
        if (cbIndicatorType.SelectedIndex == 0)
            ser = cci;

        if (ser != null && !indicatorChart.Series.Contains(ser))
        {
            indicatorChart.BeginUpdate();
            indicatorChart.Series.Clear();
            indicatorChart.Series.Add(ser);
            indicatorChart.EndUpdate();
        }
    }

    void OnCbPeriodValueChanged(object sender, PropertyChangedEventArgs<double> e)
    {
        cci.Period = 14;
    }

    void OnFinancialChartRendered(object sender, RenderEventArgs e)
    {
        if (indicatorChart != null)
        {
            indicatorChart.AxisX.Min = ((IAxis)financialChart.AxisX).GetMin();
            indicatorChart.AxisX.Max = ((IAxis)financialChart.AxisX).GetMax();
        }
    }
}