Опыты с МетаТрейдер 5 в "Masterbrok"

 

По аналогии с веткой Опыты с МетаТрейдер 5 в "Открытие", хотелось бы обсудить некоторые вопросы касаемые MetaTrader 5 и Украинской Биржи в части торговли фьючерсом на индех UX (другие инструменты всё-равно недоступны).

Итак, пока не могу побороть модификацию отложенного ордера.

Инструмент имеет настройки:

Согласно справке:

Modify Pending Order
Trade order to modify the prices of a pending order. It requires to specify the following 7 fields:
·action
·order
·price
·sl
·tp
·type_time
·expiration

Соответственно, мой запрос:

MqlTradeRequest request;
MqlTradeResult res;
request.price        = someprice;
request.action       = TRADE_ACTION_MODIFY;
request.order        = OrderGetTicket(0);   
request.sl           = 0;
request.tp           = 0;
request.type_filling = ORDER_FILLING_RETURN;
request.type_time    = ORDER_TIME_DAY;
OrderSendAsync(request, res); 
В итоге получаю "Invalid request" в OnTradeTransaction (result.retcode = 10013 -> 

TRADE_RETCODE_INVALID

)

 Хотя, может нужно NormalizeDouble сделать, но это уже только завтра проверю.

Есть ещё идеи? 

 
Когда Вы выставляли отложенный ордер, скорее всего, упустили из виду настройку инструмента "Expiration". По умолчанию значение равно "Сегодня". В таком ордере дату истечения изменить нельзя ( можете попробовать проверить вручную).
 
barabashkakvn:
Когда Вы выставляли отложенный ордер, скорее всего, упустили из виду настройку инструмента "Expiration". По умолчанию значение равно "Сегодня". В таком ордере дату истечения изменить нельзя ( можете попробовать проверить вручную).

Не, выставлял этот флаг для отложки изначально (а то не хотела выставляться). 

NormalizeDouble не помог, вспомнил о ZeroMemory - завтра проверю. 

 

У меня работает так:

 

//+------------------------------------------------------------------+
//| Modify order                                                     |
//+------------------------------------------------------------------+
void Modify( const double price, const ulong ticket )
{
  if ( ticket > 0 )
  {
    MqlTradeRequest request = {0};
    MqlTradeResult  result  = {0};
  
    request.action    = TRADE_ACTION_MODIFY;
    request.magic     = magic_num;
    request.symbol    = a_symbol;
    request.order     = ticket;
    request.price     = price;
    request.type_time = ORDER_TIME_DAY;
  
    if ( OrderSend( request, result ) )
    {
      if ( result.retcode == TRADE_RETCODE_PLACED ) 
      {
        Print( "Modify done." );
      }
      else
      {
        Print( "Result modify order failed! Ticket = ", ticket, " Request type = ", EnumToString( request.type ), " Result retcode = ", GetRetCode( result.retcode ) );
      }
    }
    else
    {
      Print( "Modify order failed! Ticket = ", ticket, " Request type = ", EnumToString( request.type ), " Result retcode = ", GetRetCode( result.retcode ) );
    }
  }
}

Работает на реальном счёте.

 
Mikalas:

Работает на реальном счёте.

спс, попробую
 
Mikalas:

У меня работает так:

К Вашему варианту добавил request.type_filling и начали наконец-то появляться успешные модификации, спасибо.

Но, к сожалению, ещё Invalid Request проскакивают. Буду дальше изучать после выходных  (много мест у меня с модификацией)

 

МастерБрок - первый украинский брокер, который установил и эксплуатирует на РЕАЛЕ МТ5. Реально можно торговать только индекс украинской биржи. На заданный вопрос о сроках подключения в терминал акций для реальной торговли, получен следующий ответ от брокера:

"Добрый день.
Есть от вас письмо с вопросом по поводу подключения акций в МТ5.
Но МетаКвотсы по техническим причинам пока не могут добавить их в терминал.
В mql мы запрос не отправляли.
Mql знают о проблеме невозможности торговать акциями на УкрБирже.

С уважением компания «МАСТЕР БРОК», "

Уважаемые разработчики!

Убедительно прошу вас разъяснить по какой причине нет возможности торговать акциями украинской биржи! 

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

 
iTC:


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

Этот вопрос точно к конкретному брокеру. в МТ4/5 серверах есть все инструменты для работы с историей: и через API, и вручную через импорт-экспорт в CVS формате. 
 
aytugan:
Этот вопрос точно к конкретному брокеру. в МТ4/5 серверах есть все инструменты для работы с историей: и через API, и вручную через импорт-экспорт в CVS формате. 
Отслеживать дыры в истории должно программное обеспечение на стороне брокера. Причем в автоматическом режиме, а не кто-нибудь из техподдержки брокера. Брокер получает все данные через шлюз с биржи, а следовательно имеет доступ к истории на стороне биржи. Поэтому восстанавливать историю должно программное обеспечение брокера, а не "... API, и вручную через импорт-экспорт в CVS формате".
 
barabashkakvn:
Отслеживать дыры в истории должно программное обеспечение на стороне брокера. 

Вот пусть брокер и напишет это програмное обеспечение, благо разработчики и торговой платформы, и биржи сделали необходимый функционал в виде API.

В чем тогда добавленная стоимость продукта от такого брокера? Что он нажатием кнопки "Next" поставил МТ5 и шлюзы? 

 
aytugan:

Вот пусть брокер и напишет это програмное обеспечение, благо разработчики и торговой платформы, и биржи сделали необходимый функционал в виде API.

В чем тогда добавленная стоимость продукта от такого брокера? Что он нажатием кнопки "Next" поставил МТ5 и шлюзы? 

Ну да. Зачем это брокеру нужно. Заплатить около 150 косарей за МТ5, а потом еще писать какие-то скрипты?! У них есть Quik.

Я связывался с сисадминами Украинской биржи с просьбой помочь в этом вопросе. Или хотябы рассказать в чем проблема с МТ5. Они ответили, что фидер у них одинаковый для всех платформ. Как забирать инфу все знают. Если МТ5 это делать не умеет, то это пробдема разработчика. На вопрос, если МТ5 работает криво, зачем ее сертифицировали на украинской бирже, они не ответили. Наверное коррупционная составляющая... =)