FinancialChart for UWP
Williams %R
分析機能 > インジケータ > Williams %R

FinancialChart のWilliams %R (ウィリアムズ %R)インジケータは、現在の資産価格を過去の一定の期間中の最高値と比較するモメンタムインジケータです。通常、比較対象の過去の期間は 14 期間です。このインジケータは、0 ~ -100 の間で変動します。これは、短期ストキャスティクスの逆になります。Williams %Rが過去の期間の最高値と比較した株の終値のレベルを表示するのに対して、ストキャスティクスは最安値と比較した株の終値のレベルを表示します。どちらのインジケータも同じ線を示しますが、スケーリングが異なります。Williams %R を買われ過ぎ/売られ過ぎのレベルの判定に応用すると、買いと売りのシグナルを提供したり、モメンタムを確認することができます。

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

次のコードスニペットは、Williams%Rを使用する方法を示しています。 DataServiceのコードについては、RTIを参照してください。

Partial Public Class Indicators
    Inherits Page
    Private dataService As DataService = dataService.GetService()
    Private wi As New WilliamsR() With {
        .SeriesName = "Williams %R"
    }

    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 {
               
                "Williams %R"
            }
        End Get
    End Property


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

        If cbIndicatorType.SelectedIndex = 3 Then
            ser = wi
        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 = 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();
    WilliamsR wr = new WilliamsR() { SeriesName = "Williams % R" };

    public Indicators()
    {
        InitializeComponent();
    }

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

    public List<string> IndicatorType
    {
        get
        {
            return new List<string>()
            {
                "Williams %R"
            };
        }
    }

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

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