Как тогда считать комиссию, например, по инструментам срочного рынка?
Пока думаю алгоритм такой:
1) Запрашиваем параметры инструмента: iss.moex.com/iss/securities/EuM6
2) Находим там к какой группе контрактов он относится (GROUPTYPE = Валюта)
3) По группе определяем базовую ставку: www.moex.com/s93#komiss1
4) И по формуле вычисляем комиссию.
Если используете QUIK, то вот скрипт, рассчитывающий комиссию:
function main()
local class = "SPBFUT"
local secList = getClassSecurities(class)
local function ErlstSec(ft)
if #ft > 3 and string.match(secList, ft) then
return ft
end
local e = "z"
for v in string.gmatch(secList, ft.."%u%d") do
local f = string.reverse(v)
e = (e<f) and e or f
end
return string.reverse(e)
end
local function Rnd(x,n)
return math.floor(x*10^n+0.5)/10^n
end
local function MsgWin(nm,cms)
if IsWindowClosed(t_id) == false then -- Открыто.
height = height + 15 -- +Высота строки. 15
end
if IsWindowClosed(t_id) == nil then -- Не существует.
t_id = AllocTable()
AddColumn(t_id, 1, "", true, QTABLE_STRING_TYPE, 14)
AddColumn(t_id, 2, "", true, QTABLE_DOUBLE_TYPE, 7)
CreateWindow(t_id)
height = 58 -- Высота окна с одной строкой. 58
end
SetWindowCaption(t_id, "Комиссия")
SetWindowPos(t_id, 400, 300, 146, height) -- X, Y, ширина, высота окна. 146
row = InsertRow(t_id, -1)
SetCell(t_id, row, 1, nm)
SetCell(t_id, row, 2, cms)
end
-- Базовая ставка комиссии групп. https://www.moex.com/s93
local bscRate = {
cur = 0.00462, -- Валютный
idx = 0.0066, -- Индексный
cmdt = 0.0132, -- Товарный
prc = 0.0165, -- Процентный
stk = 0.0198 -- Фондовый
}
-- Группа фьючерса.
local fts = {
GZ = "stk",
LK = "stk",
RN = "stk",
SR = "stk",
VB = "stk",
GK = "stk",
MM = "idx",
NA = "idx",
RM = "idx",
GD = "cmdt",
SF = "idx",
BR = "cmdt",
NG = "cmdt",
Si = "cur",
CR = "cur",
Eu = "cur",
ED = "cur",
IMOEXF = "idx",
CNYRUBF = "cur",
USDRUBF = "cur"
}
for f, b in pairs(fts) do
local sec = ErlstSec(f)
if sec ~= "z" then
--PrintVar(sec)
local futPrice = getParamEx(class, sec, "PREVSETTLEPRICE").param_value -- Расчетная цена предыдущего клиринга. https://www.moex.com/s93#tranz
local stpCost = getParamEx(class, sec, "STEPPRICE").param_value
local secInfo = getSecurityInfo(class, sec)
--TableLog(secInfo)
local priseStep = secInfo.min_price_step
local name = secInfo.name
local coms = string.format("%.2f", futPrice*stpCost*bscRate[b]/(priseStep*100))
--local coms = string.format("%.2f", Rnd(futPrice*Rnd(stpCost/priseStep,5),2)*bscRate[b]/100)
MsgWin(name,coms)
end
end
end
На иллюстрации: Индекс МосБиржи полной доходности, источник www.moex.com/ru/index/totalreturn/MCFTR/tech?secId=MCFTR
+3% по по Индексу МосБиржи обычно сопровождаются бОльшими...
«Селигдар» провел осенний Технический совет: завершен концептуальный инжиниринг проекта «Кючус».
В рамках Технического совета представители руководства Холдинга обсудили проведение работ по изысканиям, проектированию и развитию инфраструктуры будущего комплекса, основное...
🎥 О новых выпусках облигаций и не только — в интервью топ-менеджмента SOFL
Друзья, делимся сразу двумя интервью топ-менеджеров Софтлайн: 🎙 сходили на шоу «Акционеры. Бизнес» — обсудили развитие Софтлайн, успешную ИИ-оптимизацию внутренних процессов, планы на будущее...
Длинные ОФЗ: сколько можно заработать за 3 года, если взять текущие доходности около 17%?
Пока с начала текущего года заработать на длинных ОФЗ особо не получается (-0,56% с учетом НКД). Ожидания усиления инфляционных и прочих рисков поспособствовало приостановке цикла снижения...
Незамеченные +3%
На иллюстрации: Индекс МосБиржи полной доходности, источник www.moex.com/ru/index/totalreturn/MCFTR/tech?secId=MCFTR
+3% по по Индексу МосБиржи обычно сопровождаются бОльши...
Хотел бы спросить у вас такой вопрос. Повышенный дивиденд как раз совпадает с повышением ключевой ставки. Доходы банка росли как раз так в период высоких ставок в связи с тем, что львиная доля кредито...
Счетная палата (СП) считает необходимым в новом бюджетном цикле повысить налоговую нагрузку на золотодобывающие компании и перейти от разовых сборов к системному налогообложению горной ренты. Контроль...
Пару минут назад удалось перевести деньги с накопительного счёта Яндекса. Висит сообщение о том, что продолжают восстановление. И дают ставку 20% годовых по НС с 11 по 17 число решил не жадничать. Даж...
Егор Кожемякин, слушай если ты деньги получаешь от императора чтоб все плохое нивелировать и восхвалять минимальные успехи, тотя готов включиться в эту гонку, я тоже хочу денег
России эта мифическая «сделка» как щуке зонтик, как и США. После вытеснения нас американцами с рынка ЕС, экспорт дизеля был переориентирован и сохранял очень приличные обьемы.
Далее Россия в 2 этапа...
«Сибстекло» вошло в число победителей конкурса «Дело в людях» Проект «Внедрение устойчивых решений при производстве стеклянной упаковки для повышения бизнес-эффективности и снижения нагрузки на окружа...
Как тогда считать комиссию, например, по инструментам срочного рынка?
Пока думаю алгоритм такой:
1) Запрашиваем параметры инструмента: iss.moex.com/iss/securities/EuM6
2) Находим там к какой группе контрактов он относится (GROUPTYPE = Валюта)
3) По группе определяем базовую ставку: www.moex.com/s93#komiss1
4) И по формуле вычисляем комиссию.
iss.moex.com/iss/engines/futures/markets/forts/securities/GZH6.json?iss.json=extended
iss.moex.com/iss/engines/futures/markets/forts/securities.json?iss.json=extended
навскидку — поля BUYSELLFEE и EXERCISEFEE, но перепроверьте
Если используете QUIK, то вот скрипт, рассчитывающий комиссию:
function main() local class = "SPBFUT" local secList = getClassSecurities(class) local function ErlstSec(ft) if #ft > 3 and string.match(secList, ft) then return ft end local e = "z" for v in string.gmatch(secList, ft.."%u%d") do local f = string.reverse(v) e = (e<f) and e or f end return string.reverse(e) end local function Rnd(x,n) return math.floor(x*10^n+0.5)/10^n end local function MsgWin(nm,cms) if IsWindowClosed(t_id) == false then -- Открыто. height = height + 15 -- +Высота строки. 15 end if IsWindowClosed(t_id) == nil then -- Не существует. t_id = AllocTable() AddColumn(t_id, 1, "", true, QTABLE_STRING_TYPE, 14) AddColumn(t_id, 2, "", true, QTABLE_DOUBLE_TYPE, 7) CreateWindow(t_id) height = 58 -- Высота окна с одной строкой. 58 end SetWindowCaption(t_id, "Комиссия") SetWindowPos(t_id, 400, 300, 146, height) -- X, Y, ширина, высота окна. 146 row = InsertRow(t_id, -1) SetCell(t_id, row, 1, nm) SetCell(t_id, row, 2, cms) end -- Базовая ставка комиссии групп. https://www.moex.com/s93 local bscRate = { cur = 0.00462, -- Валютный idx = 0.0066, -- Индексный cmdt = 0.0132, -- Товарный prc = 0.0165, -- Процентный stk = 0.0198 -- Фондовый } -- Группа фьючерса. local fts = { GZ = "stk", LK = "stk", RN = "stk", SR = "stk", VB = "stk", GK = "stk", MM = "idx", NA = "idx", RM = "idx", GD = "cmdt", SF = "idx", BR = "cmdt", NG = "cmdt", Si = "cur", CR = "cur", Eu = "cur", ED = "cur", IMOEXF = "idx", CNYRUBF = "cur", USDRUBF = "cur" } for f, b in pairs(fts) do local sec = ErlstSec(f) if sec ~= "z" then --PrintVar(sec) local futPrice = getParamEx(class, sec, "PREVSETTLEPRICE").param_value -- Расчетная цена предыдущего клиринга. https://www.moex.com/s93#tranz local stpCost = getParamEx(class, sec, "STEPPRICE").param_value local secInfo = getSecurityInfo(class, sec) --TableLog(secInfo) local priseStep = secInfo.min_price_step local name = secInfo.name local coms = string.format("%.2f", futPrice*stpCost*bscRate[b]/(priseStep*100)) --local coms = string.format("%.2f", Rnd(futPrice*Rnd(stpCost/priseStep,5),2)*bscRate[b]/100) MsgWin(name,coms) end end endи ещё: smart-lab.ru/blog/1153905.php