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

 

Предложения по сайту чемпионата:

  1. Все обсуждения сделать сортируемыми от нового к старому. Ну очень неудобно каждый раз переходить на последнюю страницу (общие "Комментарии" уже так сделаны).
  2. Возле названия советника отображать его описание, которое дал участник. Иначе зачем его вообще давали?
  3. Имя участника залинковать с его профилем на mql5, иначе туда попасть затруднительно.
  4. В обсуждениях продублировать номера страниц в верхней части (как на форуме).
 

mql5 язык добротный, но ошибка в 1 цифре может привести к краху, не могу понять какой трейлинг у меня установлен на эксперте чемпионата, не могу его скачать, но скорее что трейлинг там стоит 45(450) пунктов, а тейкпрофит= 50(500) пунктов.  Вот и начинает траллить аж.............. короче и получается минус.... Вот щас сделка +18 пунктов, ну и включи трал на 10, я не претендовал на долгосрочку, мне бы интрадей я был бы доволен.


Организаторы, как можно посмотреть внутри кода, сколько на чемпе я поставил параметр TSP ? Очень Важно,

 
Vladon:

Организаторы, как можно посмотреть внутри кода, сколько на чемпе я поставил параметр TSP ? Очень Важно, 

Посмотрите исходный код страницы, там есть ссылка на код эксперта, я свой так скачал, тоже забыл что у меня выставлено.
 
LeoV: Скажите, почему на чемпионате в 2008 году практически точно такой же мультивалютный эксперт, с точто такой же подкачкой истории по другим, не открытым инструментам, как и в этом чемпионате(2010), нормально отработал, без ошибок? Чем отличается подкачка истории в МКЛ5 от МКЛ4?
Сложный вопрос? )))
 
WETErok:
Посмотрите исходный код страницы, там есть ссылка на код эксперта, я свой так скачал, тоже забыл что у меня выставлено.
d том то и дело что не качается
 

На открытии недели, у моего советника на gbpusd приключилась офф-квота (off-quotes):

2010.10.11 00:00:01 '630191' : failed buy limit 0.70 GBPUSD at 1.59380 tp: 1.59570 [No prices]
2010.10.11 00:00:00 '630191' : buy limit 0.70 GBPUSD at 1.59380 tp: 1.59570

И дело не в том, что эта сделка принесла бы пару сотен к балансу - это вообще-то не так уж и важно, тем более, off-quotes есть off-quotes (т. е., открыть ничего всё-равно нельзя). Хотелось бы разобраться (для себя) на будущее.

В журнале эксперт выдал следующую информацию:

 2010.10.11 00:00:01    tr.tp:1.5957
 2010.10.11 00:00:01    tr.action:5
 2010.10.11 00:00:01    tr.price:1.5938
 2010.10.11 00:00:01    tr.type:2
 2010.10.11 00:00:01    tr.volume:0.7
 2010.10.11 00:00:01    tr.symbol:GBPUSD
 2010.10.11 00:00:01    Line: 194
 2010.10.11 00:00:01    Ordersend Err:10021

Дело в том, что везде  в коде (кроме одного места, о чём каюсь, но, тем не менее там есть другие проверки) используется следующая конструкция:

      if(DebugOrderCheck(__LINE__,tr,tres))
         DebugOrderSend(__LINE__,tr,res);

 И в 194-й строке также.

 Исходные коды функций ниже:

bool DebugOrderSend(int line,MqlTradeRequest &tr,
                    MqlTradeResult &res)
  {
   bool yes;
   double vol;
   int _;
   if(((OrdersTotal()==12) || 
      (SymbolInfoDouble(tr.symbol,SYMBOL_VOLUME_MIN)>tr.volume) || 
      (5<tr.volume)) && (tr.action==TRADE_ACTION_PENDING))
      return(false);
   if(tr.action==TRADE_ACTION_PENDING)
     {
      vol=0;
      if(PositionSelect(tr.symbol))
        {
         if(((PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) && 
            (tr.type==ORDER_TYPE_BUY_LIMIT)) || 
            ((PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) && 
            (tr.type==ORDER_TYPE_SELL_LIMIT)))
            vol=PositionGetDouble(POSITION_VOLUME);
        }

      for(_=OrdersTotal()-1; _>=0;_--)
         if(OrderSelect(OrderGetTicket(_)) && 
            (OrderGetString(ORDER_SYMBOL)==tr.symbol))
           {
            if(OrderGetInteger(ORDER_TYPE)==tr.type) vol+= OrderGetDouble(ORDER_VOLUME_INITIAL);
           }
      if(vol+tr.volume>15) tr.volume=15-vol;
      if(tr.volume > 5) return(false);
      if(tr.volume<0.1) return(false);
     }
   yes=OrderSend(tr,res);
   if(!yes)
     {
      Print("Ordersend Err:",res.retcode);
      Print("Line: ",line);
      Print("tr.symbol:", tr.symbol);
      Print("tr.volume:", tr.volume);
      Print("tr.type:",tr.type);
      Print("tr.price:",tr.price);
      Print("tr.action:",tr.action);
      Print("tr.tp:",tr.tp);
     }
   return(yes);
  }
//------------------------------------------------------------------
bool DebugOrderCheck(int line,
                     MqlTradeRequest       &tr,
                     MqlTradeCheckResult   &tres
                     )
  {
   if(((OrdersTotal()==12) || 
      (SymbolInfoDouble(tr.symbol,SYMBOL_VOLUME_MIN)>tr.volume) || 
      (SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX)<tr.volume)) && 
      (tr.action==TRADE_ACTION_PENDING)) return(false);
   bool yes=OrderCheck(tr,tres);
   if(!yes)
     {
      if(tres.retcode==10025) return(false);
      Print("OrderCheck Err:",tres.retcode);
      Print("tr.Comment:",tres.comment);
      Print("Line: ",line);
      Print("Bid:", SymbolInfoDouble(tr.symbol, SYMBOL_BID));
      Print("Ask:", SymbolInfoDouble(tr.symbol, SYMBOL_ASK));
      Print("tr.Order: ", tr.order);
      Print("tr.symbol:", tr.symbol);
      Print("tr.volume:", tr.volume);
      Print("tr.type:",tr.type);
      Print("tr.price:",tr.price);
      Print("tr.action:",tr.action);
      Print("tr.tp:",tr.tp);
     }
   return(yes);
  }

 Почему-то OrderCheck вернул true. Это так задумано и я, как уже бывало, не дочитал хелп?

В хелпе написано: "В случае нехватки средств или ошибочно заполненных параметров функция возвращает false. В случае успешной базовой проверки структур (проверка указателей) возвращается true – это не является свидетельством того, что запрашиваемая торговая операция непременно выполнится успешно. Для получения подробного описания результата выполнения функции следует анализировать поля структуры result". Вроде всё понятно, только не понятно, какие именно коды ошибок могут быть в поле result, если OrderCheck возвращает true? Если есть возможность, расширьте справку по этому вопросу, пожалуйста. Понимаю ещё, что реквоту нельзя отловить с помощью OrderCheck, но офф-квоту за выходные можно бы и отловить (имхо, конечно)

 

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
notused:Понимаю ещё, что реквоту нельзя отловить с помощью OrderCheck, но офф-квоту за выходные можно бы и отловить (имхо, конечно)


А что её отлавливать ? Посылайте повторный запрос в случае офф-квоте, и так пока цены не обновятся.

Офф-квоте выдаётся терминалом, если я не ошибаюсь, если в течении 1 минуты не получен ответ от сервера. В МТ4 - 3 минуты было.

 
Valmars:

А что её отлавливать ? Посылайте повторный запрос в случае офф-квоте, и так пока цены не обновятся.

Офф-квоте выдаётся терминалом, если я не ошибаюсь, если в течении 1 минуты не получен ответ от сервера. В МТ4 - 3 минуты было.

Ага и за выходные забьёте журнал 3000 записей про офф-квоте.
 
Urain:
Ага и за выходные забьёте журнал 3000 записей про офф-квоте.
С чего бы это? В выходные вообще не надо торговать. Пришёл первый тик - даём разрешение на торговлю.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5
 

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