Финансовая лаборатория

Биржевая торговля и торговые роботы

Трейдеры, которые только начинают разбираться с техническим анализом (а иногда даже и более опытные трейдеры) частенько предполагают, что они могут применять технические индикаторы сразу же, как только у этого технического индикатора появится "валидное" значение.

Стабильность индикатора

Для большинства индикаторов, например таких, как простая скользящая средния, стохастик и т.п. такое предположение обосновано. К примеру, значение 20-периодичной скользящей средней (SMA) всегда будет однинаковым сразу же после одинаковых 20-ти баров. Значения этих индикаторов в конце периода не зависит от данных, которые находятся в начале периода.

Другая большая группа индикаторов (экспоненциальная скользящая средняя, скользящая средняя Вилдера, RSI, MACD, индикатор Кальмана и многие другие) при своем расчете используют свои собственные предыдущие значения.

Скорее всего, Вы заметили, что такие, постепенно рассчитываемые индикаторы, подобные тем, которые находятся во второй группе, быстрее реагируют на движение цены. Однако следует иметь в виду, что значения таких индикаторов в самом начале расчета нестабильны.

Почему значения некоторых индикаторов нестабильны и зависят от периода доступных данных?

Это хороший вопрос. Для ответа на этот вопрос мы приготовили пример, в котором используется 4 индикатора с шириной исследуемого окна 20 баров назад.

Пример (как выполнить пример приведенного кода)...

protected override void Execute()
{
   HideVolume();
   ChartPane pane1 = CreatePane( 25, true, true );
   ChartPane pane2 = CreatePane( 25, true, true );
   ChartPane pane3 = CreatePane( 25, true, true );
   ChartPane pane4 = CreatePane( 25, true, true );
   PrintDebug("");
   PrintDebug("Количество баров = " + Bars.Count);

   DataSeries ema = EMA.Series(Close, 20, WealthLab.Indicators.EMACalculation.Modern);
   DataSeries macd = MACD.Series(Close);
   DataSeries rsi = RSI.Series(Close, 20);
   DataSeries sma = SMA.Series(Close, 20);

   // Print the last value of each indicator to the debug window
   int bar = Bars.Count - 1;
   PrintDebug("ema = " + ema[bar]);
   PrintDebug("macd = " + macd[bar]);
   PrintDebug("rsi = " + rsi[bar]);
   PrintDebug("sma = " + sma[bar]);

   PlotSeries(pane1, ema, Color.Red, WealthLab.LineStyle.Solid, 1);
   PlotSeries(pane2, macd, Color.Blue, WealthLab.LineStyle.Solid, 1);
   PlotSeries(pane3, rsi, Color.Green, WealthLab.LineStyle.Solid, 1);
   PlotSeries(pane4, sma, Color.Fuchsia, WealthLab.LineStyle.Solid, 1);
}

Для того, чтобы выполнить этот пример, сначала установите диапазон тестирования (в DataRange) равное 21-му бару и кликните по любому финансовому инструменту.

Диапазон данных

Диапазон данных (DataRange)

Затем постепенно меняйте ширину диапазона тестирования, увеличивая количество баров до 30, 40, 60, 100 и 120.

Стабильность индикаторов

Зависимость индикаторов от DataRange

При смене диапазона данных, программа будет рассчитывать и распечатывать новые результаты расчетов для индикаторов на последнем баре.

Значения индикаторов

Изменение значений индикаторов

Вскоре, выполняя эти действия, Вы заметите, что только один из четыерх индикаторов (SMA) не меняет своего значения, в то время как значения других индикаторов колеблются пока не стабилизируются на более точном значении.

Почему опасно использовать нестабильные значения индикаторов

Как мы продемонстрировали, значения некоторых индикаторов на коротком отрезке времени могут демонстрировать невероятно разнящиеся результаты. Хитрость здесь заключается в том, чтобы понять те индикаторы, которые Вы используете и игнорировать значения этих индикаторов до тех пор, пока их значения не станут устойчивыми.

Для осмысленных и воспроизводимых результатов торговых стратегий Вы должны использовать индикаторы только с того времени, когда их значения становятся стабильными.

Лучшим способом игнорирования индикаторов, имеющих неустойчивые значения - является запуск торгового цикла после бара, на котором даже индикатор, требующий для своего расчета самое длительное время уже приобрел стабильность.

Для наших 4-х индикаторов, которые используются в примере, Вы можете заметить, что Значение индикатора RSI требует больше всего баров для его стабилизации. Именно поэтому мы должны будем запускать торговый цикл не раньше чем на 60-м баре, а еще лучше - протестировать его значение даже на 120-м баре.

Разумным правилом для того, чтобы не иметь проблем с постепенно рассчитываемыми индикаторами может стать необходимость игнорировать значения этих индикаторов на периоде времени, который в 3 или даже 4 раза превышает тот период, который нужен для их расчета.

Пример (как выполнить пример приведенного кода)...

protected override void Execute()
{
   /* начало торгового цикла только после пропуска периода для стабильности индикаторов*/
   for(int bar = 60; bar < Bars.Count; bar++)
   {
   /* код стратегии, либо торговые правила */
   }
}

С какими индикаторами нужно быть осторожным?

Следующие индикаторы из из библиотеки стандартных индикаторов Wealth-Lab, вычисляются с использованием собственных значений из предыдущих периодов и поэтому могут рассчитывать нестабильные значения в начале ряда данных.

ADX, ADXR, ATR, ATRP, CADO, DIMinus, DIPlus, DSS, EMA, FAMA, Kalman, KAMA, KST, MACD, MAMA, OBV, Parabolic, Parabolic2, RSI, StochRSI, TRIX, UltimateOsc, Vidya, Volatility, WilderMA

Индикатор аккумуляции-дистрибуции является нестабильным в том смысле, что его вычисление "аккумулируется" с определенного бара. Если эта начальная точка меняется, то следовательно тут же меняется и его вычисления для всех прочих баров.

Работая с этими индикаторами не забывайте игнорировать их значения на отрезке времени, который минимум в 4 раза превышает тот отрезок времени, который необходим для их вычисления. Сегодняшняя тема очень важна, так как очень часто трейдеры игнорируют высказанные здесь правила. В следующий раз приступим к самой интересной теме: программирование торговых стратегий.

Рубрики: Indicators, WealthScript

Комментариев: 5

  1. budmit пишет:

    Добрый вечер, Дмитрий.

    Как Вы используете WL? Только для тестов систем? а потом готовые в TSLab? Или есть решение для подключения сразу к квику версий выше 4? Мне нужно решение с сишарпом, поэтому 4 версия не подходит.

    Вы купили лицензионную версию при отсутствии адаптера к квику? чем оно мотивировано ? Есть же даже бесплатные решения типа стокшарпа…

    У меня не спортивный интерес, дело в том, что я много лет сидел на омеге и горя как говориться не знал – ну вот вырос из этих штанишек, посмотрел по сторонам , а софта то великое многообразие появилось, вот и встал вопрос выбора, а это оказалось сделать не легко для человека весьма
    посредсвенного в программировании.

    Тем не менее я всегда сам кодировал себе стратегии в экселе и в омеге и хочу выбрать развивающийся продукт и чтобы он давал мне много возможностей даже если я их не буду все использовать…

    Подскажите может где есть нормальное объективное сравнение софта? Как выбрать себе инструмент оказалось тяжело :(

    Заранее благодарен.

    • Добрый день.

      1. Я используя Wealth-Lab только для тестов торговых систем, т.к.:
      а) здесь есть очень удобные инструменты – генетический опитмизатор и монте-карло оптимизатор, что позволяет за очень короткое время находить оптимальные параметры даже для тех стратегий, у которых количество и диапазон параметров велик и обычным способом невозможно за разумное время подобрать нормальные параметры торговой системы.

      б) Очень удобная библиотека (не нужно самому заново писать кучу индикаторов, осцилляторов и прочих прибамбасов для системы.

      в) Лицензия дает доступ не только к программе, но и к закрытому для всех разделу сайта wealth-lab.com – где представлено более 150 уже готовых торговых систем + этот раздел постоянно пополняется.

      г) Есть доступ к технической поддержке и эта техподдержка работает очень эффективно.

      д) Даже непрограммисту (я тоже не программист) довольно легко разобраться с языком написания стратегий C# и с библиотекой WealthScript – тем более есть прекрасное руководство на английском (а теперь, надеюсь, и на русском )

      2. Возможность подключить к Квику через брокер Адаптер была буквально месяц назад через брокера Церих, но там у них что-то с руководителем этого направления Арсеном Яковлевым произошло – кажется, ушел куда-то так что теперь можно подключаться только самостоятельно делая брокер-адаптер. Дело это непростое, но умельцы существуют. Смотри, к примеру сайт Игоря Чечета http://chechet.org – он торгует через собственный брокер адаптер (кажется, к Альфа брокеру).

      3. Если хотите автоматически торговать без заморочек с написанием брокерадаптера и поддержания его в работоспособном состоянии – на мой взгляд разумнее всего поступать так: разрабатывать торговые стратегии в Велсе, а торговать их либо через ТСЛаб, либо используя Stock#

  2. [...] В данном примере цикл стартует с 50-го бара данных, однако Вам следует выбирать точку старта торгового цикла исходя из периода тех индикаторов, которые Вы используете в торговой стратегии с учетом их устойчивости. [...]

  3. [...] Стабильность индикаторов в программе Wealth-Lab в зависимо…  Главная  Проектирование и построение [...]

Оставить комментарий