Чемпионат Automated Trading Championship 2010 стартовал! - страница 14

 
Gorez:

снова посмотрел внутри кода....ВЕДЬ есть же разрешение на работу

bool            AUDUSD_TradeUp        = true;    

НИ ОДНОЙ сделки по символу...ни на тесте , ни на АТС2010.... загадка природы.... :/ надо выбрать время посмотреть еще раз..но что интересно, перед отправлением последней версии робота , сделки на тестере дома были :)


У меня на EURUSD на АТС2010 робот пару сделок пропустил и даже усом не пошевелил. При тестировании было все ОК. При старте советник выдал сообщение, что торговля разрешена.
 
Yedelkin:

А почему Ваш эксперт уже дважды перезапускался ? И откуда stop-out ? Убыток вроде бы небольшой по позиции.
 
C-4:


В правилах соревнований явно указано, что исполнение будет происходить с реквотами. Это означает, что не зависимо от параметра diviation сервер время от времени будет слать отказы принять ордер. Лично я готовился к подобной ситуации. Во-первых, всегда обновляю цены непосредственно перед отправкой заявки, во вторых, я засыпаю на целых семь секунд после совершение операции  (ибо в правилах указано исполнение до 7 секунд). Если за это время произошла реквота и заявка не была принята, повторяю попытку еще два раза (с аналогичным обновлением и засыпанием), если и в этом случае был получен отказ, дожидаюсь следующего тика и уже на нем запускаю повтор процедуры. Все это делает специализированная система циклов.

Вообще странно слышать подобные вопросы, так как ответы на них весьма очевидны и должны быть заранее проработаны разработчиками. 

Не думаю, что после реквоты нужна задержка. Наоборот, нужно как можно быстрее послать запрос с новыми ценами. Ведь как при ручной работе ? Просто жмёте кнопку 'Принять новые цены' и никакой задержки. У меня лично нет задержки после реквот.

Вот, с шестой попытки закрыл позицию:

2010.10.05 12:01:02 Short position by EURUSD to be closed of market
2010.10.05 12:00:59 Error closing position by EURUSD : 'Requote'
2010.10.05 12:00:59 CTrade::PositionClose::OrderSend: Requote
2010.10.05 12:00:57 Error closing position by EURUSD : 'Requote'
2010.10.05 12:00:57 CTrade::PositionClose::OrderSend: Requote
2010.10.05 12:00:54 Error closing position by EURUSD : 'Requote'
2010.10.05 12:00:54 CTrade::PositionClose::OrderSend: Requote
2010.10.05 12:00:50 Error closing position by EURUSD : 'Requote'
 

Действие сервера (и терминала) надо  будеть изправлено ! Нет только на чемпионата....   Это ошибка ! (УМИШЛЕННАЯ)     

  Если цена в диапазон deviation - вставит !   Что значить  "устаревшея" , когда она актуалная ?  (+/- deviation)

 Я пропустиль предстощие изумительние  реквот на чемпионата и сейчас они мешают  Объём и Тип  ордерам...

 Ошибка - моя, понятно... 

 
arnautov:

Советник выставил два ордера отложенных вместо одного.

Такое впечатление что есть момент времени когда приказ на установку уже ушел, а orderstotal еще ни хрена этого ордера не видит.

Я перед чемпионатом проверяя на демо сталкивался с такой фигней, думал поборол задержкой после установки ордера

оказывается ни фига.

Интересно бы услышать разработчиков по этому поводу.

Или я один с такой байдой столкнулся?

Многие вещи в терминале работают асинхронно, насколько, известно только разработчикам. Я тоже с таким сталкивался на демо.

Или вот пример с чемпионата. Уровень маржи - хороший показатель загрузки депозита. Поэтому после совершения сделки вывожу этот показатель в журнал. Вот отрывок:

2010.10.05 08:44:40     Margin Level= 0.00
2010.10.05 08:44:40     Short Position by EURUSD to be opened
2010.10.05 08:44:37     vol= 1.5
2010.10.05 08:44:09     Short position by EURUSD to be closed of stop-loss
2010.10.05 07:39:29     Short position by EURUSD to be modified withoutloss
2010.10.04 20:00:29     Margin Level= 521.15
2010.10.04 20:00:29     Short Position by EURUSD to be opened
2010.10.04 20:00:26     vol= 1.4
2010.10.04 15:15:31     Short position by EURUSD to be closed of stop-loss

Там, где жёлтым, правильное значение, где зелёным - 0, т.е. то значение, которое было до открытия позиции. Само значение уровня маржи получаю с помощью

printf("Margin Level= %.2f",m_account.MarginLevel());

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

Как видим, не помогло.

P.S.: Хотя, судя по времени , задержка не попала в чемпионатный вариант. Но всё равно остаётся вопрос по синхронизации.

 
Valmars:
А почему Ваш эксперт уже дважды перезапускался ? И откуда stop-out ? Убыток вроде бы небольшой по позиции.

1. Насчёт первой перезагрузки объяснение простое:

https://www.mql5.com/ru/forum/2236/page5/#comment_26915

https://www.mql5.com/ru/forum/2236/page6/#comment_26969

https://www.mql5.com/ru/forum/2236/page7/#comment_26989

 2. Насчёт второй презагрузки - не знаю. По времени она может корреллировать и со временем стоп-аута, и с рассмотрением проблемы https://www.mql5.com/ru/forum/2248 

 3. Стоп-аут. Получается, у меня первый антирекорд? :) Менее, чем за сутки. Приз - в студию :) Если серьёзно, то ночью с объёмом позиции 9,4 уровень доходил до 65%. А когда утром новая позиция выдала объём более 12, сервер, по всей видимости, такой наглости потерпеть не смог.

Чемпионат Automated Trading Championship 2010 стартовал!
Чемпионат Automated Trading Championship 2010 стартовал!
  • www.mql5.com
Чемпионат Automated Trading Championship 2010 стартовал!
 
Yedelkin:
Нет, про такие тонкости я и не знал. Но, как видим, arnautov'у это не помогло.

Я вот так пытался побороть

  OrderSend(request,result);  
  ulong iTicket=result.order;
  ulong l=0;
  for (int i=0;i<10;i++)
   {
   int z=OrdersTotal();
   for (int j=0;j<z;j++)
    {
    l=OrderGetTicket(j);
    if (l>0)
       if (l==iTicket)
         return(true);
    }
   Sleep(1000);
   }

 
Yedelkin:
Это может произойти и тогда, когда одна и та же функция OrderSend() с тождественными параметрами вызывается на двух последовательно обрабатываемых тиках. А эксперт при этом по какой-то причине не видит, что на первом обрабатываемом тике ордер уже выставлен.

Я тоже так думаю

И вот эта причина меня очень интересует

 

У Беркута:



2010.10.05 19:10:18 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:16 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:16 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:15 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:15 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:13 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:12 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:12 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:10 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:09 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:09 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:08 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:08 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:07 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:06 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:05 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:04 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 19:10:02 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 12:20:23 CTrade::PositionOpen::OrderSend: Requote
2010.10.05 12:20:22 CTrade::PositionOpen::OrderSend: Requote
 

А как насчет моего вопроса? бид равен запросу на продажу, но реквота. что-то тут не так. имхо

 

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