Избранное трейдера П М
Все таки локальный случай с экспирацией подсвечивает более явные системные сбои во всей российской биржевой инфраструктуре. Пару дней назад Московская биржа проводила вебинар на день акционера, и он показателен тем, насколько далеко Мосбиржа зашла в своей некомпетентности и как глубоко запуталась в показаниях. Все это похоже либо на запредельный уровень троллинга (причем довольно таки циничного), либо на парадоксальную невменяемость.
В последние дни только ленивый не говорил (и не писал) про отрицательную стоимость WTI. Добавлю и я свои 5 лонгридовских копеек (спасибо бессоннице и бокалу красного испанского вина… забегая вперед оговорюсь, что одним бокалом не обошлось. Пришлось добавлять аргентинского… так что прошу сразу меня извинить за вероятные ошибки, неточности и нестройность, а возможно и нелогичность мысли).
Сразу оговорюсь, что наблюдать за динамикой нефти (как brent, так и wti) находясь в позиции и без позиций для меня совершенно разные по эмоциональному окрасу вещи (определенно безопаснее находится в такие дни на заборе).
Я сам в основном пытался торговать нефть (оба сорта) от лонга (были конечно и входы в шорт, но не самые удачные; волатильность зашкаливала… стопы быстро срабатывали… одним словом очередная рыночная аномалия (если не сказать больше — вакханалия), приведшая к огромным прибылям и убыткам у биржевых акторов), в расчете на отскок на словесных интервенциях от ОПЕК+ (количество плюсов можно добавлять по желанию), Трампа и прочих участников нефтяного рынка. 20.04.2020 как и многие другие частные трейдеры (судя по данным Мосбиржи) ваш покорный слуга был в лонгах по wti, но во время (как потом выяснилось) закрыл убыточные позиции. Слава Всевышнему!

--[[
индикатор:
канал на последнем зигзаге
индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала
параметры:
Procent - величина зигзага в %
k - коэффизиент ширины канала
Ext - =0-канал стоится по средним =1-канал стоится по экстремуму
--]]
Settings=
{
Name = "Zigzag_channel_inc", -- название индикатора
Procent=5, -- величина зигзага в %
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(0,0, 0)
},
{
Name = "cur12",
Type =TYPE_LINE,
Width = 2,
Color = RGB(0,0, 0)
}
}
}
function Init()
y1 = nil
y2 = nil
y3 = nil
y4 = nil
x1 = 1
x2 = 1
x3 = 1
x4 = 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
v11=nil
v12=nil
v13=nil
return 13
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 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
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
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, rec)
if y ~= nil and x ~= 1 and (index ==Size() or rec==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 inclevels(x_1, y_1, x_2, y_2, y_3, index, num, rec)
if y_2 ~= nil and x_2 ~= 1 and (index ==Size() or rec==1) then
need = 1
for i = x_2+1, x_1-1 do
y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1)
if (y_1 < y_3 and C(i) < y ) or (y_1 > y_3 and C(i) > y ) then
need = 0
break
end
end
--need = 1
if need == 1 then
for i = x_2, index do
y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1)
if i >= x_2 then
if i > x_1 and (C(Size())*1.3 < y or C(Size())*0.7 > y) then
SetValue(i, num, nil)
else
SetValue(i, num, y)
end
else
SetValue(i, num, nil)
end
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
v11=nil
v12=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, v11 , v12, v13
end
vl = C(index)
if index == 1 then
y1 = vl
y2 = vl
else
if C(index) > y1*(1+de/100) and y1 < y2 then
x4 = x3
x3 = x2
x2 = x1
y4 = y3
y3 = y2
y2 = y1
x1 = index
y1 = C(index)
ret = recalcline(1, index, 0)
ret = recalcline(2, index, 0)
levels(x1, y1, 8, index, 0)
levels(x2, y2, 9, index, 0)
levels(x3, y3, 10, index, 0)
levels(x4, y4, 11, index, 0)
inclevels(x1, y1, x3, y3, y2, index, 12, 0)
inclevels(x2, y2, x4, y4, y3, index, 13, 0)
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
x4 = x3
x3 = x2
x2 = x1
y4 = y3
y3 = y2
y2 = y1
x1 = index
y1 = C(index)
ret = recalcline(1, index, 0)
ret = recalcline(2, index, 0)
levels(x1, y1, 8, index, 0)
levels(x2, y2, 9, index, 0)
levels(x3, y3, 10, index, 0)
levels(x4, y4, 11, index, 0)
inclevels(x1, y1, x3, y3, y2, index, 12, 0)
inclevels(x2, y2, x4, y4, y3, index, 13, 0)
end
if C(index) < y1 and C(index) < y2 then
x1 = index
y1 = C(index)
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
ret = recalcline(1, index, 1)
ret = recalcline(2, index, 1)
levels(x1, y1, 8, index, 1)
levels(x2, y2, 9, index, 1)
levels(x3, y3, 10, index, 1)
levels(x4, y4, 11, index, 1)
inclevels(x1, y1, x3, y3, y2, index, 12, 1)
inclevels(x2, y2, x4, y4, y3, index, 13, 1)
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 = 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, v11 , v12, v13
end
Я своими глазами наблюдал уже два кризиса. 2008 и 2014-ый.
В 2008 году я оказался просто не готов к обвалу. Только начал осваивать инвестирование. Сбережения были ничтожно малы. Помню как сидел с друзьями в кафе и говорил им, что новые кризисы буду обязательно встречать с горой кеша. Следующая “остановка” через 10 лет.



Дюрация — весьма специфичное понятие для ценной бумаги. Если цена, доходность и длительность инструмента – это типичные прямо выводимые величины, то производная величина дюрация – может вызывать трудности для понимания.ОПРЕДЕЛЕНИЕ И ЕГО СМЫСЛ
Разные источники предлагают различные толкования дюрации. Остановимся на более общем определении. Оно звучит следующим образом.
Дюрация (Макколея)– это оценка средней срочности потока с учетом дисконтирования стоимости отдельных выплат.
Если объяснять по-простому, то дюрация – это сколько времени понадобится для того, чтобы (равными платежами) вернуть сумму номинала облигации.
На странице ЛЧИ-2019 перестали показываться графики доходности участников. Пробовал двумя браузерами — мимо. Это довольно досадно и говорит в том числе об общем отношении Биржи к данному мероприятию. Если у кого начнет показываться, маякните пожалуйста. Хотел пару скриншотов сделать.
Но чудеса состоят не в этом. А в том, что на ЛЧИ зарегистрирован участник-опционщик с ником "ch5oh". Ссылка на его статистику:
https://investor.moex.com/trader2019?user=211910
Излишне говорить, что к этому уважаемому джентльмену не имею никакого отношения.
Во-первых, принципиально не участвую в ЛЧИ уже лет 10 и категорически не планирую делать этого в будущем.
Во-вторых, мой брокер ItInvest (ныне ItiCapital), а не "Уралсиб".
В-третьих, участник строит календарные позиции с участием аж мартовских опционов на SiH0 (правильней было бы писать SiH20, как на нормальных биржах). А всем известно, что в данный момент
Объяснительная записка — 2.2
Недавно познакомился с интересным трейдером. У нас совершенно разное образование и работали мы в совершенно разных прикладных областях, но, мы проработали одни и те же энциклопедии технических индикаторов и, похоже, у нас был близкий менталитет, потому, что мы разными путями пришли к общей идее.
Мы не раскрывали друг другу свои решения, но я посмотрел несколько его постов и (надеюсь) смог провести правильную реконструкцию (читай reverse engineering) этого решения. А еще отрадно, что не только я смог это сделать, меня опередили в тех постах.
К этой общей идее я пришел даже несколькими разными путями. Более того, я проверил ее в приложении к музыке, взял ноты одного шлягера, оцифровал частоты и длительности — получил временной ряд, к нему и применил ту идею — получилось очень неплохо.
Простые выводы:
— одни и те же закономерности могут действовать в разных прикладных областях, включая рынок;
— есть смысл поохотиться за «чистыми» идеями, поискать их в рынке и вне рынка;
— reverse engineering работает, иногда даже небольшого намека достаточно для раскрутки.
-----------------
Еще пример на тему единства законов природы и междисциплинарности рынка.
Цитата из Гигеренцера.