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

FinancialChart の RSI(相対力指数)インジケータは、株価の動きの速さと大きさを測定するモメンタムオシレータです。資産の終値の上向きの動きを取引期間中の下向きの動きと比較して、株の強さまたは弱さを判断します。値は 0 ~ 100 の間で変動します。プラスの変化が強い株の方が、マイナスの変化が強い株より RSI が高くなります。

最新の評価益の大きさを最新の評価損と比較する際に RSI を応用することで、資産の買われ過ぎ/売られ過ぎの状況を判断できます。株は、RSI が 70 を超えると買われ過ぎ、30 を下回ると売られ過ぎと見なされます。

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

コードスニペットは、クラス DataService を使用します。コードを確認するには、ATR を参照してください。

Partial Public Class Indicators
    Inherits Page
    Private dataService As DataService = dataService.GetService()

    Private rsi As New RSI() With {
        .SeriesName = "RSI"
    }
    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 {
                "Relative Strength Index",
            }
        End Get
    End Property

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

        If cbIndicatorType.SelectedIndex = 1 Then
            ser = rsi
        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))
        rsi.Period = 14
    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();
    RSI rsi = new RSI() { SeriesName = "RSI" };

    public Indicators()
    {
        InitializeComponent();
    }

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

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

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

        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)
    {
        rsi.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();
        }
    }
}