﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Проблема с использованием RelativeStrengthIndex</title>
  <id>~/topic/5403/problema-s-ispolzovaniem-relativestrengthindex/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-06T19:17:41Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=5403" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/34803/</id>
    <title type="text">Иван З.: Может проблема в том что индикатор составляться из 10 свечей, а вы ему дали только 1. Нет, ...</title>
    <published>2016-05-25T06:59:03Z</published>
    <updated>2016-05-25T06:59:03Z</updated>
    <author>
      <name>kusko</name>
      <uri>https://stocksharp.ru/users/95404/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(34802)" rel="nofollow" target="_blank"&gt;Иван З.&lt;/a&gt;:&lt;/strong&gt;
Может проблема в том что индикатор составляться из 10 свечей, а вы ему дали только 1.
Нет, это все в цикле.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Возможно вам помогут исходники индикатора &lt;a href="https://github.com/StockSharp/StockSharp/blob/master/Algo/Indicators/RelativeStrengthIndex.cs" target="_blank"&gt;https://github.com/StockSharp/StockSharp/blob/master/Algo/Indicators/RelativeStrengthIndex.cs&lt;/a&gt;
Спасибо! Именно они и помогли!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Проблема решена.
Как оказалось индикатор работал.
А получить выходное значение удалось таким способом:
вместо
rsi.Process(candle.ClosePrice);
var RSI = rsi.GetCurrentValue();
написал
var RSI = rsi.Process(candle.ClosePrice);
Переменная RSI = 0 до тех пор пока индикатор не наберет нужное количество свечей для расчета.&lt;/p&gt;
&lt;p&gt;Как всегда, все просто)))&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/34802/</id>
    <title type="text">Может проблема в том что индикатор составляться из 10 свечей, а вы ему дали только 1. Возможно вам п...</title>
    <published>2016-05-25T06:44:58Z</published>
    <updated>2016-05-25T06:44:58Z</updated>
    <author>
      <name>Иван З.</name>
      <uri>https://stocksharp.ru/users/6502/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Может проблема в том что индикатор составляться из 10 свечей, а вы ему дали только 1.
Возможно вам помогут исходники индикатора &lt;a href="https://github.com/StockSharp/StockSharp/blob/master/Algo/Indicators/RelativeStrengthIndex.cs" target="_blank"&gt;https://github.com/StockSharp/StockSharp/blob/master/Algo/Indicators/RelativeStrengthIndex.cs&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/34801/</id>
    <title type="text">Решил дополнить пример SampleSmartSMA индикатором RSI Вызвал конструктор public RelativeStrengthInde...</title>
    <published>2016-05-25T02:44:14Z</published>
    <updated>2016-05-25T02:50:05Z</updated>
    <author>
      <name>kusko</name>
      <uri>https://stocksharp.ru/users/95404/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p Length="10"&gt;Решил дополнить пример SampleSmartSMA индикатором RSI
Вызвал конструктор
public RelativeStrengthIndex rsi = new RelativeStrengthIndex() ;
Предал цену закрытия свечи
rsi.Process(candle.ClosePrice);
Записываю результат
var RSI = rsi.GetCurrentValue();
Но при запуске пишет что Значение индикатора не содержит данных
Отслеживал значение переменной RSI - всегда 0
&lt;img src="http://pastenow.ru/OGK6.png" alt="Скрин ошибки" /&gt;
Создал тестовую переменную RSII что бы увидеть что значение candle не пустое.
&lt;img src="http://pastenow.ru/OGK4.png" alt="Точка останова" /&gt;&lt;/p&gt;
&lt;p&gt;Подскажите, в чем ошибка может быть?
Может ему еще какие-то значения нужно передавать?&lt;/p&gt;
&lt;p&gt;Привожу код SmaStrategy.cs&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
namespace SampleSmartSMA
{
    using Ecng.Common;

    using StockSharp.Algo;
    using StockSharp.Algo.Candles;
    using StockSharp.Algo.Indicators;
    using StockSharp.Algo.Strategies;
    using StockSharp.Algo.Strategies.Quoting;
    using StockSharp.Messages;

    class SmaStrategy : Strategy
    {
        private readonly CandleSeries _series;
        private bool _isShortLessThenLong;


        public SmaStrategy(CandleSeries series, SimpleMovingAverage longSma, SimpleMovingAverage shortSma)
        {
            _series = series;

            LongSma = longSma;
            ShortSma = shortSma;
        }

        public SimpleMovingAverage LongSma { get; private set; }
        public SimpleMovingAverage ShortSma { get; private set; }

        protected override void OnStarted()
        {
            _series
                .WhenCandlesFinished()
                .Do(ProcessCandle)
                .Apply(this);

            // запоминаем текущее положение относительно друг друга
            _isShortLessThenLong = ShortSma.GetCurrentValue() &amp;lt; LongSma.GetCurrentValue();
           // var RSI = ShortSma.GetCurrentValue();
            base.OnStarted();
        }

        private void ProcessCandle(Candle candle)
        {
            // если наша стратегия в процессе остановки
            if (ProcessState == ProcessStates.Stopping)
            {
                // отменяем активные заявки
                CancelActiveOrders();
                return;
            }
            
            // добавляем новую свечу
            LongSma.Process(candle);
            ShortSma.Process(candle);
            
            // вычисляем новое положение относительно друг друга
            var isShortLessThenLong = ShortSma.GetCurrentValue() &amp;lt; LongSma.GetCurrentValue();

            // если произошло пересечение
            if (_isShortLessThenLong != isShortLessThenLong)
            {

                // если короткая меньше чем длинная, то индикатор &amp;quot;продажа&amp;quot;, иначе, &amp;quot;покупка&amp;quot;.
                Options.Item = isShortLessThenLong ? 1 : 2;
                // если короткая меньше чем длинная, то продажа, иначе, покупка.
//                var direction = isShortLessThenLong ? Sides.Sell : Sides.Buy;

                // вычисляем размер для открытия или переворота позы
                var volume = Position == 0 ? Volume : Position.Abs() * 2;

                // регистрируем заявку (обычным способом - лимитированной заявкой)
                //RegisterOrder(this.CreateOrder(direction, (decimal)Security.GetCurrentPrice(direction), volume));

                // переворачиваем позицию через котирование
//				var strategy = new MarketQuotingStrategy(direction, volume);
//				ChildStrategies.Add(strategy);
                
                // запоминаем текущее положение относительно друг друга
                _isShortLessThenLong = isShortLessThenLong;
            }

            var RSII = candle.ClosePrice;

            rsi.Process(candle.ClosePrice);
            var RSI = rsi.GetCurrentValue();
            
        }

        public RelativeStrengthIndex rsi = new RelativeStrengthIndex() { Length = 10 };

    }
}

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>