Избранное трейдера Jeeves
На прошлой неделе Индекс МосБиржи преодолел сразу несколько сильных уровней сопротивления на фоне новостей о возможном скором старте переговоров. Однако на время заседания ЦБ ралли взяло паузу. И не зря — новый прогноз регулятора по средней ставке на 2025 г. заставил рынок понервничать. Высокая волатильность наверняка сохранится и на этой неделе, поэтому к сделкам стоит подходить с особой осторожностью.
Пополнить счет для отработки идей:
Пополнить счетВыделяем:
• Сургутнефтегаз-ап: рубль не может укрепляться вечно.
• Магнит: есть перспективы дальнейшего роста.
• РУСАЛ: поддержка краткосрочного тренда.
Сургутнефтегаз ап
Привилегированные акции Сургутнефтегаза сильно отстают от рынка: бумаги проигнорировали взрывной рост на позитивных геополитических новостях. Однако этому есть объяснение: резкое укрепление курса до 90 руб. за доллар США негативно сказалось на котировках компании, которая, как полагает рынок, до сих пор располагает огромным долларовым запасом. Ожидаем, что рубль скоро вновь начнет слабеть. Текущие уровни в акциях Сургутнефтегаз-ап привлекательны благодаря сильному уровню поддержки в районе 57 руб.
В пятницу/понедельник личка в телеграмм-е (да и чаты) наполнялась сообщениями «что с базаром?»/«а че продажи такие в РФ?». Вопрос, на который редко есть один правильный ответ, когда нет очевидного новостного фона. Мое мнение, сформировался ряд условий для локального отката, который мы сейчас наблюдаем.
По порядку:
Яндекс/Газпром, судя по опросам крупных телеграмм каналов, были (а может и есть) в топ-5 «самая большая позиция в вашем портфеле». В Яндексе брокера резали маржиналку и сток падал с 4500 на 4050 в моменте. По Газпрому (очевидная на мой взгляд) невыплата дивидендов также переставила сток на 20 рублей ниже. Могло ли это вызвать маржины или рост требований со стороны брокеров, я думаю что ответ очевидный. Судя по общению с разными инвесторам, плечи есть у большинства, так что позишнинг для такой коррекции тоже созрел.
Крутое пике в RGBI также не булиш для акций. Доходности за последний месяц в 10 летних ОФЗ (если не обманывает терминал) выросли на 125 пунктов.
Функция OnTrade
Сохранение параметров сделки в файл.
Работа с таблицей сделок.
Сохранение всех сделок дня.
Скрипт автосохранения всех заявок и сделок под завершение торгового дня.
Для отслеживания прошедших сделок мы можем задействовать функцию обратного вызова OnTrade. Она во многом похожа по логике на OnOrder, только возвращает коллбэки уже по исполненным сделкам. В случае, если заявка разбивается на несколько сделок, мы получим информацию по каждой.
В файле QLUA.chm в директории терминала находим через поиск описание самой функции:
Видно, что к концу 2022 года газовый экспорт составлял почти половину бизнеса Газпрома. Европейский рынок почему-то многие любят называть премиальным, а ведь премиальным он в своём штатном состоянии не был. Премию (по отношению к рынку Европы) за газ до середины 2021 года давал рынок Азии. Европейский газовый рынок начал становиться премиальным только с наступлением энергетического кризиса в Европе, во второй половине 2021 года — этот кризис стал следствием проводимой Европейским Союзом примерно с 2009 года энергетической политики.
Сейчас половина экспортного газового бизнеса Газпрома уполовинилась. По итогам 2023 года ожидаю, что доля выручки от экспорта газа составит ~21%. Очевидно, что наличие существенной доли выручки от других видов деятельности — это позитив, показывающий в выгодном свете менеджмент Газпрома. Их неудача в том, что сделали ставку на доминирование материализма в Европе, а оказалось, что там у власти поколение идеалистов. Наверное, это можно было предусмотреть, возможно даже предусматривали (заработал же МГП «Сила Сибири»), но то ли поздно спохватились, толи клиенты на другом конце шара к нужному году ещё не дозрели, получилось как получилось.
Settings=
{
Name = "AT-obl_can", -- название индикатора
delta=2.0, -- параметр индикатора
rep=5,
shif=0,
wt=1,
line=
{
{
Name = "ln1",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255, 0, 0)
},
{
Name = "ln2",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255, 0, 0)
}
}
}
function Init()
vMin = 0
vMax = 0
vMinindex = 0
vMaxindex = 0
voldMinindex = 0
voldMaxindex = 0
return 2
end
function OnCalculate(index)
rep = Settings.rep
shif = Settings.shif
wt = Settings.wt
sz = Size()-shif
if index <= sz then
if index <= 1 then
vMin = C(index)
vMax = C(index)
vMinindex = index
vMaxindex = index
voldMinindex = index
voldMaxindex = index
v = C(index)
else
if voldMaxindex >= voldMinindex then
--if vMin~=nil then
if C(index) > (1 + Settings.delta/100)*vMin then
vMin = C(index)
vMax = C(index)
vMaxindex = index
voldMinindex = vMinindex
vFrom = vMinindex
else
if vMin > C(index) then
vMin = C(index)
vMinindex = index
vFrom = voldMaxindex
else
vFrom = vMinindex
end
end
--end
else
if voldMaxindex <= voldMinindex then
--if vMax~=nil then
if C(index) < (1 - Settings.delta/100)*vMax then
vMax = C(index)
vMin = C(index)
vMinindex = index
voldMaxindex = vMaxindex
vFrom = vMaxindex
else
if vMax < C(index) then
vMax = C(index)
vMaxindex = index
vFrom = voldMinindex
else
vFrom = vMaxindex
end
end
--end
end
end
--if vFrom~=nil then
--[[
for i = vFrom, index do
k = (C(index)- C(vFrom))/(index- vFrom);
v = i*k + C(index) - index*k
SetValue(i, 1, v)
end --]]
--end
if index == sz then
for k = 1, 2 do
vf = 1
vs = 0
if k == 1 then
if vMinindex < vMaxindex then
vf = vMinindex
vs = vMaxindex
up = 0
elseif vMinindex > vMaxindex then
vs = vMinindex
vf = vMaxindex
up = 1
end
elseif k == 2 then
if voldMinindex < voldMaxindex then
vf = voldMinindex
vs = voldMaxindex
up = 0
elseif voldMinindex > voldMaxindex then
vs = voldMinindex
vf = voldMaxindex
up = 1
end
end
n = 0
xy = 0
x = 0
y = 0
xx = 0
m = 0
for i = vf, vs do
m = m +1
n = n + 1*(1+wt*m)
xy = xy + i*C(i)*(1+wt*m)
x = x + i*(1+wt*m)
y = y + C(i)*(1+wt*m)
xx = xx + i*i*(1+wt*m)
end
if (n*xx - x*x) ~= 0 and n ~= 0 then
a = (n*xy - x*y)/(n*xx - x*x)
b = (y - a*x)/n
for j = 1, rep do
n = 0
xy = 0
x = 0
y = 0
xx = 0
m = 0
for i = vf, vs do
v = a*i + b
clc = 0
if up == 1 and C(i) > v then
clc = 1
end
if up == 0 and C(i) < v then
clc = 1
end
if clc == 1 then
m = m + 1
n = n + 1*(1+wt*m)
xy = xy + i*C(i)*(1+wt*m)
x = x + i*(1+wt*m)
y = y + C(i)*(1+wt*m)
xx = xx + i*i*(1+wt*m)
end
end --[[--]]
if (n*xx - x*x) ~= 0 and n ~= 0 and n > 2 then
a = (n*xy - x*y)/(n*xx - x*x)
b = (y - a*x)/n --[[ --]]
end
end
for i = vf, sz do
v = a*i + b
if up == 1 and v >= C(vs) or up == 0 and v <= C(vs) then
SetValue(i, k, v)
end
end
end
end
end
end
end
end