Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 164

 

Господа, подскажите пожалуйста что нужно писать в последних двух строках при модификации отложенного ордера, если время его жизни задано. (например 6 часов - ). 

         request.type_time = ORDER_TIME_SPECIFIED;  // Ордер будет действовать до даты истечения
         request.expiration = TimeCurrent()+6*3600;// последнее известное время сервера + кол.часов*часы

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

А если нужно изменить его жизнь?

Modify Pending Order

Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:

·action

·order

·price

·sl

·tp

·type_time

·expiration

Вот в эти две строчки Справочника не могу въехать:

type_time

Тип ордера по по истечению. Значение может быть одним из значений ENUM_ORDER_TYPE_TIME

expiration

Срок истечения отложенного ордера (для ордеров типа ORDER_TIME_SPECIFIED)

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

 Эти две строки можно не писать вообще. 

 Можно писать одну, к примеру: request.type_time =ORDER_TIME_DAY;  в этом случае ордер будет удален через 1 день,

 еще варианты: https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_type_time

В строке  request.expiration = TimeCurrent()+6*3600;// последнее известное время сервера + кол.часов*часы

вы уточняете время действия ордера. 

https://www.mql5.com/ru/articles/481 

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

Помогите новичку, please.

Поставил альпари мт5, оптимизация идет как в положено, т.е. все графики рисуются и отчеты формируются и с историей все отлично. После установки на тот же комп Инсты МТ5, закачки туда тестовой истории, пропадает вывод графиков и результатов оптимизации  и в Инсте, и в Альпари. После того, как все снес и установил только Альпари, снова стала прекрасно работать оптимизация, но после установки Инсты на другой комп в локальной сети вывод результатов оптимизации снова пропадает.

Во всех случаях один и тот же эксперт, журнал завален сообщениями о best resalt, используюся только локальные агенты.

Кто-нибудь пользует одновременно два или более мт5 на одном компе или в локалке или может сталкивался с такой проблемой?




 
Crucian:

 Эти две строки можно не писать вообще.

 Можно писать одну, к примеру: request.type_time =ORDER_TIME_DAY;  в этом случае ордер будет удален через 1 день,

Понятно. Я так и думал, при модификации.


request.type_time =ORDER_TIME_DAY  - я так понимаю, это тождественно -

input int t = 24;

request.expiration = TimeCurrent()+t*3600;

 
rosomah:

Понятно. Я так и думал, при модификации.


request.type_time =ORDER_TIME_DAY  - я так понимаю, это тождественно -

input int t = 24;

request.expiration = TimeCurrent()+t*3600;

 Я вам дал ссылку https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_type_time ,что для  request.type_time можно использовать 4 варианта:


ORDER_TIME_GTC
Ордер будет находится в очереди до тех пор, пока не будет снят

ORDER_TIME_DAY
Ордер будет действовать только в течение текущего торгового дня

ORDER_TIME_SPECIFIED
Ордер будет действовать до даты истечения

ORDER_TIME_SPECIFIED_DAY
Ордер будет действовать до 00:00 указанного дня. Если это время не попадает на торговую сессию, истечение наступит в ближайшее торговое время. 

И дал ссылку на статью https://www.mql5.com/ru/articles/481  , в которой приведен код торгового запроса при модификации ордера с использованием готового класса  CTrade https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade

Код этот:

//--- тикет ордера указан только для примера, его нужно получить
   ulong ticket=1234556;
//--- символ также указан для примера, его нужно получить
   string symbol="EURUSD";
//--- количество знаков после запятой
   int    digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- значение пункта
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
//--- получим цену покупки
   double price=SymbolInfoDouble(symbol,SYMBOL_ASK);
//--- вычислим и нормализуем уровни SL и TP
//--- на самом деле они должны вычисляться в зависимости от типа ордера
   double SL=NormalizeDouble(price-1000*point,digits);
   double TP=NormalizeDouble(price+1000*point,digits);
   //--- зададим срок действия одни сутки
   datetime expiration=TimeTradeServer()+PeriodSeconds(PERIOD_D1); //!!!  
//--- все готово, делаем попытку модифицировать ордер 
   if(!trade.OrderModify(ticket,price,SL,TP,ORDER_TIME_GTC,expiration)) //!!!
     {
      //--- сообщим о неудаче
      Print("Метод OrderModify() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
     }
   else
     {
      Print("Метод OrderModify() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
     }

Про время в MQL5 читайте тут:https://www.mql5.com/ru/articles/599 .

Пользуйтесь поиском, читайте статьи и документацию. 


 

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

всем привет!

просьба тапками не кидать, но поиском не нашел...

не открываются позиции у советника... выдает вот что

2013.12.23 03:00:01 Core 1 2013.12.20 23:30:00   failed instant buy 1.00 EURUSD at 1.36720 sl: 1.06720 tp: 1.46720 [Invalid request]

и 

2013.12.23 03:00:01 Core 1 2013.12.20 23:30:00   Alert: Запрос на установку ордера Buy не выполнен - код ошибки:4756

 

в чем может быть дело?

 

mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение

         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // последняя цена ask

         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss

         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit

         mrequest.symbol = _Symbol;                                            // символ

         mrequest.volume = Lot;                                                // количество лотов для торговли

         mrequest.magic = EA_Magic;                                            // Magic Number

         mrequest.type = ORDER_TYPE_BUY;                                       // ордер на покупку

         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего

         mrequest.deviation=100;                                               // проскальзывание от текущей цены

         //--- отсылаем ордер

         OrderSend(mrequest,mresult); 

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
Armen:

Армен, пожалуйста.  Вставляй код в рамку для кода.  Ctrl+"5".  А ещё лучше нажать кнопку SRC в редакторе, вставить в окошко и нажать [ok]

А то ничё не понятно. :(

 
MetaDriver:

Армен, пожалуйста.  Вставляй код в рамку для кода.  Ctrl+"5".  А ещё лучше нажать кнопку SRC в редакторе, вставить в окошко и нажать [ok]

А то ничё не понятно. :(

сорри, ща  переделаю...
 

всем привет!

просьба тапками не кидать, но поиском не нашел...

не открываются позиции у советника... выдает вот что

2013.12.23 03:00:01 Core 1 2013.12.20 23:30:00   failed instant buy 1.00 EURUSD at 1.36720 sl: 1.06720 tp: 1.46720 [Invalid request]

и 

2013.12.23 03:00:01 Core 1 2013.12.20 23:30:00   Alert: Запрос на установку ордера Buy не выполнен - код ошибки:4756

 

в чем может быть дело?

         mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение

         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);           // последняя цена Bid

         mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss

         mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit

         mrequest.symbol = _Symbol;                                            // символ

         mrequest.volume = Lot;                                                // количество лотов для торговли

         mrequest.magic = EA_Magic;                                            // Magic Number

         mrequest.type = ORDER_TYPE_SELL;                                       // ордер на продажу

         mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего

         mrequest.deviation=100;                                               // проскальзывание от текущей цены

         //--- отсылаем ордер

         OrderSend(mrequest,mresult);

 
Armen:

всем привет!

просьба тапками не кидать, но поиском не нашел...

не открываются позиции у советника... выдает вот что...

Лучше отправляйте приказ на открытие позиции/ордера так как расписано в статье Торговые операции на MQL5 - это просто.
 
paladin800:
Лучше отправляйте приказ на открытие позиции/ордера так как расписано в статье Торговые операции на MQL5 - это просто.
проблема в том, что мне надо переделать (немного) готовый сов... :(
Причина обращения: