Избранное трейдера Денис Жарков
--[[ индикатор торговой системы QUIK: канал на последнем зигзаге индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала параметры: Procent - величина зигзага в % k - коэффизиент ширины канала Ext - =0-канал стоится по средним =1-канал стоится по экстремуму Как им пользоваться: в папке QUIK\LuaIndicators создаем текстовый файл с содержимым кода индикатора добавляем индикатор на график задаем параметр чувствиельности инлдикатора — Процент индикатор показывает уровни, в которых находится тренд если тренд еще не сформировался, то границы канала могут расширяться по мере движения цены если в канале уже есть локальные вершины, то при следующем походе индикатора к границе канал возмен разворот тренда или коррекции в рамках данного канала --]] Settings= { Name = "Zigzag_channel_fast", -- название индикатора Procent=5.0, -- величина зигзага в % k=2, -- коэффизиент ширины канала Ext=1, -- =0-канал стоится по средним =1-канал стоится по экстремуму shif=0, line= { { Name = "zigzagline", Type =TYPE_LINE, Width = 1, Color = RGB(120,90, 140) }, { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) }, { Name = "cur2", Type =TYPE_LINE, Width = 2, Color = RGB(0,200, 200) }, { Name = "cur3", Type =TYPE_LINE, Width = 2, Color = RGB(200,200, 0) }, { Name = "cur4", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) }, { Name = "cur5", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 255) }, { Name = "cur6", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur7", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur8", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur9", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur10", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "cur11", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) } } } function Init() y1 = nil y2 = nil y3 = nil x1 = 1 x2 = 1 x3 = 1 oldindex = 1 a_01 = 0 b_01 = 0 a_02 = 0 b_02 = 0 vminus_01 = 0 vplus_01 = 0 vminus_02 = 0 vplus_02 = 0 vFrom_01 = 1 vTo_01 = 1 vFrom_02 = 1 vTo_02 = 1 vminus = 0 vplus = 0 vminus_n = 0 vplus_n = 0 ret = 0 last_ind = 1 v1=nil v2=nil v3=nil v4=nil v5=nil v6=nil v7=nil v8=nil v9=nil v10=nil return 10 end function recalcline(num, index, rec) if index == Size()-sh and rec == 0 then for i = 1, index do if m == 1 then SetValue(i, 3, nil) SetValue(i, 4, nil) end if m == 2 then SetValue(i, 6, nil) SetValue(i, 7, nil) end end end if index == Size()-sh or rec == 1 then if num == 1 then vFrom = 0 --[[ --]] vTo = 0 if x3 < x2 then vFrom = x3 vTo = x2 else vFrom = x2 vTo = x3 end end if num == 2 then vFrom = 0 vTo = 0 if x1 < x2 then vFrom = x1 vTo = x2 else vFrom = x2 vTo = x1 end end if vFrom < 1 then vFrom = 1 end a1 = 0 a2 = 0 a3 = 0 a4 = 0 n = 0 a = 0 b = 0 for i = vFrom, vTo do n=n+1 a1 = a1+i*C(i) a2 = a2+i a3 = a3+C(i) a4 = a4+i*i end if((n*a4 - a2*a2) ~= 0) then -- if oldindex ~= Size() then a = (n*a1 - a2*a3)/(n*a4 - a2*a2) b = (a3 - a*a2)/n vminus = 0 vplus = 0 vminus_n = 0 vplus_n = 0 for i = vFrom, index do y = a*i + b if i>0 then if C(i) < y and i <= vTo then if ex == 0 then vminus = vminus + y - C(i) vminus_n = vminus_n + 1 else if i == vFrom then vminus = 0 end if y-C(i) > vminus then vminus = y-C(i) end end end end if i>0 then if C(i) > y and i <= vTo then if ex == 0 then vplus = vplus + C(i) - y vplus_n = vplus_n + 1 else if i == vFrom then vplus = 0 end if C(i)-y > vplus then vplus = C(i)-y end end end end m = 0 if C(vTo) > C(vFrom) and y < C(vTo)+0.1*(C(vTo)-C(vFrom)) and y > C(vFrom)-0.1*(C(vTo)-C(vFrom)) then m = 1 end if C(vTo) < C(vFrom) and y < C(vFrom)+0.1*(C(vFrom)-C(vTo)) and y > C(vTo)-0.1*(C(vFrom)-C(vTo)) then m = 1 end if m == 1 then --SetValue(i, 2, y) end end --end if ex == 0 then if vminus_n ~= 0 then vminus = kk*vminus/vminus_n end if vplus_n ~= 0 then vplus = kk*vplus/vplus_n end end end if num == 1 then a_01 = a b_01 = b vminus_01 = vminus vplus_01 = vplus vFrom_01 = vFrom vTo_01 = vTo end if num == 2 then a_02 = a b_02 = b vminus_02 = vminus vplus_02 = vplus vFrom_02 = vFrom vTo_02 = vTo end return 1 end return 0 end function levels(x, y, num, index) if y ~= nil and x ~= 1 then for i = 1, index do if i > x then SetValue(i, num, y) else SetValue(i, num, nil) end end end end function OnCalculate(index) de = Settings.Procent kk = Settings.k ex = Settings.Ext sh = Settings.shif v1=nil v2=nil v3=nil v4=nil v5=nil v6=nil v7=nil v8=nil v9=nil v10=nil if index > Size()-sh then --return nil, nil, nil, nil, nil, nil, nil return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 end vl = C(index) if vl~=nil then if index == 1 then y1 = vl y2 = vl else if C(index) > y1*(1+de/100) and y1 < y2 then x3 = x2 x2 = x1 y3 = y2 y2 = y1 x1 = index y1 = C(index) ret = recalcline(1, index, 0) ret = recalcline(2, index, 0) levels(x1, y1, 8, index) levels(x2, y2, 9, index) levels(x3, y3, 10, index) end if C(index) > y1 and C(index) > y2 then x1 = index y1 = C(index) end if C(index) < y1*(1-de/100) and y1 > y2 then x3 = x2 x2 = x1 y3 = y2 y2 = y1 x1 = index y1 = C(index) ret = recalcline(1, index, 0) ret = recalcline(2, index, 0) levels(x1, y1, 8, index) levels(x2, y2, 9, index) levels(x3, y3, 10, index) end if C(index) < y1 and C(index) < y2 then x1 = index y1 = C(index) end end end --[[ if x1 ~= index then curfrom = x1 curto = index else curfrom = x2 curto = x1 end if curto ~= curfrom and curfrom ~= nil and curto ~= nil then if C(curto) ~= nil and C(curfrom) ~= nil then k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, index do curv = i*k + C(curto) - curto*k SetValue(i, 1, curv) end end end --]] if index == Size()-sh and ret == 0 then lpr = C(Size()-sh) ret = recalcline(1, index, 1) ret = recalcline(2, index, 1) if y1 ~= nil then if y1 > lpr*0.9 and y1 < lpr*1.1 then levels(x1, y1, 8, index) end end if y2 ~= nil then if y2 > lpr*0.9 and y2 < lpr*1.1 then levels(x2, y2, 9, index) end end if y3 ~= nil then if y3 > lpr*0.9 and y3 < lpr*1.1 then levels(x3, y3, 10, index) end end end if index == Size()-sh then --- and index ~= last_ind if vTo_01 - vFrom_01 > 500 then vFrom_01 = vTo_01-500 end for i = 1, index do SetValue(i, 3, nil) SetValue(i, 4, nil) SetValue(i, 6, nil) SetValue(i, 7, nil) -- SetValue(i, 8, nil) -- SetValue(i, 9, nil) -- SetValue(i, 10, nil) end for i = vFrom_01, index do y = a_01*i + b_01 + vplus_01 m = 0 if C(vTo_01) > C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then m = 1 end if C(vTo_01) < C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then m = 1 end if m == 1 then SetValue(i, 3, y) if i == index then v3 = y end end y = a_01*i + b_01 - vminus_01 m = 0 if C(vTo_01) > C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then m = 1 end if C(vTo_01) < C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then m = 1 end if m == 1 then SetValue(i, 4, y) if i == index then v4 = y end end end if vTo_02 - vFrom_02 > 500 then vFrom_02 = vTo_02-500 end for i = vFrom_02, index do y = a_02*i + b_02 + vplus_02 m = 0 if C(vTo_02) > C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then m = 1 end if C(vTo_02) < C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then m = 1 end if m == 1 then SetValue(i, 6, y) if i == index then v6 = y end end y = a_02*i + b_02 - vminus_02 m = 0 if C(vTo_02) > C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then m = 1 end if C(vTo_02) < C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then m = 1 end if m == 1 then SetValue(i, 7, y) if i == index then v7 = y end end end last_ind = index end return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 end
Книга неудобная, практически квадратного формата, чем и раздражала меня во время чтения. Хотя чуть позже приспособился.
Хочется обратить внимание, что в книге присутствует необозначенная “игра” автора с нами. В ней он играет с нашим доверием, практически хвастаясь одним экспериментом, где почти половина участников шла на сотрудничество. Но не заостряет внимание, что это значило о наличии большей половине тех, кто был эгоистом. В общем, чуточку аккуратней.
Игры — это последовательные решения, которые должны повысить наш шанс на победу. Я не просто подчеркнул некоторые слова. Дело в том, что каждая игра — это как игра в шахматы, где твой каждый шаг не делает тебя победителем, а лишь увеличивает шанс на победу. Большинство делают первый ход пешкой е2-е4, потому как он самый сильный в начале игры.
Вам может показаться, что мы не играем в эти игры в повседневной жизни, но это не так. Большинство из нас каждый день строят конструкции действий, но не всегда это делается правильно. От нас ускользают нюансы, на которые следует обратить внимание. Поэтому в книге советуют смотреть вперёд и рассуждать в обратном порядке.
Пока я жил в России, комбинация InteractiveBrokers + несколько российских брокеров со статусом квал. инвестора меня полностью устраивала. Но недавно я начал планировать эмиграцию из РФ, и российские брокеры перестали быть приемлемым вариантом из-за удержания ими нерезидентского налога 30%.
Пользоваться одним только IB я не хочу – некомфортно себя чувствую, концентрируя большие суммы в одном месте. Особенно с учётом возможных метаний IB по поводу клиентов с российским паспортом. Поэтому задача – подобрать пул из нескольких нестрёмных брокеров, по которым можно размазать свой капитал. Задача оказалась несколько сложнее, чем я ожидал, поэтому хотел бы прибегнуть к коллективному разуму.
Поиск своего стиля
В предыдущей части, где я показывал вам настройки громкости, я не придерживался какого-либо конкретного таймфрейма. Причина в том, что эти настройки могут быть применены к любому таймфрейму, потому что профиль объема действительно универсален и не зависит от времени.
Вы можете использовать его для внутридневной торговли, свинговой торговли или для планирования своих долгосрочных инвестиций. Важно найти то, что подходит вам лучше всего, а затем овладеть методом. Если вы все еще находите свой стиль, то я предлагаю вам попробовать все это и посмотреть, что вам больше всего подходит.
Внутридневная торговля
Я предлагаю вам провести свой внутридневной анализ на графиках от 5 минут до 1 часа (я предпочитаю 30-минутные графики). Посмотрите на настройки объема, которые я вам показал, и определите самые сильные зоны поддержки/сопротивления на основе объема.
Торговые инструменты для внутридневных сделок
Торговые установки профиля объема
Теперь я покажу вам торговые установки, которые я использую в своей повседневной торговле. Это основные, основные установки, которые я использую. Я никогда не вступаю в сделку, если нет ни одной из этих установок.
Все установки можно использовать с любым таймфреймом. Я предпочитаю 30-минутные графики для внутридневной торговли, 240-минутные или дневные графики для свинговой торговли и дневные и месячные графики для планирования долгосрочных инвестиций.
Установка профиля объема №1: Установка накопления объема
Как я уже говорил ранее в этой книге, крупные институты, которые перемещают рынок и манипулируют им, создают свои огромные торговые позиции в боковых каналах ценового действия (областях вращения).
После того, как они накопят достаточно объемов, то есть после того, как они полностью войдут в свои позиции, они начнут сильную и агрессивную активность по покупке или продаже, чтобы сдвинуть цену. Они стремятся сдвинуть цену в направлении своих вновь накопленных позиций. Исходя из этого, мы знаем, что, если существовал боковой ценовой канал, за которым следовал значительный восходящий тренд, сильные покупатели накапливали свои покупательские позиции в ценовом канале. Если, с другой стороны, был боковой канал, за которым последовала сильная распродажа, то мы знаем, что сильные продавцы были ввод своих позиций на продажу в канале.
Volume Profile
Почему объемы так важны?
На мой взгляд, объемы — это самая важная информация, которую может дать нам рынок. Почему это так важно? Это связано с тем, что около 80% всех сделок и объемов совершаются только 10 крупнейшими финансовыми институтами (большими парнями). Они движутся и манипулируют рынками. У них есть лучшие торговые эксперты, технологии, алгоритмы, а также огромные суммы денег. Однако иметь так много денег-тоже проблема. Им трудно перемещать такие суммы, инвестировать их, а также скрывать свои торговые намерения. Крупные учреждения не могут просто купить 100 000 лотов EUR/USD в один клик. Они должны входить на свои позиции медленно, незаметно. И все же они никогда не смогут спрятаться. Их объемы всегда будут видны, и мы всегда сможем их отслеживать. Как? С помощью Профиля Объема.
В отличие от стандартных индикаторов объема, которые показывают объемы только во время, Профиль объема может предоставить гораздо более важную информацию, а именно объем по определенной цене.
Торговые Стратегии Ценового Действия
Давайте теперь немного отойдем от теории и рассмотрим некоторые торговые стратегии, основанные на ценовом действии. Я использую все эти стратегии в качестве подтверждения своих основных стратегий. Мои основные стратегии основаны на профиле объема и институциональной торговой логике, о которых я упоминал ранее. Мы перейдем к этим стратегиям позже в разделе «Профиль объема». Теперь я покажу вам стратегии, основанные исключительно на ценовом действии.
Чтобы мне было совершенно ясно – я использую эти стратегии ценового действия в качестве подтверждения для своих основных стратегий. Например, когда моя основная (основанная на объеме) стратегия показывает мне торговый уровень, и я не совсем уверен в этом, я пытаюсь найти какую-то другую стратегию ценовых действий, которая подтвердила бы мою первоначальную торговую идею. Чем больше подтверждений я найду, тем лучше.
Тем не менее, если вам действительно нравится любая из этих стратегий ценового действия, вы можете торговать ими как самостоятельными стратегиями. Давайте теперь посмотрим на них один за другим: