Избранное трейдера _sg_
Комиссии за исполнение контрактов на срочном рынке не менялись уже очень долго, оставаясь последним оплотом разума среди тарифов Московской биржи.
Там было все просто — фиксированная комиссия за фьюч. контракт: брент — 1р, ртс — 2р. Хотя и там были странности, например золото 1р, а серебро 2р при стоимости контракта золота в 8 раз больше, чем серебра. Объясняется это тем, что раньше (может, кто-то помнит) у серебра стоимость контракта была выше в 10 раз, потом контракт уменьшили, ну а про комиссию за исполнение забыли, случайно или умышленно. Что уже говорит о качестве управления и продумывания тарифов...
Так вот, в рассылке для разработчиков в описании нового релиза на срочке есть пункт 2. Унификация клирингового сбора за исполнение контракта
fs.moex.com/f/15565/spectra-v6.pdf
Цитата: В целях унификации клирингового сбора за исполнение фьючерсных и опционных контрактов с другими видами сборов на Срочном рынке, в ТС Спектра версии 6.15 реализована замена фиксированной ставки сбора за исполнение на ее процентное
Друзья из Алора попросили поискать им работников. Но только ответственных и мотивированных! Ленивые разгильдяи то им зачем? Вот я и решил – напишу сразу на СмартЛаб! Ведь всем известно, что здесь самые лучшие программисты Руси! )))))
Короче! Умеешь вызвать портфель в QLUA или объявить индикатор в OsEngine?! При этом понимаешь как делают вёб-проекты? Быстрее пиши на почту снизу!
Официальный синопсис такой
Мы начинаем разработку нового проекта: web-терминал с мобильной версией.
Первый этап (MVP) — делаем минимально жизнеспособный продукт, оцениваем обратную связь от вас и принимаем решение в какую сторону развивать продукт.
Поддерживаемые инструменты — акции и облигации.
Поддерживаемые биржи — MOEX и SPBX.
Open Source. Мы собираемся создать открытую платформу с системой виджетов и расширениями, которую можно дополнять. Мы верим, что открытый код позволит проекту развиваться, а нашим клиентам предоставит гораздо больше гибкости.
Вас заинтересовал проект и есть желание поучаствовать?
Пока рынки смотрят на Луну, мы отправляем цены на дно — TradingView делает космические скидки на платные подписки до -60%. С 22 по 27 ноября вы сможете приобрести любую подписку по самой низкой цене в году. Не упустите уникальную возможность стать частью сообщества из 30 миллионов трейдеров и открыть доступ ко всем функциям платформы для более точного анализа ситуации на рынке и улучшения результатов торговли.
Какие преимущества у Premium подписки?
Самая высокая точность данных и доступ ко всем рынкам.
25 индикаторов на одном графике.
8 графиков в одной вкладке.
400 бессрочных оповещений в облаке.
Секундные интервалы.
В 4 раза больше данных на графиках (до 20 тыс. баров).
Возможность публикации скриптов с ограниченным доступом.
Я и алго торгую и руками. Сейчас про руками.
На фоне распродажи решил глянуть поплотнее на TradingView — после квика это какие-то небо и земля по юзабельности. ТВ — это прям для людей, все интуитивно, вспоминаю как первый раз пришел в Квик (уже с опытом торговли) — без часов копания не осилишь, а тут: тык тык, а вот это где? — наверно здесь где-то, о, реально здесь, а это как настроить? — Как-то так, видимо, ух ты — реально так. И всякие фишечки удобные и т.д. В плане графиков скринеров выглядит как сказка. Из торговли увидел только Алор. Хорошо конечно, но хотелось бы через квик, все таки не все брокеры это Алор)), но все брокеры это Квик.
Работать с данными по-красоте, потом возвращаться в Квик и тык мык тормозык — как-то не выглядит очень привлекательным. Кто-то пробовал-знает какие-то варианты автоматизации. Ну т.е. где-то что-то ловит инфу и дальше с Квиком разбирается. Тут хотя бы просто заявки отсылать. Без обратной связи и т.д. Вот вижу у ТВ есть вебхуки, но они из алертов. Язык программирования в ТВ есть — может через него как-то можно инфу выводить наружу? В общем идея такая что не нарушая юзабельности ТВ отправлять заявки в квик. Не нарушая юзабельности значит вариант: открыть какой-то скрипт, руками вбить тикер, рынок, цену, объем не подходит, а вариант на графике выбрать уровень нажать правой кнопкой (цена и тикер автоматом подтянулись) — подходит.

--[[
индикатор торговой системы 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Не так давно, 21 июня 2021 мы запустили публичный инвестиционный эксперимент. Мы отдаем предпочтение применению торговой стратегии, известной как Железный Кондор, на флетовом и стратегии Вертикальный Спрэд на трендовом рынке. Эти стратегии входят в 10 классических инвестиционных опционных стратегий. Ноу-хау нашей команды заключается в аналитических методах по выбору инвестиционных инструментов. До старта инвестиционного эксперимента мы стабильно делали 8-10% ежемесячно.
Однако, мы решили не останавливаться на достигнутом и нашими аналитиками было предложено определенное усовершенствование торговой стратегии, суть которого заключается в следующем: выход из инвестиционной позиции в точке достижения половины потенциальной прибыли позволяет с одной стороны ускорить оборот инвестиционного капитала, а с другой стороны снижает вероятность выхода цены за пределы выбранного диапазона. И эта вероятность, как правило, резко возрастает при пересечении этой медианной точки.




