Блог им. Dabelw

Нужна помощь зала по написанию индикатора (ТЗ)

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

История вопроса. Как то так сложилось, что доступные индикаторы к нам приходят, наверное, из Форекса. И если там считают дельты, то есть пункты, то на фонде положено считать проценты. Однако, люди, которые называют аттракторы простыми скользящими средними, навязывают свое видение. Я не возражаю против ATR, но хотелось бы видеть волатильность в процентах, а не в попугаях. Тем более, работая на опционах, знать реализованную волатильность очень важно. И даже есть с чем ее сравнивать.

Индикатор/осцилятор будет называться HV, а также моим именем, извините за скромность. Это осциллятор, который рассчитывается по следующей формуле. Ссылка на них будет ниже.

1. Close–to–close ©

 2. Parkinson (HL)

 3. Garman-Klass (OHLC).

4. Rogers-Satchell (OHLC)

5. Garman-Klass Yang-Zhang extension (OHLC)

6. Yang-Zhang (OHLC)

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

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

Время, которое используется в индикаторе берется из тайм фрейма и корректируется на коофициент, ввод которого должен быть предусмотрен в настройках индикатора. Используемые таймфреймы 15 мин 1 час 4 часа День Неделя Месяц.

Привожу ссылку на статью на русском с данными формулами. Это наш одноклубник перевел. http://quant-lab.com/2014/06/23/measuring-historical-volatility/#comment-11

Показания индикатора с расчетом по закрытию и на текущий момент. Должен быть предусмотрен выбор.

Пример расчета НV  волатильности Close-Close.

Берем отношение закрытия дня сегодня и дня вчера, то есть делим С на С-1. получаем X

Вычисляем натуральный логарифм из числа X. Получаем Y

Устанавливаем, через настройки, число N. Это период усреднения. Усредняем. То есть складываем N штук Y и делим на N штук. Это усреднение простое. Еще надо сделать усреднение экспонентное. Способ усреднения и период выбирается в настройках индикатора. Полученное значение определяем переменной С.

Находим разность между Y и средним значением С, получаем Z. Y-С = Z

Возводим Z в квадрат, или Z умножаем на Z получаем K. Z*Z=К

Находим сумму N штук K. N у нас уже задано в настройках, пункт три. Получаем V.

Берем V и делим на N-1. Получаем А. То есть, если у нас задан период N=10, то N-1=9 ;))) ( последние символы обозначают ржаку)

Берем корень квадратный из А. Получаем Q.

Готовим переменную T. Это количество времени в данном тайм фрейме. В дневном тайм фрейме 256. Это условное количество рабочих дней в году. Так как у нас могут быть праздники или просто выходные, то это значение ставится по умолчанию в настройках, но должна быть возможность изменять эту цифру из настроек.( По идеи нам надо найти средневзвешенную величину, но я пока не придумал как это сделать. Мысли придут при отладке.) Соответственно, что бы найти цифру для недельного тайм фрейма нам надо 256 разделить на 5 дней в рабочей недели. А что бы найти по часу, то 256 умножаем на количество часов в торговом дне. В первой версии мы можем брать количество свечей в торговой сессии, (Потом откалибруем и найдем средне взвешенное для каждого тайм фрейма.) После вычисления переменной T мы извлекаем из нее квадратный корень и получаем D.

Дальше, умножаем переменную Q на D и все это умножаем на 100. Получается W.

W выводим на график с возможностью выбора методов отрисовки.

Если что то непонятно, вот тут есть: ruforum.mt5.com/threads/3459-raschet-volatilnosti

Так как Lua работает с картинками, необходимо предусмотреть различные гаджетные фишки. Типа, при растущей волатильности выскакивает моя фотография где я кручу дули. При падающей, появляется рисунок с котиком. Ну и тому подобное.

По формулам приведенным в статье. Меня сильно не доставайте. Я написал Олегу Мубаракшину, видел у него картинки, по моему в Екселе, может, откликнется и пришлет. Ну, если что, будем вместе сочинять. Один я ошибок могу напороть.

Извините за сумбурность, но что можно написать еще про осциллятор. Задавайте вопросы, отвечу.

ЗЫ У Олега есть все эти формулы на R. И готов помочь. Так что математик у нас есть!

 

 

★13
6 комментариев
… а не проще ли АТР разделить на спот? И зачем нужен возврат к среднему, если он уже заложен в среднее квадратическое отклонение размером окна истории?
avatar
bozon, Тут расчет немного отличается от ADR и имеет более предсказательное поведение. 
Эко тебя вшторило то! Я обычно сразу ошибку вижу, а тут что то сразу не получилось. Ну давай как в мультике:
я бы еще добавил:
7. Exponential weighted
Oleg Mubarakshin ~ Quant-lab, Сейчас попробую. Надо с Мю от t разобраться. Ты бы шаги решений формул сбросил. 

теги блога Дмитрий Новиков

....все тэги



UPDONW
Новый дизайн