Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен торговый робот? Закажи его в сервисе Фриланс!
Alexey Volchanskiy
14051
Alexey Volchanskiy 2010.11.29 01:11 

Сегодня обнаружил 2 странные вещи

1. В режиме визуализации тестер под Windows 7 x64 работает в 7,5 раз быстрее, чем на Windows XP x86 !!

Проверял на советнике с секундомером в руке, чудеса

2. А это похоже глюк.. Открывается в тестере отложенник SellStop, номер тикета = 1

функции OrderSelect(ticket, SELECT_BY_TICKET, MODE_HISTORY) и OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)

обе выдают true!! Тикет ордера при срабатывании не меняется и равен 1

Более того, ордер закрывается по ТП, все равно обе говорят true насчет тикета 1. При этом OrdersTotal() и OrdersHistoryTotal()

выдают правильные значения.

Вот функция выдачи инфы

void PrintComments(double bid, int idx)
{
   OrderSelect(Tickets[idx], SELECT_BY_TICKET, MODE_TRADES);
   Comment("фаза=", phase, "  bid=", bid, "  min=", DoubleToStr(min, 5), "  max=", DoubleToStr(max, 5), "  idx=", idx, "  Tickets[idx]=", Tickets[idx], 
           "  TicketsState=", TicketsState[idx], " TicketsCmd=", TicketsCmd[idx], "  TicketsPrice=", TicketsPrice[idx], "  SL=", TicketsSL[idx], 
           "  TP=", TicketsTP[idx], "  OrderSelect_trade=", OrderSelect(Tickets[idx], SELECT_BY_TICKET, MODE_TRADES), "  OrderSelect_hist=", 
           OrderSelect(Tickets[idx], SELECT_BY_TICKET, MODE_HISTORY), "  OrdersTotal()=", OrdersTotal(), "  OrdersHistoryTotal=", OrdersHistoryTotal());
}

Сборка последняя, 228. Попробовал на всякий случай по Win7 и Win XP, результат одинаковый.

вот картинки





Можете прояснить ситуацию?

Victor Nikolaev
Модератор
14061
Victor Nikolaev 2010.11.29 02:55  

bool OrderSelect( int index, int select, int pool=MODE_TRADES)
Функция выбирает ордер для дальнейшей работы с ним. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Параметр pool игнорируется, если ордер выбирается по номеру тикета. Номер тикета является уникальным идентификатором ордера. Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых позиций терминала. Отличить открытую позицию от отложенного ордера можно по типу ордера. Если время закрытия ордера не равно 0, то ордер является закрытым или удаленным отложенным и был выбран из истории терминала. Отличить закрытый ордер от удаленного отложенного также можно по типу ордера.

Alexey Volchanskiy
14051
Alexey Volchanskiy 2010.11.29 06:16  

To Vinin - спасибо, забыл я эту деталь...

Остался вопрос с разницей в скорости :)

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