Фондовый рынок. Акции. Скорость исполнения торговых приказов. - страница 3

prostotrader
10947

Сделал проверку исполнения и заливки ордеров на фондовой секции МТ-5 оказалось, что нельзя использовать

рыночный ордер и заливку IOC.

Какой тип заливки выбрать чтобы лимитный ордер срабатывал как рыночный?

JRandomTrader
1131
prostotrader #:

Сделал проверку исполнения и заливки ордеров на фондовой секции МТ-5 оказалось, что нельзя использовать

рыночный ордер и заливку IOC.

Какой тип заливки выбрать чтобы лимитный ордер срабатывал как рыночный?

RETURN всяко должно работать. А чтобы точно исполнился и не висел - цену поближе к планке. Практически рыночный и получится.

prostotrader
10947
JRandomTrader #:

RETURN всяко должно работать. А чтобы точно исполнился и не висел - цену поближе к планке. Практически рыночный и получится.

Я в приложении для Квик так и делаю (в trans2quik.dll нет заливки FOK), но иногда возникает проблема, при резком движении цен акций,

он все же остается стоять в стакане.

Сейчас перекладываю свое приложение в МТ-5, связывая 2 терминала именованным каналом.

В МТ-5 есть ещё некая сложность, т.к советник для Фондового рынка является Pipe Сервером, то использовать

OnTrade и OnTradeTransaction не представляется возможным.

С одной стороны заливка RETURN с гораздо большей вероятностью исполнится, но все же может ордер не сразу

исполнится, что приведет к проблеме отслеживания ордера, с другой стороны, если заливка FOK,

то может сложиться ситуация, что постоянно не будет хватать нужного объема для исполнения.

Вот и ломаю голову как лучше поступить?  

JRandomTrader
1131
prostotrader #:

Я в приложении для Квик так и делаю (в trans2quik.dll нет заливки FOK), но иногда возникает проблема, при резком движении цен акций,

он все же остается стоять в стакане.

Сейчас перекладываю свое приложение в МТ-5, связывая 2 терминала именованным каналом.

В МТ-5 есть ещё некая сложность, т.к советник для Фондового рынка является Pipe Сервером, то использовать

OnTrade и OnTradeTransaction не представляется возможным.

С одной стороны заливка RETURN с гораздо большей вероятностью исполнится, но все же может ордер не сразу

исполнится, что приведет к проблеме отслеживания ордера, с другой стороны, если заливка FOK,

то может сложиться ситуация, что постоянно не будет хватать нужного объема для исполнения.

Вот и ломаю голову как лучше поступить?  

Имеется в виду ситуация, когда ордеру не хватает ликвидности до самой планки?

Можно попробовать смотреть его хоть по таймеру, и, если он ORDER_STATE_PARTIAL а цена на планке, то снимать.

Или, может, смотреть SYMBOL_SESSION_*_ORDERS_VOLUME

Andrey Miguzov
2659
prostotrader #:

Сейчас перекладываю свое приложение в МТ-5, связывая 2 терминала именованным каналом.

Здравствуйте!

Подскажите пожалуйста (если не секрет) почему не рассматриваете возможность торговли у другого брокера? Там где есть единый брокерский счет.

Для Вашей торговли Акция-Фьючерс, о которой Вы писали в других постах, получается гораздо удобнее ведь? + решит очень много попутных проблем связки двух терминалов.

У меня из вариантов только время задержки исполнения и комиссия...

prostotrader
10947
Andrey Miguzov #:

Здравствуйте!

Подскажите пожалуйста (если не секрет) почему не рассматриваете возможность торговли у другого брокера? Там где есть единый брокерский счет.

Для Вашей торговли Акция-Фьючерс, о которой Вы писали в других постах, получается гораздо удобнее ведь? + решит очень много попутных проблем связки двух терминалов.

У меня из вариантов только время задержки исполнения и комиссия...

Я же писал, что Квик очень медленно работает, а МТ- 5 только в Открытии и БКС, Финам вообще не рассматриваю.

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

Задача сделать скальпинг на Классическом арбитраже с нулевыми рисками.

prostotrader
10947
JRandomTrader #:

Имеется в виду ситуация, когда ордеру не хватает ликвидности до самой планки?

Можно попробовать смотреть его хоть по таймеру, и, если он ORDER_STATE_PARTIAL а цена на планке, то снимать.

Или, может, смотреть SYMBOL_SESSION_*_ORDERS_VOLUME

Нельзя использовать другие функции на Сервере Pipe, т.к единственная реализация на

МТ-5 (один поток) вешать советник сервера в режим ожидания команд, получил лисенер команду, выполнил её,

и отослал результат.

//+------------------------------------------------------------------+
//| Expert Listen Pipe channel function                              |
//+------------------------------------------------------------------+
void ListenPipe()
{
  bool result; 
  bool can_close = false;
  while((IsStopped() == false) && (lsn_exit == false))
  {
    result = Pipe.ReadData();
    if(result == true)
    {
      switch(Pipe.in_data.pipe_com)
      {
        case P_LSNR_EXIT:
          Pipe.out_data.pipe_com = P_DONE;
          can_close = true;
          result = false;
        break;
        case P_SET_MAGIC:
          Pipe.out_data.pipe_com = P_DONE;
          result = false;
        break;
        case P_SELL_SPOT:
          spot_ticket = SpotSetOrder(Pipe.in_data.spot_trade_lot, Pipe.in_data.spot_trade_price, spot_magic, SELL);
          if(spot_ticket > 0)
          {
            Pipe.out_data.pipe_com = CheckDeal(spot_ticket);
          }  
          else Pipe.out_data.pipe_com = P_REJECT;
          result = false;
        break;
        case P_BUY_SPOT:
          spot_ticket = SpotSetOrder(Pipe.in_data.spot_trade_lot, Pipe.in_data.spot_trade_price, spot_magic, BUY);
          if(spot_ticket > 0)
          {
            Pipe.out_data.pipe_com = CheckDeal(spot_ticket);   
          }  
          else Pipe.out_data.pipe_com = P_REJECT;
          result = false;
        break;
        case P_CHECK_DEAL:
          if(spot_ticket > 0)
          {
            Pipe.out_data.pipe_com = CheckDeal(spot_ticket);
          }
          else Pipe.out_data.pipe_com = P_ORDER_N_FOUND; 
          result = false;
        break;
        case P_GET_DATA:
          GetData();
          Pipe.out_data.pipe_com = P_DONE;
          result = false;
        break;
        case P_ORDER_REMOVE:
          if(SpotRomoveOrder(spot_ticket) == true)
          {
            Pipe.out_data.pipe_com = P_ORDER_REMOVE_DONE;
          }
          result = false;
        break;
      }
      if(result == false)
      {
        result = Pipe.WriteData(Pipe.out_data);
        if(result == true)
        {
          if(can_close == true) lsn_exit = true;
        }
      }
    }
    else Print("Error resived data!"); 
  }
  Print("Listener exit.");
}

result = Pipe.ReadData(); вешает сервер-советник, ждет команду от клиента.

Все управление сервером идет от советника-клиент

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

структура с набором готовых данных в обе стороны. 
 

Dmitriy Skub
13829
prostotrader #:

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

структура с набором готовых данных в обе стороны. 
 

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

prostotrader
10947
Dmitriy Skub #:

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

Я имел ввиду, что нет необходимости связываться через свое приложение.

Andrey Miguzov
2659
prostotrader #:

Я же писал, что Квик очень медленно работает, а МТ- 5 только в Открытии и БКС, Финам вообще не рассматриваю.

Я про Финам и писал. Собираюсь там счет открывать как раз только из-за ЕБС.

Жаль, что брокеров нельзя обсуждать на форуме. Буду очень благодарен, если в личку напишите почему туда не надо.

В любом случае - спасибо за информацию!