FZF
FZF личный блог
05 апреля 2019, 11:25

Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)

В первой части мы рассмотрели «теорему о средней волатильности» где,  обозначили такое свойство:волатильности могут на разных таймфреймах значительно отличаться друг от друга. Но они всегда будут со временем сходится к одному  значению.

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

Price Channel (PC) или ценовой канал. Индикатор представляет из себя две линии, которые ограничивают канал колебаний цены. Верхняя граница канала обозначает уровень локального максимума за прошедшие N периодов, а нижняя граница – уровень локального минимума за тот же промежуток времени. Таким образом, цена ограничивается максимальными точками колебаний – экстремумами за N периодов.
Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)

 Средний Истинный Диапазон (Average True Range, ATR) . Если кратко, то это  усредненное значение длин свечей за определенный период.  По сути, это Price Channel одной свечи, усредненный за N периодов. (В моем случае он считается через простое усреднение).

Задача индикатора ожидаемого движения заключается в том, чтобы измерить волатильность на разных «таймфреймах», сравнить их и выявить значительные расхождения между ними. Для этого используются следующие составляющие:

Price Channel N периодов (РК1),  как показатель волатильности за N периодов ;

Price Channel 2*N периодов (РК2), как показатель волатильности за 2*N периодов ;

Price Channel 4*N периодов (РК4), как показатель волатильности за 4*N периодов ;

ATR   N периодов, как базовое значение с условным N0=1.

Получив эти значения, вычисляем отношения ATR к РК масштабе ATR:

L1=ATR/PK1*КОРЕНЬ(N);   L2=ATR/PK2*КОРЕНЬ(2*N);  L3=ATR/PK4*КОРЕНЬ(4*N);

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

Далее вычисляется среднее (L1+L2+L3)/3. Эта величина отражает усредненное отклонение волатильности с базовой величиной самого короткого периода. На графике эта величина будет присутствовать в виде синей линии.  Ее значение выше единицы показывает, что последние 4*N периодов рынок стоял в слишком узком диапазоне цен. Этот показатель говорит, что возможно, рынку пора делать движение и выравнивать значения волатильностей. Для фильтрации шумов есть пороговое  значение  F (filter):  сигнал принимается во внимание когда (L1+L2+L3)/3 > F

И основная сигнальная линия ( на графике отображается красным) вычисляется как  L1*(L1+L2+L3)/3 при условии что (L1+L2+L3)/3 > F. Если условие не выполняется, значение равно(1).

Значение сигнальной линии выше единицы показывает, что назревает движение для выравнивания значений волатильности.

На каком таймфрейме и с каким периодом использовать этот индикатор, зависит от того, какой величины движение вы хотите поймать.  Показания индикатора можно (нужно) использовать, когда вы собираетесь продавать опционы. Поскольку он предупреждает о возможном движении.
Индикатор ожидаемого движения для опционной торговли (Часть 2 устройство индикатора)

Далее идет код индикатора. Его нужно скопировать в текстовый файл, присвоить ему расширение .lua   и положить его в каталог Квика в папку LuaIndicators

По умолчанию  (period ) N=14; (filter) F=1,2 ;   индикатор должен появиться в списке индикаторов под именем "FZF_dVOL2".  Свои индикаторы я начинаю с FZF чтобы потом их легче было искать в общем списке и они стоят в одной кучке.

Settings=
{
	Name = "FZF_dVOL2",
	period = 14,
	filter = 1.2,
	line = 
	{
		{
		Name = "FZF_L1",
		Color = RGB(0, 255, 0),
		Type = TYPE_LINE,
		Width = 1
		},
		{
		Name = "FZF_L2",
		Color = RGB(0, 255, 255),
		Type = TYPE_LINE,
		Width = 1
		},
		{
		Name = "FZF_L3",
		Color = RGB(255, 0, 0),
		Type = TYPE_LINE,
		Width = 2
		}
	}
}
function Init()
	return 3
end

function OnCalculate(index)
	if index < (Settings.period*4+1) then
		return nil
	else
		local sum = 0
		local ATR=0
		for i = index-Settings.period+1, index do
			sum = sum + math.max(math.abs(C(i-1) - L(i)),math.abs(H(i) - C(i-1)),(H(i) - L(i)))	
		end

              	ATR=sum/Settings.period --посчитали АТР

		-- прайс канал с периодом 1
  		MAX1 = H(index)
                MIN1 = L(index)
                for i = 0, (Settings.period-1) do
                        if MAX1 < H(index-i) then    MAX1 = H(index-i)       end
                        if MIN1 > L(index-i) then    MIN1 = L(index-i)       end                     
                end
		-- прайс канал с периодом *2
  		MAX2 = H(index)
                MIN2 = L(index)
                for i = 0, (Settings.period*2-1) do
                        if MAX2 < H(index-i) then    MAX2 = H(index-i)       end
                        if MIN2 > L(index-i) then    MIN2 = L(index-i)       end                     
                end
		-- прайс канал с периодом *4
  		MAX4 = H(index)
                MIN4 = L(index)
                for i = 0, (Settings.period*4-1) do
                        if MAX4 < H(index-i) then    MAX4 = H(index-i)       end
                        if MIN4 > L(index-i) then    MIN4 = L(index-i)       end                     
                end
                local L1= 0
		local L2= 0
		local L3= 0

      L1=ATR/(MAX1 - MIN1)*math.sqrt(Settings.period)
      L2=ATR/(MAX2 - MIN2)*math.sqrt(Settings.period*2)
      L3=ATR/(MAX4 - MIN4)*math.sqrt(Settings.period*4)

		local LL1= 0
		local LL2= 0
		local LL3= 0

   	   LL1 =  L1 --короткий канал
   	   LL2 = (L1+L2+L3)/3 -- Среднее
    	   if(LL2 < Settings.filter) then
 	 	 LL3=1
      	   else
		 LL3 = L1*(L1+L2+L3)/3
	   end

       return  LL1, LL2 , LL3

  end
end





8 Комментариев
  • Московский Лоссбой
    05 апреля 2019, 11:56
         А что, Друже мой, идея интересная. К моему глубочайшему, на Мосбирже для моей нефти период торговый кастрирован по сравнению со всем миром.

         Хотя, опять же, «в своё время», я наоборот выкидывал значения Брент в период после 20:00 МСК. Сейчас — уже нельзя так. Пиндосы рулить стали вечерними движениями.

         А вот для РИ, сбера или рубля — самое-самое оно…
  • ch5oh
    05 апреля 2019, 14:44

    Чет все настолько обалдели, что даже сказать нечего?

     

    1. По сути насколько понял речь о том, что локальный рост АТР (по сравнению с шириной PriceChannel) используется как признак возможного начала движения. Правильно интерпретирую?

     

    При этом последующее снижение обратно ниже барьера не говорит об окончании движения??? Это делает применение индикатора неочевидным. Как Вы определяете, что опционы можно снова продавать?

     

    2. Чисто на мой испорченный вкус. Величину Lx хочется сразу прологарифмировать.

    Тогда водораздел пройдет через 0, а не через 1. И выбросы наверх будут уже не настолько ломать масштаб графика, чтобы затруднить восприятие и интерпретацию информации...


    Что думаете насчет логарифма?

      • Московский Лоссбой
        05 апреля 2019, 16:24
        FZF, кстати, я в прошлые выхи писал, что АТРы перестал падать, хотя плавно снижались до этого на протяжении трёх месяцев. и я ожидал, как рывка по цене, так и скачка рыночной волатильности (подорожание опционов).

             Цена-то скакнула, а опционы — хрен! Не совсем прав был я, значит… В выхи снова посчитаю динамику АТР-ов.
        • vitsantal
          05 апреля 2019, 16:42
          Московский Лоссбой, если ATR растет, а цена опциона нет, то это идеальное время для покупки опциона… период с января по март 2018 см. Вола по опционам начала догонять с конца января и догнала в середине марта 2018 — выход из купленной позы по опционам ;)
      • vitsantal
        05 апреля 2019, 16:40
        FZF, можно то же самое построить на одном индикаторе ATR без использования PriceChannel, используя только ATR разных периодов и добавив значение Отклонение от мин значения ATR за период и от макс значения ATR за период.

        Грубо если отклонение относительное от мин значения за период не более 10% и от максимума на 10% за период, то мы говорим о том, что мы находимся в диапазоне постоянной волы по БА, не растет и не падает. Чем больше тайм фреймов тем резче картинка, но добавляется вероятность поймать «шум-всплеск»… Тоже не грааль, но фильтрует периоды по воле БА.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн