Избранное трейдера Георгий Харитонов
(Загружаются из QUIK, выбираем меню «Система» — «Загрузить настройки из файла» где и выбираем файл «140519ФондовыйАлор.wnd»)
drive.google.com/file/d/1knSJvbaKrdqUysC_XRqmrfXlwjL-eJ5B/view?usp=sharing — ссылка на файл настроек
В этом посте я выкладываю свои настройки торгового терминала QUIK для …условно назовем «фондовой торговли» (акции, облигации, опционы, фьючи – не внутридневка). Эти настройки могут на первый взгляд показаться слегка сложноватыми, но к ним крайне быстро привыкаешь, так как они позволяют снизить «хаотичную активность» и отслеживать рынок комплексно, а рынок – это единая структура.
Это уже профессиональные настройки и рассчитаны они на два монитора (можно ноутбук+монитор – легко соединяются через шнур). В настройках рабочее пространство разбито на ряд вкладок логика которых следующая: «Карта» — это основная просмотровая зона – ваша капитанская рубка – на этой вкладке размещены новости, лидеры роста и снижения по акциям, облигациям и фьючам (для арбитража), отраслевые индексы, а так же выведены основные индикативы нашего рынка (РТС, доллар, евро, фьюч на золото и на нефть). Везде прочерчены тренды и ценовые уровни – т.е. через время их нужно будет корректировать.
4 мая состоится обновление решения Ethereum Name Service (ENS) и запуск нового реестра доменных имен. Все существующие домены будут конвертированы в невзаимозаменяемые токены (NFT-токены), которые можно будет хранить и переводить другим пользователям.
ENS Is Upgrading on May 4th — Here’s What You Need to Do —> https://t.co/G6AFYzeIXK #ENS #ethereum
— Ethereum Name Service (@ensdomains) April 16, 2019
Апгрейд коснется 300 тысяч доменов .eth, а также .xyz и .luxe. Миграция доменных имен будет проходить вплоть до 4 мая 2020 года.
ENS позволяет привязывать адреса в сети Ethereum к вышеуказанным доменам для того, чтобы они были более «читабельными». Решение призвано сделать доступ к блокчейн-активам, децентрализованным приложениям и смарт-контрактам удобным с точки зрения пользовательского опыта.
Ранее регистрация доменов происходила посредством слепых аукционов, однако в новом реестре, утверждают разработчики, процесс значительно ускорится. Пользователям необходимо будет совершить две транзакции: первой выразить намерение зарегистрировать имя и второй непосредственно осуществить это.
Алгоритм данной торговли был описан уважаемым Гном (https://smart-lab.ru/blog/499606.php) и, поскольку я являюсь любителем различных теорий Мартингейла и усреднения, написал робота по этой стратегии.
Подробно на алгоритме останавливаться не буду — читайте по ссылке у Гнома, там очень хорошо всё расписано.
Здесь — немного измененная реализация. Отличие в том, что позиции открываются не через равные промежутки цены, а чуть шире: еще должно прийти хотя бы минимальное подтверждение, что дальше не полетит (в данном случае использован вход обратно в канал Боллинджера, но это несложно поменять на что угодно).
Если полетит против нас вертикально, мы хотя бы не будет бессмысленно открывать кучу сделок на мгновенной длинной вертикальной палке.
Итак, представляю: «Судак-Тудак» Универсальный (одновременно для акций и фьючерсов).
Если хотите добавить инструменты (а они добавляются в массив aTickerList), не забудьте вписать их данные в массивы:
Поскольку рынок опционов на 100% прозрачно то там относительно легко выявит и отследит крупные сделки.
Крупные сделки обычно совершают инсайдеры, крупные игроки, те которые случайно нажали не ту кнопочку и по другими причинам.
Хотя все они могут ошыбатся, но мы исходим из предположения что большинство из них владеет корректной информацией пока недоступной или пока не заметной открытой публике.
И так наша цель следовать за крупным игроком.
Нам интересны только такие варианты крупных сделок.
1. Покупка акции и покупка Put опционов в качестве страховки (здесь Put опцион это стоп лосс).
2. Покупка Call-ов
3. Продажа акций и покупка Call опционов (здесь Call опцион это стоп лосс)
4. Покупка Put опционов
Отследит крупные опционные сделки можно много где, я пользуюсь бесплатной версией этого сервиса https://marketchameleon.com, там надо зарегистрироваться. Каждый день, за пол часа до закрытия рынка я открою https://marketchameleon.com/Reports/UnusualOptionVolumeReport
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 “не”).