Избранное трейдера Denis Lisin
Вчера прямо после выхода статистики зашортил нефть… Словил короткий стоп и наблюдая как она улетает на север, очень задумался.
Как после почти 10 лет торговли я могу делать такую глупость?!
И тут же вчерашнее обсуждение на Смартлабе Василия Олейника. Упорно борется с долгосрочным сильным трендом в нефти. Всем весело, но
от такой торговли же рехнутся можно! Не может быть чтобы она сам верил что так делать правильно. Не идиот же! Тогда в чём дело? Это
болезнь! Настоящая лудомания! Дай бог у него хватит здоровья, нервов и денег на такую борьбу, но хорошо это кончиться никак не
может.
Все знают что тренд — фрэнд! А вы ему? Кто умеет высиживать тренды?
Все боятся тренда. Даже Ливермор. Известная история с пшеницей. Забрал прибыль потому что было уже много в долларах и страх потери
заставил выскочить из сильного движения.
Плавный тренд кажется слабым и сидеть в нём долго и трудно… Вот-вот же сломается.
Сильный тренд с ускорением — развернётся же резко… Надо успеть соскочить… И перевернуться поскорее. Какая возможность
заработать! Ведь теперь он так же может ломануться обратно… ну хотя бы отскок! Короче шортим все дружно Сбер, хотя бы до 220.)))
Совсем недавно я написал рецензию на книгу Стива Акелиса “Технический анализ от А до Я”. Вот эта рецензия:
Лучшая книга по техническому анализу
Книга Стива Акелиса хороша, но я бы, скорее всего, не стал о ней писать и не назвал бы ее лучшей, если бы не одна история, которая приключилась со мной в далеком 2015 году. Итак, шел 2015 год, рынок то рос, то падал, и я все больше стал смотреть в сторону относительно коротких инвестиций и даже спекуляций, ибо сильные колебания курса рубля и неустойчивая доходность лишали долгосрочные инвестиции большей части былой привлекательности.
Будучи программистом, я все больше и больше начинал смотреть в сторону технического анализа и различных паттернов. Правда, технический анализ не спешил дарить мне рабочие торговые системы. Что я только не тестировал и какие только параметры не перебирал! Казалось бы, вот она идея, но стоило ее протестировать на истории и меня в очередной раз ожидало сильное разочарование. В некотором роде мне повезло, я знал хотя бы где и куда копать. Еще в самом начале своего торгового пути я понял, что лучшие бумаги, как правило, остаются лучшими, а аутсайдеры, так и остаются аутсайдерами. Т.е. я не тратил время, нервы и деньги на ловлю падающих ножей и на усреднение убыточных позиций. Но как выжать максимум из тех бумаг, что растут и растут хорошо? Как из нескольких десятков лидеров определить ту одну-две бумаги, которые дадут максимальную прибыль?
Автор — известный в трейдерской среде mehanizator. Создатель сайта для алгоритмических трейдеров long-short.pro
Книга является квинтэссенцией многолетнего опыта автора в области исследований свойств рынка и разработки механических торговых систем.
Являясь практическим руководством к действию, книга глава за главой проводит читателя в мир систематизированной торговли, правил, алгоритма принятия решений и проверки тех или иных гипотез.
Состоит из 4 последовательно связанных глав. Внимание следует уделить всем главам, даже несмотря на то, что кажется что в начале книги автор льет воду. На самом деле воды в книги нет, описательные разделы поведения рыночных участников и свойств рынка необходимы в начале книги, чтобы в последующем читатель смог формировать рабочие гипотезы и, проверив их затем на тестах, выйти на устойчивую алгоримическую (системную) торговлю.
Рекомендую к прочтению всем, кто хочет отойти от импровизации и перейти на системный трейдинг — позволит сэкономить кучу времени и избежать иллюзий простоты этого вида деятельности.
Settings= { Name = "Zigzag5", -- название индикатора delta=2, -- параметр индикатора deltaY=1, -- параметр индикатора linedeltaY=0.75, -- параметр индикатора line= { { Name = "zigzagline3", Type =TYPE_LINE, Width = 2, Color = RGB(0,255, 0) }, { Name = "upline", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "lowline", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 255) }, { Name = "declineline", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "upline2", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) }, { Name = "lowline2", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 255) }, { Name = "declineline2", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) } } } function getradius(x, y) return math.sqrt(Settings.deltaY*y*y+x*x) end function koef(val) return 1 - 1/(1-1/val) end function Init() vMin = 0 vMax = 0 vMinindex = 0 vMaxindex = 0 voldMinindex = 0 voldMaxindex = 0 upval = 0 lowval = 0 upindex = 1 lowindex = 1 veu = nil vel = nil curfrom = 1 curto = 1 return 7 end function OnCalculate(index) local printz = 0 vsize = Size() ve = nil veu = nil vel = nil curv = nil veu2 = nil vel2 = nil curv2 = nil if index == 1 then vMin = C(index) vMax = C(index) vMinindex = index vMaxindex = index voldMinindex = index voldMaxindex = index ve = C(index) else if voldMaxindex >= voldMinindex then if C(index) > (1 + Settings.delta/100)*vMin then vMin = C(index) vMax = C(index) vMaxindex = index voldMinindex = vMinindex vFrom = voldMaxindex vTo = vMinindex printz = 1 if (C(vMinindex) > C(vsize)) and (upval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then upval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize))) upindex = vMinindex end if (C(vMinindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then lowval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize))) lowindex = vMinindex end curfrom = voldMaxindex curto = voldMinindex else if vMin > C(index) then vMin = C(index) vMinindex = index vFrom = voldMaxindex vTo = index printz = 0 curto = index else vFrom = vMinindex vTo = index printz = 0 end curfrom = voldMaxindex end else if voldMaxindex <= voldMinindex then if C(index) < (1 - Settings.delta/100)*vMax then vMax = C(index) vMin = C(index) vMinindex = index voldMaxindex = vMaxindex vFrom = voldMinindex vTo = vMaxindex printz = 1 if (C(vMaxindex) > C(vsize)) and (upval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then upval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize))) upindex = vMaxindex end if (C(vMaxindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then lowval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize))) lowindex = vMaxindex end curfrom = voldMinindex curto = voldMaxindex else if vMax < C(index) then vMax = C(index) vMaxindex = index vFrom = voldMinindex vTo = index printz = 0 curto = index else vFrom = vMaxindex vTo = index printz = 0 end curfrom = voldMinindex end end end if (printz == 1) or (Size() == index) then for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom) v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) ve = v end if (Size() == index) then ve = C(index) if voldMaxindex >= voldMinindex then vFrom = voldMaxindex vTo = vMinindex end if voldMaxindex <= voldMinindex then vFrom = voldMinindex vTo = vMaxindex end for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom) v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) end -- up level line if upindex ~= nil then if C(upindex) > C(index) then for i = upindex, index do SetValue(i, 2, C(upindex)) SetValue(i, 5, C(upindex)-Settings.linedeltaY*C(vsize)/100) end veu = C(upindex) end end -- low level line if lowindex ~= nil then if C(lowindex) < C(index) then for i = lowindex, index do SetValue(i, 3, C(lowindex)) SetValue(i, 6, C(lowindex)+Settings.linedeltaY*C(vsize)/100) end vel = C(lowindex) end end if voldMaxindex >= voldMinindex then vsign = -1 if curfrom == voldMinindex then vsign = -1 end if curfrom == voldMaxindex then vsign = 1 end -- inclined line if curto- curfrom > 0 then maxcurv = 0 k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, curto do curv = i*k + C(curto) - curto*k if vsign == -1 then if L(i) < curv then if maxcurv < curv - L(i) then maxcurv = curv - L(i) end end else if H(i) > curv then if maxcurv < H(i) - curv then maxcurv = H(i) - curv end end end end for i = curfrom, index do curv = i*k + C(curto) - curto*k + vsign*maxcurv SetValue(i, 4,curv) curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100 SetValue(i, 7,curv2) end end curv = nil end if voldMaxindex <= voldMinindex then vsign = -1 if curfrom == voldMaxindex then vsign = 1 end if curfrom == voldMinindex then vsign = -1 end -- inclined line if curto- curfrom > 0 then maxcurv = 0 k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, curto do curv = i*k + C(curto) - curto*k if vsign == -1 then if L(i) < curv then if maxcurv < curv - L(i) then maxcurv = curv - L(i) end end else if H(i) > curv then if maxcurv < H(i) - curv then maxcurv = H(i) - curv end end end end for i = curfrom, index do k = (C(curto)- C(curfrom))/(curto- curfrom) curv = i*k + C(curto) - curto*k + vsign*maxcurv SetValue(i, 4,curv) curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100 SetValue(i, 7,curv2) end end curv = nil end end end end return ve, veu, vel, curv, veu2, vel2, curv2 end
В воскресенье 7 апреля я перебирал полки в шкафах, просматривая старые бумаги и выбрасывая те, которые уже не пригодятся. За долгое время накопилось много бесполезного хлама, который надо было выбросить. Какие-то старые чеки, квитанции, ненужные распечатки. Так я перебирал бумаги одну за другой, сортируя, что пойдет на выброс, а что еще может когда-то пригодиться, и вдруг на пол упала до боли знакомая старая затертая картонка. Боже мой! Как давно это было! Вроде бы не так уж давно, но на самом деле целую трейдерскую жизнь назад! Воспоминания нахлынули на меня…
Затертая замусоленная старая табличка, обычный кусок картонки и неаккуратно приклеенная скотчем распечатка. Но сколько денег она мне помогла заработать, а сколько денег благодаря ей я не потерял!
Табличка NineNot (9 “не”).
Был такой дядька. Киёси Ито. Работал в статистическом управлении и писал книжки. Интернета тогда не было, поэтому он, как и Тимофей Мартынов, делал книжки из бумаги и писал в них ручками. Писал он о теории вероятности и стохастике, то есть про кроликов, и внимание. За эти работы он получил степень доктора философии. То есть, тут не столько вопрос в математике, сколько в философии.
Дифур это такой способ записи философской мысли. Когда вы рисуете каналы по лоу на графике, вы даже не задумываетесь, что это касательная, а значит производная функции цены от времени. Для записи мысли или идеи мы воспользуемся дифурами, а потом переведем их. В общем, их особо ни кто не решает. Берут справочник производных и вуаля. dx/dt = α x => x(t) = x0 e^αt. Уравнение разряда конденсатора dx/dt. У каждого уважающего опционщика такой справочник есть. Это греки опционов. Там дифур и его значение в обычной формуле, куда можно уже цифры подставить. И все.
Из предыдущего материала мы помним. dx = µ x dt + σ x δW. Мгновенное изменение цены=среднему изменению+размеру изменения*случайное изменение. Давайте этим философским языком пообщаемся. И легче всего это понять методом Кирилла Ильинского.