Некорректный расчет ГО (из-за новых изменений в риск-параметрах биржи) - страница 18

 
prostotrader #:

Вообщем, путем поиска в инете и чтения нудных документов биржи, которая

делает все, чтобы усложнить торговлю обыкновенного трейдера (получая при этом прибыль), получилось следующее:


Эти расчеты не совсем верные, но макчимально приближены к действительности.

Взяли в копилочку.

 
prostotrader #:

Вообщем, путем поиска в инете и чтения нудных документов биржи, которая

делает все, чтобы усложнить торговлю обыкновенного трейдера (получая при этом прибыль), получилось следующее:

Где 

Price - Цена по которой хотим установить ордер

SettlementPrice - Расчетная цена после клиринга

InitialmarginSell - ГО продавца

InitialmarginBuy - ГО покупателя

Step_price - стоимость шага цены

min_step - шаг цены

Volume - кол-во контрактов

Эти расчеты не совсем верные, но макчимально приближены к действительности.

Очень интересно, как это в MT5 получить можно.

Вот, допустим " Расчетная цена после клиринга " - это как высчитывается до клиринга?

 
Aleksey Vyazmikin #:

Очень интересно, как это в MT5 получить можно.

Вот, допустим " Расчетная цена после клиринга " - это как высчитывается до клиринга?

Нет, в каждый клиринг рассчитывается Расчетная цена 

 
Aleksey Vyazmikin #:

Очень интересно, как это в MT5 получить можно.

Вот, допустим " Расчетная цена после клиринга " - это как высчитывается до клиринга?

Есть все свойства, например, SYMBOL_SESSION_PRICE_SETTLEMENT (самое главное, чтобы они были адекватно заполнены на сервере). В принципе, в справке для SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS похожая формула описана.

 
prostotrader #:

Нет, в каждый клиринг рассчитывается Расчетная цена 

Т.е. это данные по результатам последнего прошедшего клиринга?

 
Stanislav Korotky #:

Есть все свойства, например, SYMBOL_SESSION_PRICE_SETTLEMENT (самое главное, чтобы они были адекватно заполнены на сервере). В принципе, в справке для SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS похожая формула описана.

Спасибо, посмотрю.

 
prostotrader #:

Вообщем, путем поиска в инете и чтения нудных документов биржи, которая

делает все, чтобы усложнить торговлю обыкновенного трейдера (получая при этом прибыль), получилось следующее:

Где 

Price - Цена по которой хотим установить ордер

SettlementPrice - Расчетная цена после клиринга

InitialmarginSell - ГО продавца

InitialmarginBuy - ГО покупателя

Step_price - стоимость шага цены

min_step - шаг цены

Volume - кол-во контрактов

Эти расчеты не совсем верные, но макчимально приближены к действительности.

Посмотрел на валютных контрактах - НЕ работает! :(

 

Может быть самим составить формулу?

Известно, что маржа зависит от:

ГО покупателя/продавца 

Расчетной цены последнего клиринга

Стоимости шага цены 

Минимального шага цены

Цены посылаемой заявки (Price)

Данные, полученные из терминала МОЕХ по BR-3.25:

ГО продавца (InitialmarginSell) - 15981.22

ГО покупателя (InitialmarginBuy)  - 15530.39

максимальная цена Sell (Price) - 75.14

минимальная цена Buy (Price) - 60.78

Расчетная цена после клиринга ( SettlementPrice )  - 67.96

Стоимость шага цены (step_ price) - 9.96125

Минимальный шаг цены (min_step) - 0,01


Выставив 2 отложенных ордера в разные стороны по максимально и минимальной ценам я получил

Заблокировано на продажу (BlockSell) - 8113.83

Заблокировано на покупку (BlockBuy)  - 7663.00

Т.е все данные (ну почти все) известны

Нужно составить функции

BlockSell =  8113.83 = (действия с ( InitialmarginSell = 15981,22,  SettlementPrice = 67,96, Price=75,14)) умножить или делить на ( step_ price = 9.96125/min_step = 0,01);

BlockBuy =   7663.00  = (действия с (InitialmarginBuy = 15530,39,  SettlementPrice = 67,96, Price=60,78)) умножить или делить на ( step_ price = 9.96125/min_step = 0,01);

Может быть кто-нибудь поможет составить формулы?

 

Сделав "подгонку" под результат

procedure TForm1.Button1Click(Sender: TObject);
begin
  var step_price: double:= 9.96125;
  var min_step: double:= 0.01;
  var GoSell: double:= 15981.22;
  var GoBuy: double:= 15530.39;
  var SellPrice: double:= 75.14;
  var BuyPrice: double:= 60.78;
  var SetlPrice: double:= 67.96;
  var SellMargin: double:= (GoSell - (SellPrice - SetlPrice) * (step_price/min_step)) - 716.0;
  var BuyMargin: double:= (GoBuy - (SetlPrice - BuyPrice) * (step_price/min_step))- 716.0;
  Edit1.Text:= TCaption(FloatToStr(SellMargin));
  Edit2.Text:= TCaption(FloatToStr(BuyMargin));
end;

Получил следующее:

В прикрепленном файле последний документ биржи о принципах расчета ГО

Файлы:
q7_.09.2024.zip  233 kb
 
Roman #:

Ну и вишенка на торте.
Соединить всё воедино для каждого фьючерса:

  • ответ gpt 
  • проценты на уровнях 
  • концентрацию лимитов 
  • уровни риска.
А уровень риска предполагаю ещё разветвляется на рублёвые риски и валютные риски.
В общем жесть жестяная.




Всё сделано для того, чтоб продавать dll.

Из этого всего можно сделать вывод,
что функция OrderCalcMargin() рассчитана своебразно метаквотами и совсем не соответствует биржевому расчёту.

Дайте плиз ссылку откуда эта картинка, буду писать регулятору о беспределе на бирже.