Советник не открывает ордер

 

Есть советник, торгующий на 15мин графике gbpusd по сигналам часовых графиков. По идее, должен открывать позиции каждые 15 мин после выхода сигнала. Код проверки нового бара:

static int prevtime = 0;

...

int start()
{
if (Time[0] == prevtime) return(0);

prevtime = Time[0];

...

Однако, советник открывает позиции не каждые 15мин, 4 раза за час, а реже, то 2 раза, то 3 раза за час. Не могу понять причину. Вроде уже и slippage 15 пунктов. Движения сильного нет, почему не происходит открытия ордера? Торгую в ДЦ Лайтфорекс. На паре eurjpy открывал мгновенно, gbpusd как бы подвисает.

Помогите советом.

 
Посмотрите журнал, какие там записи?
 
zxc >>:
Посмотрите журнал, какие там записи?
00:59:57 '89378': instant order sell 0.20 GBPUSD at 1.5464 sl: 1.5509 tp: 0.0000
00:59:58 '89378': request was accepted by server
00:59:58 '89378': request in process
01:00:00 '89378': order was opened : #28161492 sell 0.20 GBPUSD at 1.5464 sl: 1.5509 tp: 0.0000
01:14:58 '89378': modify order #28161492 sell 0.20 GBPUSD at 1.5464 sl: 1.5509 tp: 0.0000 -> sl: 1.5500 tp: 0.0000
01:14:58 '89378': request was accepted by server
01:14:59 '89378': request in process
01:15:01 '89378': order #28161492 sell 0.20 GBPUSD at 1.5464 was modified -> sl: 1.5500 tp: 0.0000
01:29:57 '89378': modify order #28161492 sell 0.20 GBPUSD at 1.5464 sl: 1.5500 tp: 0.0000 -> sl: 1.5486 tp: 0.0000
01:29:57 '89378': request was accepted by server
01:29:58 '89378': request in process
01:30:00 '89378': order #28161492 sell 0.20 GBPUSD at 1.5464 was modified -> sl: 1.5486 tp: 0.0000
01:30:00 '89378': instant order sell 0.20 GBPUSD at 1.5453 sl: 1.5498 tp: 0.0000
01:30:00 '89378': request was accepted by server
01:30:01 '89378': request in process
01:30:03 '89378': order was opened : #28163145 sell 0.20 GBPUSD at 1.5453 sl: 1.5498 tp: 0.0000
01:45:17 '89378': instant order sell 0.20 GBPUSD at 1.5486 sl: 1.5531 tp: 0.0000
01:45:18 '89378': request was accepted by server
01:45:18 '89378': request in process

01:45:21 '89378': order was opened : #28164029 sell 0.20 GBPUSD at 1.5486 sl: 1.5531 tp: 0.0000


Вот, за час было открыто 3 ордера. (Соответственно, каждые 15 мин изменяется стоп-лосс). В 01:15 даже запроса на открытие не было.

Ещё заметил, что запрос на открытие в 00:59:57 произошёл, а не в 01:00:..., с чем это связано может быть???

 
roman_mak писал(а) >>
00:59:57 '89378': instant order sell 0.20 GBPUSD at 1.5464 sl: 1.5509 tp: 0.0000
00:59:58 '89378': request was accepted by server
00:59:58 '89378': request in process
01:00:00 '89378': order was opened : #28161492 sell 0.20 GBPUSD at 1.5464 sl: 1.5509 tp: 0.0000
01:14:58 '89378': modify order #28161492 sell 0.20 GBPUSD at 1.5464 sl: 1.5509 tp: 0.0000 -> sl: 1.5500 tp: 0.0000
01:14:58 '89378': request was accepted by server
01:14:59 '89378': request in process
01:15:01 '89378': order #28161492 sell 0.20 GBPUSD at 1.5464 was modified -> sl: 1.5500 tp: 0.0000
01:29:57 '89378': modify order #28161492 sell 0.20 GBPUSD at 1.5464 sl: 1.5500 tp: 0.0000 -> sl: 1.5486 tp: 0.0000
01:29:57 '89378': request was accepted by server
01:29:58 '89378': request in process
01:30:00 '89378': order #28161492 sell 0.20 GBPUSD at 1.5464 was modified -> sl: 1.5486 tp: 0.0000
01:30:00 '89378': instant order sell 0.20 GBPUSD at 1.5453 sl: 1.5498 tp: 0.0000
01:30:00 '89378': request was accepted by server
01:30:01 '89378': request in process
01:30:03 '89378': order was opened : #28163145 sell 0.20 GBPUSD at 1.5453 sl: 1.5498 tp: 0.0000
01:45:17 '89378': instant order sell 0.20 GBPUSD at 1.5486 sl: 1.5531 tp: 0.0000
01:45:18 '89378': request was accepted by server
01:45:18 '89378': request in process

01:45:21 '89378': order was opened : #28164029 sell 0.20 GBPUSD at 1.5486 sl: 1.5531 tp: 0.0000

Вот, за час было открыто 3 ордера. (Соответственно, каждые 15 мин изменяется стоп-лосс). В 01:15 даже запроса на открытие не было.

Ещё заметил, что запрос на открытие в 00:59:57 произошёл, а не в 01:00:..., с чем это связано может быть???

А тики то хоть были?

 
Vinin >>:

А тики то хоть были?

Я в этот момент спал:-) и за тики не ручаюсь. Однако, рынок был довольно волатильный вечером и наверняка тики должны были быть. К тому же, это 15 мин свечки. Думаю, при редких тиках советник открыл бы позицию в течение 15 мин наверняка. Значит, дело в другом.

Может, как-нибудь изменить код проверки нового бара или проверять по-другому?

Верный ли алгоритм программы?

Может быть, нижепреведенная проверка более надежна?

//+------------------------------------------------------------------+
//| возвращает true если появлися новый бар, иначе false             |
//+------------------------------------------------------------------+
bool isNewBar()
  {
//----
   bool res=false;
   if (expertBars!=Bars)
      {
      expertBars=Bars;
      res=true;
      }
//----
   return(res);
  }


http://www.alpari.ru/ru/articles_mql4/24.html

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

Тенденция печальная, ордер не открывается во второй пятнадцатиминутке! (Хотя на тестере все 4 ордера открывает). А также в третьей 15минутке, если движение сильное. Теперь вообще ничего не понимаю. Наверное с кодом замудрил, буду разбираться.

Vinin, как фиксировать локальное и серверное время? Может, ссылку дадите?

 

Возможно достаточно будет фиксировать TimeLocal(), TimeCurrent() и Volume[] на каждом тике. И желательно сохранять в файл для последующего анализа.

 
 
Роман, подскажите, пожалуйста как Вы разобрались со своей проблемой? У меня аналогичная сложность - советник не открывает ордера, хотя позже в тестере за это же время - уже открываются.
Причина обращения: