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

 
Aleksey Vyazmikin #:

Ну, я так же не торгую сейчас, смотрел пару месяцев назад, тогда они брали по максимальному уровню, это указано в спецификации в терминале, что удивило и оттолкнуло.

На данный момент для MIX-6.25 выглядит так:


Днём (до ~19:30) вдвое меньше (пониженное ГО).
 

Все же нашел я валютную надбавку в Плаза 2

Теперь можно достаточно точно рассчитать ГО

Они на сайте не торопятся вносить изменения...

 

Завтра проверю расчет ГО, но думается, что будет все ОК.

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

На демо контуре нет данных брокера, а в API подробно не написано как считать комиссии брокера.


 
А что с сертификацией то, Михаил?
 
Dmitriy Skub #:
А что с сертификацией то, Михаил?

Сказали, что программу сертифицировали, дали ключ, НО документа до сих пор НЕТ!

Официально нет :)

ТЕМА:   Ключ приложения
ТЕКСТ УТОЧНЕНИЯ:        
Добрый день!

Ключ Вашей сертифицированной ВПТС - чччччччччччччччччччччччччччччччччч
Уже сейчас можете заказывать логины с указанием Вашей ВПТС.
Логины можете заказывать через Вашего брокера.
По вопросу готовности оригинала сертификата уточним информацию у коллег и вернемся к Вам с ответом в понедельник.

В прошедший понедельник :)

 

Кстати, если решите вернуться к Плазе, то вот вам помощь

//--- Calculate margin ---
function TCGateConnector.CalcMargin(const aDir: integer; const Price: double;
                                    const aLeg, bLeg: integer; const aData: TExpertData;
                                    const Sett: TExpertSettings; var SellMargin: double;
                                    var BuyMargin: double): boolean;
var
  Prim_sell_deposit: double;
  Prim_buy_deposit: double;
  Sec_sell_deposit: double;
  Sec_buy_deposit: double;
  Radius: double;
  BCCode: ansistring;
  curr_id: integer;
begin
//--- risk level --
  Prim_sell_deposit:= 0;
  Prim_buy_deposit:= 0;
  Sec_sell_deposit:= 0;
  Sec_buy_deposit:= 0;
//--- Radius ---
  Radius:= 0;
  curr_id:= -1;
  BCCode:= aData.iData[aLeg].InfoData.base_contract_code;
  for var i: integer:= 0 to Length(aData.BCParams) - 1 do
  begin
    if(BCCode = aData.BCParams[i].base_contract_code) then
    begin
      curr_id:= aData.BCParams[i].currency_id;
      break;
    end;
  end;
  if(curr_id > -1) then
  begin
    for var j: integer:= 0 to Length(aData.Rates) - 1 do
    begin
      if(curr_id = aData.Rates[j].rate_id) then
      begin
        Radius:= aData.Rates[j].radius;
        break;
      end;
    end;
  end;
//--- Get deposit ---
  case aData.Investor.client_risk_level of
    0: begin
         Prim_sell_deposit:= aData.iData[aLeg].InfoData.sell_deposit;
         Prim_buy_deposit:= aData.iData[aLeg].InfoData.sell_deposit;
         Sec_sell_deposit:= aData.iData[bLeg].InfoData.sell_deposit;
         Sec_buy_deposit:= aData.iData[bLeg].InfoData.sell_deposit;
       end;
    1: begin
         Prim_sell_deposit:= aData.iData[aLeg].InfoData.sell_deposit_lrc;
         Prim_buy_deposit:= aData.iData[aLeg].InfoData.buy_deposit_lrc;
         Sec_sell_deposit:= aData.iData[bLeg].InfoData.sell_deposit_lrc;
         Sec_buy_deposit:= aData.iData[bLeg].InfoData.buy_deposit_lrc;
       end;
    2: begin
         Prim_sell_deposit:= aData.iData[aLeg].InfoData.sell_deposit_mrc;
         Prim_buy_deposit:= aData.iData[aLeg].InfoData.buy_deposit_mrc;
         Sec_sell_deposit:= aData.iData[bLeg].InfoData.sell_deposit_mrc;
         Sec_buy_deposit:= aData.iData[bLeg].InfoData.buy_deposit_mrc;
       end;
    3: begin
         Prim_sell_deposit:= aData.iData[aLeg].InfoData.sell_deposit_hrc;
         Prim_buy_deposit:= aData.iData[aLeg].InfoData.buy_deposit_hrc;
         Sec_sell_deposit:= aData.iData[bLeg].InfoData.sell_deposit_hrc;
         Sec_buy_deposit:= aData.iData[bLeg].InfoData.buy_deposit_hrc;
       end;
    4: begin
         Prim_sell_deposit:= aData.iData[aLeg].InfoData.sell_deposit_erc;
         Prim_buy_deposit:= aData.iData[aLeg].InfoData.buy_deposit_erc;
         Sec_sell_deposit:= aData.iData[bLeg].InfoData.sell_deposit_erc;
         Sec_buy_deposit:= aData.iData[bLeg].InfoData.buy_deposit_erc;
       end;
  end;
//---
  case aDir of
    DIR_SELL:
      begin
        SellMargin:= Sec_sell_deposit +
                    (aData.iData[bLeg].InfoData.settlement_price - Price) *
                    (aData.iData[bLeg].InfoData.step_price/aData.iData[bLeg].InfoData.min_step) *
                    (1 + Radius/100);
        BuyMargin:= Prim_buy_deposit -
                    (aData.iData[aLeg].InfoData.settlement_price -
                     aData.iData[aLeg].TickData.Comm.best_sell) *
                    (aData.iData[aLeg].InfoData.step_price/aData.iData[bLeg].InfoData.min_step) *
                    (1 + Radius/100);
      end;
    DIR_BUY:
      begin
        BuyMargin:= Sec_buy_deposit -
                    (aData.iData[bLeg].InfoData.settlement_price - Price) *
                    (aData.iData[bLeg].InfoData.step_price/aData.iData[bLeg].InfoData.min_step) *
                    (1 + Radius/100);
        SellMargin:= Prim_sell_deposit +
                    (aData.iData[aLeg].InfoData.settlement_price -
                     aData.iData[aLeg].TickData.Comm.best_buy) *
                    (aData.iData[aLeg].InfoData.step_price/aData.iData[bLeg].InfoData.min_step) *
                    (1 + Radius/100);
      end;
  end;
  result:= true;
end;


Берется из таблицы FORTS_REFDATA_REPL --> fut_sess_contents

BCCode:= aData.iData[aLeg].InfoData.base_contract_code;

Затем ищем ID валюты из таблицы FORTS_INFO_REPL--> futures_params

curr_id:= aData.BCParams[i].currency_id;

Затем берем радиус из таблицы FORTS_REFDATA_REPL --> rates

Radius:= aData.Rates[j].radius;

Уровень риска клиента берется из таблицы FORTS_REFDATA_REPL --> investor

aData.Investor.client_risk_level
0: begin
         Prim_sell_deposit:= aData.iData[aLeg].InfoData.sell_deposit;
         Prim_buy_deposit:= aData.iData[aLeg].InfoData.sell_deposit;
         Sec_sell_deposit:= aData.iData[bLeg].InfoData.sell_deposit;
         Sec_buy_deposit:= aData.iData[bLeg].InfoData.sell_deposit;
       end;

Здесь ошибка

Должно быть

0: begin
         Prim_sell_deposit:= aData.iData[aLeg].InfoData.sell_deposit;
         Prim_buy_deposit:= aData.iData[aLeg].InfoData.buy_deposit;
         Sec_sell_deposit:= aData.iData[bLeg].InfoData.sell_deposit;
         Sec_buy_deposit:= aData.iData[bLeg].InfoData.buy_deposit;
       end;
 
prostotrader #:

Кстати, если решите вернуться к Плазе, то вот вам помощь


Берется из таблицы FORTS_REFDATA_REPL --> fut_sess_contents

Затем ищем ID валюты из таблицы FORTS_INFO_REPL--> futures_params

Затем берем радиус из таблицы FORTS_REFDATA_REPL --> rates

Уровень риска клиента берется из таблицы FORTS_REFDATA_REPL --> investor

Здесь ошибка

Должно быть

Да у меня как был затык на установке ордеров (до этого даже не дошло), так и остался. Больше не разбирался с этим.

Волатильность внутридневная крипты на два порядка больше форексной (при тех же рисках) и в разы больше фортса. Правда, есть несистемные риски, так они и на фортс есть (пример Открытия).

Держите в курсе по вопросу исполнения через Плазу (снятие/установка/движка лимитников), если не сложно. Это единственное, что может меня сподвигнуть вернуться туда (низкое исполнение, хотя бы 2-3 стабильных мс).

 
Dmitriy Skub #:

Да у меня как был затык на установке ордеров (до этого даже не дошло), так и остался. Больше не разбирался с этим.

Волатильность внутридневная крипты на два порядка больше форексной (при тех же рисках) и в разы больше фортса. Правда, есть несистемные риски, так они и на фортс есть (пример Открытия).

Держите в курсе по вопросу исполнения через Плазу (снятие/установка/движка лимитников), если не сложно. Это единственное, что может меня сподвигнуть вернуться туда (низкое исполнение, хотя бы 2-3 стабильных мс).

Я сейчас живу за городом (но интернет по оптоволокну 100 мБит) и тестирую роботов (Плаза 2)

На тестовом полигоне Т0 задержки от 10 до 30 мс

14.04.2025 07:16:42.252 --> Заявка BOC на покупку устанавливается...
14.04.2025 07:16:42.268 --> Операция выполнена успешно.
14.04.2025 07:16:42.283 --> Заявка 1964462657587151242 активна. (29 msc)

14.04.2025 10:29:52.340 --> Заявка BOC на продажу устанавливается...
14.04.2025 10:29:52.356 --> Операция выполнена успешно.
14.04.2025 10:29:52.356 --> Заявка 1964462657587156890 активна. (14 msc)

14.04.2025 10:31:58.784 --> Заявка Market на продажу отправлена...
14.04.2025 10:31:58.799 --> Операция выполнена успешно.
14.04.2025 10:31:58.799 --> Заявка 1892968013502682964 исполнена. (17 msc)
 
prostotrader #:

На тестовом полигоне Т0 задержки от 10 до 30 мс

Потрясающая скорость!

А у меня на Forex 1500 мс только исполнение, без учёта доставки заявки...
 
prostotrader #:

Я сейчас живу за городом (но интернет по оптоволокну 100 мБит) и тестирую роботов (Плаза 2)

На тестовом полигоне Т0 задержки от 10 до 30 мс

Тестовый слабоват, конечно. И разброс большой. Похоже, есть радио-сегмент там у вас. А пинг какой туда?

Бум надеяться, что в боевом все по другому.