Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть свободные компьютеры? Подключи их к MQL5 Cloud Network и заработай!
Forex Trader
114376
Forex Trader 2006.11.10 20:26 
Что именно нужно передавать в качестве "Срок истечения отложенного ордера"?

- дату, по истечении которой ордер отменится?
- дату и время до секунд, по истечении которых ордер отменится?


В документации не понятно описано (до меня например не доходит..).

Если только дату, тогда как передать например 10.11.2006?

И что эта дата будет означать:
- отмена ордера по истечении этой даты
или
- отмена ордера если эта дата начинается(конец предыдущего дня)?


А если передается время с секундми, то разве есть такие типы ордеров?
Хотя если МТ работает именно так то это очень круто!
Forex Trader
114376
Forex Trader 2006.11.10 20:59  
10.11.2006=10.11.2006 00:00

Я так думаю это связано с тем что преобразовать к типу datatime Вам легче всего будет через функцию StrToTime, а она сделает следующее

var3=StrToTime("2003.8.12");  // возврат даты с полуночным временем "00:00"



Можно приведение типа писать самому и тогда время будет таким какое Вы сами сделаете.


Если Вы поставите это условие не позденее чем за 15 мин до его наступления (ближе не даст брокер), то ордер удалится в 10.11.2006 00:00

ЗЫ В эксперте я этим свойством ордера не пользуюсь, а использую OrderDelete().

Forex Trader
114376
Forex Trader 2006.11.10 23:45  
Спасибо, розобрался!
Но сразу нашел баг в тестере!

При тестировании по сформировавшимся барам и выставлении лимитных (стоп не пробовал) ордеров со сроком истечения конец текущего дня (или бара, тоже пробовал: tExpiration=iTime(NULL,0,0)+(Period()*60)-1)
И ПРИ ДОСТИЖЕНИИ ЦЕНОЙ ОРДЕРА этот отрер НЕ СРАБАТЫВАЕТ.
А просто удаляется в конце бара и все!
Так не должно быть, т.к. ордер выставляется по первой цене (Open) и после этого тестер ДОЛЖЕН пройти OLHC.
РАЗРАБОТЧИКИ: ПОЖАЛУЙСТА ПРОВЕРЬТЕ!!!
Forex Trader
114376
Forex Trader 2006.11.11 00:47  
Да , так и есть. Проверял на Фунте на D1 на всех моделях. Только на Open Price ордер не срабатывал .
//+------------------------------------------------------------------+
//|                                              CheckExpiration.mq4 |
//|                                                             Rosh |
//|                             http://www.metaquotes.ru/forum/7860/ |
//+------------------------------------------------------------------+
#property copyright "Rosh"
#property link      "http://www.metaquotes.ru/forum/7860/"

//---- input parameters
extern int       DayOpen=26;
extern int       MonthOpen=10;
extern int       YearOpen=2006;
extern double    PriceLimitSell=1.891;

bool OrderDone=false;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   datetime TimeExpiration;
   int ticket;
   
   if (Symbol()!="GBPUSD") return;
   if (TimeYear(Time[0])<YearOpen) return;
   if (TimeMonth(Time[0])<MonthOpen) return;
   if (TimeDay(TimeCurrent())<DayOpen) return;
   if (OrderDone) return;
   if (OrdersTotal()==0)
      {
      //TimeExpiration=iTime(NULL,0,0)+Period()*60-1;
      TimeExpiration=Time[0]+Period()*60-1;
      Print("Ставим ордер с истечением в ",TimeToStr(TimeExpiration,TIME_DATE|TIME_SECONDS));
      ticket=OrderSend(Symbol(),OP_SELLLIMIT,0.1,PriceLimitSell,5,0,0,"SellLimit",0,TimeExpiration,Red);
      if (ticket>0)
         {
         Print("ордер установлен");
         OrderDone=true;
         }
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+
Forex Trader
114376
Forex Trader 2006.11.11 11:25  
[quote]Да , так и есть. Проверял на Фунте на D1 на всех моделях. Только на Open Price ордер не срабатывал .

[quote]Так это ошибка или такой замысел?
На реальных данных или в режиме с внутри барным моделированием срабатывать бутет конечно.

Но как же быть с оптимизацией по сформир.барам.

Это будет исправлено?
Forex Trader
114376
Forex Trader 2006.11.13 12:15  
Всё правильно. Предположим, время истечения попало на середину бара. Так как в модели "по ценам открытия" нет данных о движении цены внутри бара, то нельзя сделать вывод, сработали ли стопы до истечения или нет.

В тестере сначала проверяется время истечения, а потом уже стопы. Этот алгоритм менять не будем.
Если Вы используете такие тонкие настройки, как время истечения, то и тестируйте на более тонких моделях.
Forex Trader
114376
Forex Trader 2006.11.13 13:00  
Можно ли задавать "время истечения" для ордеров OP_BUY(OP_SELL)?
В документации нет ничего запрещающего делать это.
Однако это не работает!
Хотя было бы круто чтобы после окончания "время истечения" выполнилась операция OrderClose(...) по рыночной цене!
Forex Trader
114376
Forex Trader 2006.11.13 13:22  
Можно ли задавать "время истечения" для ордеров OP_BUY(OP_SELL)?

нет
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий