Добавляю новую полезность для терминала QUIK.
По заказам доводилось делать много торговых систем, торгующих по горизонтальным уровням. Каждый заказчик строил свою систему, все они были успешно реализованы.
А как же диагональные уровни? Их возможно построить вручную, сколько людей, столько мнений…
Сегодняшний индикатор показывает косые уровни, их можно интерпретировать как диагональные уровни поддержки-сопротиления, линии каналов и т.п.
Принцип работы основан на исследованиях Томаса Демарка, которые он описал в своей книге «Теханализ – новая наука»
smart-lab.ru/books/tekhnicheskiy-analiz-novaya-nauka/
Демарк решил систематизировать творческий, в общем-то, подход к построению уровней поддержки-сопротивления.
Несколько цитат из его книги:
«
Рис. 1.3. Очевидно, что тенденцию в развитии цен можно графически представить различными прямыми линиями. Главным моментом является выбор из множества точек двух ключевых. Именно через них проходит истинная линия тренда.»
…«В самом начале своих исследований я пришел к заключению, что важные опорные ценовые точки предложения (supply price pivot points) определяются тогда, когда регистрируется ценовой максимум, выше которого цены не поднимались в день, непосредственно предшествующий данному, а также и в следующий за ним (см. рис. 1.4).
Для определения опорных ценовых точек спроса (demand price pivot points) использовалась обратная процедура; точка считалась опорной, если зафиксирован ценовой минимум, ниже которого цены не опускались в день, непосредственно предшествующий данному, а также и в следующий за ним (см. рис. 1.5). Это показалось мне вполне логичным: подобные точки появлялись в критические дни, являвшиеся поворотными пунктами в развитии тенденции.
»
Таким образом Демарк систематизирует нахождение опорных точек для построения линий, скромно назвав их TD-точки. Такие же опорные точки в квике определяются с помощью индикатора «fracals», имеют разный период в зависимости от количества баров окружающих экстремум. Например «fracals» вверх с периодом 5 – два бара перед максимальным хаем и два бара после него.
А вот пример и принцип построения линий спроса-предложения по Демарку:
…«
Рис. 1.6 На графике показаны четыре потенциальные ТD-точки предложения: А-В — первая линия предложения. После образования новой TD-точки предложения С вычерчивается новая линия предложения — В-С. Наконец, с образованием еще одной новой точки D линия предложения вновь пересматривается — C-D. Очевидно, что соотношение спроса и предложения постоянно изменяется. Соответственно меняется и линия предложения, отражающая динамику рынка.»....
Прочитав Демарка, видно что появляется возможность автоматизировать процесс построения линий спроса-предложения. По этому принципу я сделал индикатор «TD Level»:
Даже визуально можно заметить, что на Level High и Level Low заметно повышается торговая активность. Существует множество торговых систем, основанных на пробое-отбое от этих расчетных уровней, определяющих ложность пробоя по своим критериям.
Некоторые из них с успехом применялись на реальных торгах и показали, показывают неплохой результат. Позже выложу тесты некоторых алгоритмов, которые делал для себя лично, проведенные в квике. Есть конечно и реальные результаты их торговли. Поскольку эти алгоритмы лично мои рассмотрю предложения…
Ниже код индикатора и инструкция по установке.
Settings={ Name = "TD Level", period=5, line={ { Name = "Level High", Type =TYPE_POINT,-- = LINE --линии = DASH -- тире = POINT -- точки Width = 3, Color = RGB(0,255, 0) }, { Name = "Level Low", Type =TYPE_POINT, Width = 3, Color = RGB(255,0,0) }}} idx_prosl=0 function Init() return 2 end function OnCalculate(idx) if idx==1 then P = math.floor(Settings.period/2)*2+1 t_H,t_L={},{} t_Fr_H={} t_Fr_L={} th=1 tl=1 end if idx~=nil and idx>P then if idx_prosl~=idx then for l=idx-P,idx-1 do t_H[l]=H(l) t_L[l]=L(l) end if t_H[#t_H-(P-1)/2]==math.max(unpack(t_H,#t_H-P+1,#t_H)) then t_Fr_H[th]={(idx-1-(P-1)/2),t_H[#t_H-(P-1)/2]} th=th+1 end if t_L[#t_L-(P-1)/2]==math.min(unpack(t_L,#t_L-P+1,#t_L)) then t_Fr_L[tl]={(idx-1-(P-1)/2),t_L[#t_L-(P-1)/2]} tl=tl+1 end if #t_Fr_H>=3 and #t_Fr_L>=3 then i_bar=idx dd=#t_Fr_H for s=#t_Fr_H-1,1,-1 do if t_Fr_H[s][2]>=t_Fr_H[dd][2] then d=s break end d=s end if d==1 then H_ind_value=t_Fr_H[dd][2] else H_ind_value=((i_bar-t_Fr_H[d][1])*(t_Fr_H[dd][2]-t_Fr_H[d][2])/(t_Fr_H[dd][1]-t_Fr_H[d][1]))+t_Fr_H[d][2] end dd=#t_Fr_L for s=#t_Fr_L-1,1,-1 do if t_Fr_L[s][2]<=t_Fr_L[dd][2] then d=s break end d=s end if d==1 then L_ind_value=t_Fr_L[dd][2] else L_ind_value=((i_bar-t_Fr_L[d][1])*(t_Fr_L[dd][2]-t_Fr_L[d][2])/(t_Fr_L[dd][1]-t_Fr_L[d][1]))+t_Fr_L[d][2] end end end else H_ind_value=nil L_ind_value=nil end idx_prosl=idx return H_ind_value, L_ind_value end
Добавляется в Quik как индикатор, надо скопировать код в блокнот (например) и сохранить с расширением .lua (можно так: Ind_TD_Level.lua) в папке LuaIndicators в Quik, если папки LuaIndicators нет, то создать ее в папке Quik именно с именем LuaIndicators.
В меню индикаторов появится TD Level.
В настройках вводится только период для расчета TD. По умолчанию уровни отображаются точками, можно заменить в коде или настройках.
Еще для «тюнинга» терминала выкладывал тут некоторые индикаторы и систему автоматической установки стоп ордеров:
http://smart-lab.ru/blog/336797.php
Какие вопросы по индикаторам, роботам и прибамбасам для QUIK, отвечу.
Профитной торговли!