Необходима помощь в написание простого советника

 

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

Цикличная установка и закрытие 2-х противоположных отложенных ордеров в заданный интервал времени на заданном расстоянии от рыночной цены. 

Переменные:

1. Временной период (t) установление и закрытие ордеров (раз в 5 минут, раз в 15 минут…)

Программа:

1. Выставляются отложенные ордера покупка/продажа (на заданном расстоянии от рыночной цены на момент открытия).
2. По истечению заданного временного периода (t), удаляются ( и закрываются) все имеющиеся ордера на продажу, покупку. 

3. Повторяет цикл (к пункту 1).


Самому удалось создать половину:

int start()  
{  
double bid =MarketInfo("EURUSD",MODE_BID); 
double ask =MarketInfo("EURUSD",MODE_ASK);  
double point =MarketInfo("EURUSD",MODE_POINT);
OrderSend("EURUSD",OP_BUYSTOP,0.1,Ask+10*Point,3,bid*0,bid*0);  
{
OrderSend("EURUSD",OP_SELLSTOP,0.1,Ask-10*Point,3,bid*0,bid*0);  
}
   
int slippage=2;
for (int i=OrdersTotal()-1; i>=0; i--)
 { 
  if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
  if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
  if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
  if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
  if (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket());
  if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket());
  if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket());
  if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket());
}

return;
}

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

З.Ы. Весь день искал сам здесь, но конкретики нет, есть таймеры разные, но как их прикрепить и использовать не могу разобраться.



 
Тут можно брать время воспользоваться функцией OrderOpenTime(). То есть в цикле, где происходит закрытие ордеров проверяешь условие TimeCurrent()-OrderOpenTime()>=15*60, если истинно, то закрываешь. Либо при открытии ордеров сохраняешь время в глобальной переменной, и опять в цилке условие проверки..
 

У Игоря смотрели ?


В назначенное время советник выставляет стоповые ордера BuyStop и SellStop. Расстояние установки ордеров от текущих рыночных цен настраиваемое. Если при открытии нового бара ни один ордер не сработал, то советник их модифицирует. Передвинет, чтобы они снова оказались на нужном расстоянии от рынка. Таким образом, текущий таймфрейм определяет частоту модификации несработавших ордеров. Надо каждые 5 минут, ставьте советник на М5. Надо каждый час, ставьте на Н1. При срабатывании одного ордера другой удаляется. Позиция закрывается либо по стопу/тейку, либо в установленное время.



http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=39
 
Спасибо большое.
Причина обращения: