В общем, собрал скрипт по итогам всех обсуждений. И для Финама и для Открытия. Показывает сколько должно быть средств на счете при открытии позиции, при условии, что открытых позиций нет.
По Финаму проверял - МТ5 учитывает и проверяет так же как в скрипте.
По Открытию постараюсь завтра проверить - там по фьючерсу есть различия между рыночными и лимитными ордерами. Видится, что МТ5 проверяет при открытии позиции средства по рыночному, а не по лимитному.
Вот эта картинка теперь у меня выглядит так:
Запущен у брокера JSC Investment Company FINAM на символе EDZ2
Cпособ вычисления величины залоговых средств: SYMBOL_CALC_MODE_EXCH_FUTURES
Минимальный лот: 1.00
Для покупки необходимо: 10386.86
Для продажи необходимо: 10837.91
Запущен у брокера JSC Investment Company FINAM на символе EDM2
Cпособ вычисления величины залоговых средств: SYMBOL_CALC_MODE_EXCH_FUTURES
Минимальный лот: 1.00
Для покупки необходимо: 7729.22
Для продажи необходимо: 8045.21
Запущен у брокера JSC Investment Company FINAM на символе EDU2
Cпособ вычисления величины залоговых средств: SYMBOL_CALC_MODE_EXCH_FUTURES
Минимальный лот: 1.00
Для покупки необходимо: 8588.08
Для продажи необходимо: 8901.28
Проверил скрипт в Открытии на фьючерсе на реальном счете - открывал и закрывал позиции руками в терминале (через панель и стакан). Ниже выводы и логи.
в Открытии есть разница в количестве необходимых для открытия позиции средств в зависимости от того какой тип ордера используется при открытии позиции - лимитный или рыночный.
Запущен у брокера АО ''Открытие Брокер'' на символе Si-6.22
Cпособ вычисления величины залоговых средств: SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS
Минимальный лот: 1.00
Для покупки по рынку необходимо: 9296.91
Для покупки лимитником необходимо: 5166.91
На счете лежит 29 350 р - открытых позиций или выставленных ордеров нет.
По логике расчета я могу купить 3 лота по рынку (29350.00/9296.91 = 3.16) или 5 лотов лимитным ордером (29350.00/5166.91 = 5.68). Проверяем:
1 Шаг - проверяем рыночный ордер.
Открываю панель быстрой торговли на графике (стандартную) - пытаюсь купить 4 лота. Вкладка журнал:
Ну и собственно объяснение почему отличается маржа по рыночным и лимитным ордерам:
Коротко - рыночный ордер выставляется по максимальной/минимальной цене за данную сессию (выше в логах это видно). Получается, может быть интересная ситуация, когда ордер Stop Limit (отложка) выставляется успешно, но когда цена к ней подходит - не исполняется :)
Полностью из справки:
Для фьючерсных контрактов срочной секции Московской Биржи маржа рассчитывается отдельно для каждого символа. Сначала рассчитывается маржа для открытой позиции и всех ордеров на покупку, а затем — маржа для той же позиции и всех ордеров на продажу.
MarginBuy = MarginPos + Sum(MarginBuyOrder)
MarginSell = MarginPos + Sum(MarginSellOrder))
В качестве итогового значения маржи по символу принимается наибольшее из этих двух значений.
Как уже упоминалось выше, одна и та же позиция принимает участие в расчете обоих значений. В первой формуле (с ордерами на покупку) маржа позиции рассчитывается следующим образом:
MarginPos = Объем * (InitialMarginBuy + (Цена открытия - SettlementPrice) * Цена тика / Размер тика * (1 + 0.01 * Коэффициент валюты маржи))
При этом объем позиции берется с положительным знаком, если она длинная, и с отрицательным знаком — если она короткая.
Во второй формуле (с ордерами на продажу) маржа позиции рассчитывается следующим образом:
MarginPos = Объем * (InitialMarginSell + (SettlementPrice - Цена открытия) * Цена тика / Размер тика * (1 + 0.01 * Коэффициент валюты маржи))
При этом объем позиции берется с положительным знаком, если она короткая, и с отрицательным знаком — если она длинная.
Фактически, такой подход обеспечивает для трейдера скидку по марже при наличии открытой позиции в противоположном направлении относительно выставленных ордеров (позиция выступает обеспечением по ордерам).
Маржа по ордерам рассчитывается по следующим формулам:
MarginBuyOrder = Объем * (InitialMarginBuy + (Price - SettlementPrice) * Цена тика / Размер тика * (1 + 0.01 * Коэффициент валюты маржи))
MarginSellOrder = Объем * (InitialMarginSell + (SettlementPrice - Price) * Цена тика / Размер тика * (1 + 0.01 * Коэффициент валюты маржи))
Здесь Price зависит от типа ордера, и может принимать значения:
Максимальная и минимальная цена контракта для текущей сессии — для еще не исполненных рыночных и стоп-ордеров на покупку и продажу, соответственно. Поскольку в рыночных ордерах цена не указывается, с трейдера взимается максимально возможная маржа.
Стоп-ордера после срабатывания ведут себя аналогично рыночным.
Цена ордера — для лимитных ордеров.
Цена Stop Limit — для стоп-лимитных ордеров.
Остальные параметры в формулах:
InitialMarginBuy — первоначальная маржа покупки.
InitialMarginSell — первоначальная маржа продажи.
Коэффициент валюты маржи — радиус изменения курса валюты, в которой номинирован фьючерсный контракт, к Российскому рублю.
SettlementPrice — расчетная цена инструмента для текущей сессии.
Все параметры для расчета передаются Московской биржей для каждой сессии.
Проверил скрипт в Открытии на фьючерсе на реальном счете - открывал и закрывал позиции руками в терминале (через панель и стакан). Ниже выводы и логи.
в Открытии есть разница в количестве необходимых для открытия позиции средств в зависимости от того какой тип ордера используется при открытии позиции - лимитный или рыночный.
По логике расчета я могу купить 3 лота по рынку (29350.00/9296.91 = 3.16) или 5 лотов лимитным ордером (29350.00/5166.91 = 5.68).
Есть ещё пара моментов:
1. Как я понимаю, можно купить 3 лота по рынку сразу, а потом ещё один или два раза по одному лоту - тоже по рынку.
2. Похоже, текущая поза не всегда учитывается для каждого символа отдельно - у меня сейчас открыто
MIX-6.22 sell 4
RTS-6.22 buy 6
И MT5 мне рисует текущую маржу 280940.22, хотя там по каждому символу примерно по столько должно быть.
Там где спред - берется большое значение маржи, я так понял:
В данном режиме для каждой стороны спреда будет рассчитываться значение начальной и поддерживающей маржи. Расчет осуществляется суммированием маржинальных требований по всем символам стороны.
Для спреда будут использоваться маржинальные требования той стороны, где значение больше.
В данном режиме учитывается весь объем позиций на каждой стороне, а не только перекрытый. Указанные веса не участвуют в расчете.
Добавлено:
До меня, после прочтения справки по ссылкам выше, наконец дошло как всё считается. Хотя до этого читал много статей и форумы на эту тему. Но только после прочтения справки МТ5 именно дошло полностью :) Вообще разработчикам за документацию спасибо огромное - сделана очень понятно и доступно.
"Если ничего не помогает - прочтите наконец инструкцию!" :)
Там где спред - берется большое значение маржи, я так понял:
Добавлено:
До меня, после прочтения справки по ссылкам выше, наконец дошло как всё считается. Хотя до этого читал много статей и форумы на эту тему. Но только после прочтения справки МТ5 именно дошло полностью :) Вообще разработчикам за документацию спасибо огромное - сделана очень понятно и доступно.
"Если ничего не помогает - прочтите наконец инструкцию!" :)
До сих пор у Вас не верный расчет.
Вот реальные цифры:
кликаете по необходимому инструменту и смотрите ГО в спецификации
там же можно увидеть все остальные сборы - комиссии и прочее
// это и есть ответ на вопрос ветки, т.е. что должно получиться в итоге!
Расчет может не сходиться в силу оценки уровня квалификации брокером. Если брокер решит, что уровень квалификации трейдера далек от профессионального, то ГО будет другим.
Влияем на развитие, создаем будущее. Миссия Группы — способствовать экономическому росту и реструктуризации российской экономики путем расширения возможностей по привлечению капитала для компаний и создания удобной, надежной и прозрачной инвестиционной среды для российских и иностранных инвесторов.
кликаете по необходимому инструменту и смотрите ГО в спецификации
там же можно увидеть все остальные сборы - комиссии и прочее
// это и есть ответ на вопрос ветки, т.е. что должно получиться в итоге!
Расчет может не сходиться в силу оценки уровня квалификации брокером. Если брокер решит, что уровень квалификации трейдера далек от профессионального, то ГО будет другим.
Проведите эксперимент по аналогии с моим. Возьмите Ваш баланс на счете и разделите на значение ГО биржи из спецификации по любому контракту (ссылку Вы дали). Полученное число округлите до целого (вниз). Попробуйте в МТ5 открыть позицию по этому инструменту с размером лота, который получили (открывать через стандартную панель быстрой торговли). Не у Финама, ни у Открытия у Вас сделка не откроется - не хватит денег.
Чтобы понять, сколько лотов Вы можете открыть на свои средства - можно воспользоваться скриптом из 113 сообщения данной ветки.
Ваш код из 112 сообщения для Финама тоже подойдет.
Добавлено:
Во время эксперимента на счете не должно быть открытых позиций и выставленных ордеров.
Принципы и методика Принципы расчета гарантийного обеспечения Методика расчета теоретической цены опциона и коэффициента "дельта" Принципы расчета вариационной маржи и гарантийного обеспечения с использованием текущих курсов валют Методика определения риск-параметров на срочном рынке Изменения с 6 апреля 2015 года в системе расчета гарантийного обеспечения при внедрении механизма автоэкспирации опционов Руководство для участников клиринга по инструментам лимитирования клиентов Управление параметрами учета рисков экспирации опционов Сервис ForecastIM Система маржирования в SPECTRA 6.0.
Пока торгую у Финама, там расчет маржи у фьючерсов не такой как в Открытии. Пример для sell
Так их брокер для каждого символа прописывает сам. И функция SymbolInfoMarginRate их возвращает.
так тогда?
//---
double k_initial_margin, k_maintenance_margin,m_initial_margin,m_margin;
if(SymbolInfoMarginRate(_Symbol,ORDER_TYPE_BUY,k_initial_margin,k_maintenance_margin)==true)
{
SymbolInfoMarginRate(_Symbol, // символ
ORDER_TYPE_SELL, // тип ордера
k_initial_margin, // коэффициент взимания начальной маржи
k_maintenance_margin // коэффициент взимания поддерживающей маржи
);
m_initial_margin = SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL);
m_margin = m_initial_margin*k_initial_margin;
Print("ГО ",_Symbol,"=",m_margin);
}
но мне не внушают доверия полученные цифры
так тогда?
но мне не внушают доверия полученные цифры
В общем, собрал скрипт по итогам всех обсуждений. И для Финама и для Открытия. Показывает сколько должно быть средств на счете при открытии позиции, при условии, что открытых позиций нет.
По Финаму проверял - МТ5 учитывает и проверяет так же как в скрипте.
По Открытию постараюсь завтра проверить - там по фьючерсу есть различия между рыночными и лимитными ордерами. Видится, что МТ5 проверяет при открытии позиции средства по рыночному, а не по лимитному.
Вот эта картинка теперь у меня выглядит так:
Скрипт:
Добавлено:
Уже после того как выложил, наткнулся на раздел в справке:
Для акций
Для фьючерсов
Там подробно с примерами всё разжёвано, раньше не видел...
Проверил скрипт в Открытии на фьючерсе на реальном счете - открывал и закрывал позиции руками в терминале (через панель и стакан). Ниже выводы и логи.
в Открытии есть разница в количестве необходимых для открытия позиции средств в зависимости от того какой тип ордера используется при открытии позиции - лимитный или рыночный.
По логике расчета я могу купить 3 лота по рынку (29350.00/9296.91 = 3.16) или 5 лотов лимитным ордером (29350.00/5166.91 = 5.68). Проверяем:
1 Шаг - проверяем рыночный ордер.
Открываю панель быстрой торговли на графике (стандартную) - пытаюсь купить 4 лота. Вкладка журнал:
Денег не хватило.
2 Шаг - проверяем рыночный ордер.
Открываю панель быстрой торговли на графике (стандартную) - пытаюсь купить 3 лота. Вкладка журнал:
Денег хватило, позиция открыта.
3 Шаг - проверяем лимитный ордер.
Открываю стакан - выставляю лимитный ордер на покупку - пытаюсь купить 6 лотов. Вкладка журнал:
Денег не хватило.
4 Шаг - проверяем лимитный ордер.
Открываю стакан - выставляю лимитный ордер на покупку - пытаюсь купить 5 лотов. Вкладка журнал:
Денег хватило, ордер выставлен.
Вывод:
1. В Открытии выгоднее торговать лимитными ордерами :)
2. Скрипт показывает верную информацию - OrderCalcMargin() работает корректно.
Ну и собственно объяснение почему отличается маржа по рыночным и лимитным ордерам:
Коротко - рыночный ордер выставляется по максимальной/минимальной цене за данную сессию (выше в логах это видно). Получается, может быть интересная ситуация, когда ордер Stop Limit (отложка) выставляется успешно, но когда цена к ней подходит - не исполняется :)
Полностью из справки:
Проверил скрипт в Открытии на фьючерсе на реальном счете - открывал и закрывал позиции руками в терминале (через панель и стакан). Ниже выводы и логи.
в Открытии есть разница в количестве необходимых для открытия позиции средств в зависимости от того какой тип ордера используется при открытии позиции - лимитный или рыночный.
По логике расчета я могу купить 3 лота по рынку (29350.00/9296.91 = 3.16) или 5 лотов лимитным ордером (29350.00/5166.91 = 5.68).
Есть ещё пара моментов:
1. Как я понимаю, можно купить 3 лота по рынку сразу, а потом ещё один или два раза по одному лоту - тоже по рынку.
2. Похоже, текущая поза не всегда учитывается для каждого символа отдельно - у меня сейчас открыто
MIX-6.22 sell 4
RTS-6.22 buy 6
И MT5 мне рисует текущую маржу 280940.22, хотя там по каждому символу примерно по столько должно быть.
Есть ещё пара моментов:
1. Как я понимаю, можно купить 3 лота по рынку сразу, а потом ещё один или два раза по одному лоту - тоже по рынку.
2. Похоже, текущая поза не всегда учитывается для каждого символа отдельно - у меня сейчас открыто
MIX-6.22 sell 4
RTS-6.22 buy 6
И MT5 мне рисует текущую маржу 280940.22, хотя там по каждому символу примерно по столько должно быть.
1. Да. Я раньше не понимал почему. Теперь понимаю :)
2. Ваш случай - это спред:
Там где спред - берется большое значение маржи, я так понял:
Добавлено:
До меня, после прочтения справки по ссылкам выше, наконец дошло как всё считается. Хотя до этого читал много статей и форумы на эту тему. Но только после прочтения справки МТ5 именно дошло полностью :) Вообще разработчикам за документацию спасибо огромное - сделана очень понятно и доступно.
"Если ничего не помогает - прочтите наконец инструкцию!" :)
1. Да. Я раньше не понимал почему. Теперь понимаю :)
2. Ваш случай - это спред:
Там где спред - берется большое значение маржи, я так понял:
Добавлено:
До меня, после прочтения справки по ссылкам выше, наконец дошло как всё считается. Хотя до этого читал много статей и форумы на эту тему. Но только после прочтения справки МТ5 именно дошло полностью :) Вообще разработчикам за документацию спасибо огромное - сделана очень понятно и доступно.
"Если ничего не помогает - прочтите наконец инструкцию!" :)
До сих пор у Вас не верный расчет.
Вот реальные цифры:
кликаете по необходимому инструменту и смотрите ГО в спецификации
там же можно увидеть все остальные сборы - комиссии и прочее
// это и есть ответ на вопрос ветки, т.е. что должно получиться в итоге!
Расчет может не сходиться в силу оценки уровня квалификации брокером. Если брокер решит, что уровень квалификации трейдера далек от профессионального, то ГО будет другим.
https://www.moex.com/ru/derivatives/
До сих пор у Вас не верный расчет.
Вот реальные цифры:
кликаете по необходимому инструменту и смотрите ГО в спецификации
там же можно увидеть все остальные сборы - комиссии и прочее
// это и есть ответ на вопрос ветки, т.е. что должно получиться в итоге!
Расчет может не сходиться в силу оценки уровня квалификации брокером. Если брокер решит, что уровень квалификации трейдера далек от профессионального, то ГО будет другим.
https://www.moex.com/ru/derivatives/
Проведите эксперимент по аналогии с моим. Возьмите Ваш баланс на счете и разделите на значение ГО биржи из спецификации по любому контракту (ссылку Вы дали). Полученное число округлите до целого (вниз). Попробуйте в МТ5 открыть позицию по этому инструменту с размером лота, который получили (открывать через стандартную панель быстрой торговли). Не у Финама, ни у Открытия у Вас сделка не откроется - не хватит денег.
Чтобы понять, сколько лотов Вы можете открыть на свои средства - можно воспользоваться скриптом из 113 сообщения данной ветки.
Ваш код из 112 сообщения для Финама тоже подойдет.
Добавлено:
Во время эксперимента на счете не должно быть открытых позиций и выставленных ордеров.
вот исчо
https://www.moex.com/msn/module-margin