Блог им. Siroeskin
Добавляю новую полезность для терминала 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, отвечу.
Профитной торговли!











