ORDER_FILLING - страница 2

 

Хм, я смотрел то,что ты мне посоветовал ORDER_FILLING_RETURN. Там сказано:

Согласие совершить сделку по максимально доступному на рынке объему в пределах указанного в ордере и цене равной или лучше указанной. На недостающий объем будет выставлен дополнительный ордер по цене, указанной в данном ордере.

 

 Вот я и спрашиваю, а если цена будет хуже чем в ордере?

 
для этого есть параметр отклонение.
 

я сейчас пишу статью на данную тему

там постарась расписать все возможные варианты

с использованием данных с чикагской фьючерсной биржи

по фьючерсу на евро

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

 

Спасибо, кажись разобрался. Сейчас на практике проверю как будет.

 

благо опыт работы со стакан цеп имеется через торговый терминал квик

а вы немножку путаете параметр обьём ордера и цену олрдера и принцип формирования цены сделки

и немножко путаете метод исполнения этих ордеров =))

и тут как раз схема перед вами.

 

на практике опять же не получиться

для того чтобы попрактиковаться с данными настройками

на мт5 должна быть

1разрешена торговля

2 выход на реальную биржу

3 депозит тысяч в 10 долларов минимум

тогда можно уже различить принципиальную разницу между

исполнением по рынку

и исполнение ордера с реквотой


но можете попрактиковаться на ММВБ

для это всеголиш потребуется пара тысяч долларов

и открыть счет в брокерской конторе предоставляющий доступ на ммвб через квик

и сможете само лично двигать цену какй нить слабо ликвидной акции на пару копеек =)))


и тогда уже поймёте почему это принципиально разные параметры =)

 

Хех, результат отрицательный.

Создал такой скрипт.

void OpenBuy()
{
   MqlTradeRequest   m_request;         // request data
   MqlTradeResult    m_result;          // result data
/*  
   ENUM_TRADE_REQUEST_ACTIONS    action;           // Тип выполняемого действия
   ulong                         magic;            // Штамп эксперта (идентификатор magic number)
   ulong                         order;            // Тикет ордера
   string                        symbol;           // Имя торгового инструмента
   double                        volume;           // Запрашиваемый объем сделки в лотах
   double                        price;            // Цена
   double                        stoplimit;        // Уровень StopLimit ордера
   double                        sl;               // Уровень Stop Loss ордера
   double                        tp;               // Уровень Take Profit ордера
   ulong                         deviation;        // Максимально приемлемое отклонение от запрашиваемой цены
   ENUM_ORDER_TYPE               type;             // Тип ордера
   ENUM_ORDER_TYPE_FILLING       type_filling;     // Тип ордера по исполнению
   ENUM_ORDER_TYPE_TIME          type_time;        // Тип ордера по времени действия
   datetime                      expiration;       // Срок истечения ордера (для ордеров типа ORDER_TIME_SPECIFIED)
   string                        comment;          // Комментарий к ордеру
*/
  

   m_request.action      =TRADE_ACTION_DEAL;
//   m_request.magic       =19000;
   m_request.symbol      =Symbol();
   m_request.volume      =0.1;
//   m_request.price       =1.3500;
//   m_request.sl          =1.3350;
//   m_request.tp          =1.3680;
//   m_request.deviation   =0;
   m_request.type        =ORDER_TYPE_BUY;
   m_request.type_filling=ORDER_FILLING_RETURN;
//   m_request.comment     ="test";
//---
   OrderSend(m_request, m_result);
}
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
         OpenBuy();
  }
//+------------------------------------------------------------------+

Выдает ошибку: 2010.04.06 15:19:00 Trades '72571' : failed instant buy 0.10 EURUSD at 0.00000 [Invalid stops]

А ведь все по науке сделал:

Market Execution

Торговый ордер на открытие позиции в режиме Market Execution (режим исполнения торговых приказов по рынку). Требуется указание 5 полей:

  • action
  • symbol
  • volume
  • type
  • type_filling

Можно также задать значения полей magic и comment.

 

 

 

Меня сейчас интересует открытие позиции по EUR/USD, по текущей рыночной цене и в данный момент.

 

какаето внутренная ошибка может попробовать обнулить другие значения

и функция анализа ошибок некомпилируеться

попробуем в остальные значения поставить абсолютно пустые значения.

 

void OnStart()
  {
//---
   MqlTradeRequest   request;         // request data
   MqlTradeResult    result;          // result data
   request.action      =TRADE_ACTION_DEAL;
//   request.magic       =19000;
   request.symbol      =Symbol();
   request.volume      =1;
   request.price       =EMPTY_VALUE;
   request.sl          =1.330;
//   request.tp          =1.3680;
//   request.deviation   =0;
   request.type        =ORDER_TYPE_BUY;
   request.deviation =10;
   request.type_filling=ORDER_FILLING_RETURN;
//   request.comment     ="test";
//--- отправим запрос
   bool success=OrderSend(request,result);

   if(!success)
     {
      int answer=result.retcode;
      Print("TradeLog:Trade request failed. Error =",GetLastError());
      switch(answer)
        {
         //--- реквота
         case 10004:
           {
            Print("TRADE_RETCODE_REQUOTE");
            Print("request.price =",request.price,"   result.ask =",
                  result.ask," result.bid =",result.bid);
            break;
           }
         //--- ордер не принят сервером
         case 10006:
           {
            Print("TRADE_RETCODE_REJECT");
            Print("request.price =",request.price,"   result.ask =",
                  result.ask," result.bid =",result.bid);
            break;
           }
         //--- неправильная цена
         case 10015:
           {
            Print("TRADE_RETCODE_INVALID_PRICE");
            Print("request.price =",request.price,"   result.ask =",
                  result.ask," result.bid =",result.bid);
            break;
           }
         //--- неправильный SL и/или TP
         case 10016:
           {
            Print("TRADE_RETCODE_INVALID_STOPS");
            Print("request.sl =",request.sl," request.tp =",request.tp);
            Print("result.ask =",result.ask," result.bid =",result.bid);
            break;
           }
         //--- некорректный объем
         case 10014:
           {
            Print("TRADE_RETCODE_INVALID_VOLUME");
            Print("request.volume =",request.volume,"   result.volume =",
                  result.volume);
            break;
           }
         //--- не хватает денег на торговую операцию  
         case 10019:
           {
            Print("TRADE_RETCODE_NO_MONEY");
            Print("request.volume =",request.volume,"   result.volume =",
                  result.volume,"   result.comment =",result.comment);
            break;
           }
         //--- какая-то другая причина, сообщим код ответа сервера   
         default:
           {
            Print("Other answer =",answer);
           }
        }
      //--- сообщим о неудачном результате торгового запроса возвратом false
   
     }
//--- OrderSend() вернул true - повторим ответ

  
  }

Причина обращения: