Сравнительный анализ 30 индикаторов и осцилляторов

Александр | 19 марта, 2008


Введение

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

Однако такая оценка зачастую не претендует на объективность в силу большого числа параметров (инструмент, период графика, волатильность и т.п.) и, как следствие, большого количества анализируемой информации. Повысить достоверность выводов о конкретных индикаторах и осцилляторах позволит проведение их сравнительного анализа.

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


Советник

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

В программе анализируются следующие индикаторы и осцилляторы:
  1. Acceleration/Deceleration — АС
  2. Accumulation/Distribution - A/D
  3. Alligator & Fractals
  4. Gator Oscillator
  5. Average Directional Movement Index - ADX
  6. Average True Range - ATR
  7. Awesome Oscillator
  8. Bears Power
  9. Bollinger Bands
  10. Bulls Power
  11. Commodity Channel Index
  12. DeMarker
  13. Envelopes
  14. Force Index
  15. Ichimoku Kinko Hyo (1)
  16. Ichimoku Kinko Hyo (2)
  17. Ichimoku Kinko Hyo (3)
  18. Money Flow Index – MFI
  19. Moving Average
  20. MACD (1)
  21. MACD (2)
  22. Moving Average of Oscillator (Гистограмма MACD) (1)
  23. Moving Average of Oscillator (Гистограмма MACD) (2)
  24. Parabolic SAR
  25. RSI
  26. RVI
  27. Standard Deviation
  28. Stochastic Oscillator (1)
  29. Stochastic Oscillator (2)
  30. Williams Percent Range

Для реализации поставленной цели на ценовой график наносится цифровая матрица, состоящая из чисел «-1», «0», «1». Каждая строка матрицы отводится определенному индикатору или осциллятору. Столбцы матрицы формируются в каждый момент времени (согласно выбранному периоду графика). Появление «-1» в определенной строке матрицы свидетельствует о наличии сигнала на продажу от конкретного индикатора (осциллятора); появление «1» - о наличии сигнала на покупку; появление «0» - об отсутствии сигналов от индикатора. Результат работы программы показан на Рис. 1



На Рис 2 показана интерпретация работы индикатора RVI в программную матрицу. В строку 26 (она отведена рассматриваемому индикатору) вносится «1», когда основная линия поднимается выше сигнальной (индикатор рекомендует покупать); «-1» - при нахождении сигнальной линии выше основной (продажа). Исходя из специфики индикатора, значение «0» в данной строке места не имеет.



В силу специфики индикаторов и осцилляторов, в матрице наглядно прослеживаются 2 группы показателей: значимые постоянно, соответствующие флаги которых (значения в матрице) не обращаются в ноль (например, ADX) и значимые точечно, флаги которых обращаются в ноль и подают сигнал только в конкретные моменты времени (например, Parabolic SAR). Рис. 3 демонстрирует описанное различие.



Анализ полученной информации и последующее формирование пакета индикаторов рекомендуется производить следующим образом. Изначально следует выбрать отрезок графика, на котором имеет место тренд. Затем ограничивается период возможных сделок. Началом такого периода может быть флэт перед выбранным трендом или зарождение тренда; окончание периода – последний момент времени, когда сделка еще будет выгодной. Таким образом отсекаются преждевременные и запаздывающие показания индикаторов. На Рис. 4 такой период ограничен салатовыми линиями. Далее внутри выбранного временного периода производится анализ показаний индикаторов (осцилляторов): выбираются индикаторы, предсказавшие тренд верно и отсеиваются индикаторы, подавшие ложный сигнал. Далее пакет выбранных индикаторов (осцилляторов) может быть расширен или сужен путем проведения аналогичного анализа на других промежутках времени, в результате чего должен быть сформирован окончательный пакет показателей.



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

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


Алгоритм

На первом этапе производится определение значений «флагов» (-1, 0, 1) для каждого из индикаторов (осцилляторов). Исходя из того, что один индикатор (например, MACD) подает сигналы различными способами (схождение/расхождение, пересечение нулевой линии и т.д.), в коде программы отдельно для каждого из 30 показателей описан принцип его определения. Например, анализ осциллятора «Williams Percent Range» реализован следующим образом:

//30. Williams Percent Range
//Покупка: пересечение -80 снизу вверх
//Продажа: пересечение -20 сверху вниз
if (iWPR(NULL,piwpr,piwprbar,1)<-80&&iWPR(NULL,piwpr,piwprbar,0)>=-80)
{f30=1;}
if (iWPR(NULL,piwpr,piwprbar,1)>-20&&iWPR(NULL,piwpr,piwprbar,0)<=-20)
{f30=-1;}

Затем из полученных числовых значений флагов формируются уникальные объекты типа «Текст» (с целью предотвращения дублирования имен объектов используется текущее значение времени) и выводятся на экран.

timeident=TimeCurrent(); //Время для формирования уникального имени объекта
for (i=0;i<=29;i++) //Цикл вывода значенй на экран
 
//Формирование уникальных имен объектов
{ident=DoubleToStr(30-i,0)+"   "+DoubleToStr(timeident,0); 
 
//Создание объектов, указание их местоположений
ObjectCreate(ident,OBJ_TEXT,0,timeident,WindowPriceMin()+Point*5*(i+1));
 
info=DoubleToStr(f[30-i],0); //Формирование текстовой строки для вывода
ObjectSetText(ident,info,6,"Arial", Black);} //Описание формата вывода и сам вывод

Для проверки сформированных портфелей показателей в программе предусмотрен «Блок обработки стратегии и установки Главного Флага». В данный блок прописываются условия, при которых Советник должен совершать покупку (Главный Флаг равен 1) или продажу (Главный Флаг равен -1). Если описанные условия не выполняются, Главный Флаг остается равным нулю и сделок не совершается. Также присутствует блок закрытия позиций (закомментирован).

if(f8==1&&f21==1) //Набор условий, при выполнении которых происходит покупка
flag=1;
if(f8==-1&&f21==-1) //Набор условий, при выполнении которых происходит продажа
flag=-1;

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


Заключение

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

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