Я вывел хомера 3-х приказов, от этого не стало понятнее ...
OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
Print("First Order #= ",OrderTicket());
OrderSelect(2,SELECT_BY_POS,MODE_HISTORY);
Print("Second Order #= ",OrderTicket());
OrderSelect(3,SELECT_BY_POS,MODE_HISTORY);
Print("Third Order #= ",OrderTicket());
2013.04.26 15:59:16 test USDCHF,M30: Third Order #= 178555065
2013.04.26 15:59:16 test USDCHF,M30: Second Order #= 178555081
2013.04.26 15:59:16 test USDCHF,M30: First Order #= 178555092
Я вывел хомера 3-х приказов, от этого не стало понятнее ...
OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
Print("First Order #= ",OrderTicket());
OrderSelect(2,SELECT_BY_POS,MODE_HISTORY);
Print("Second Order #= ",OrderTicket());
OrderSelect(3,SELECT_BY_POS,MODE_HISTORY);
Print("Third Order #= ",OrderTicket());
2013.04.26 15:59:16 test USDCHF,M30: Third Order #= 178555065
2013.04.26 15:59:16 test USDCHF,M30: Second Order #= 178555081
2013.04.26 15:59:16 test USDCHF,M30: First Order #= 178555092
Могу только предположить, что массив истории ордеров сортирован по времени закрытия ордеров, т.к. именно при закрытии ордер попадает в историю.
Вам надо делать полный перебор с поиском ордера с наименьшим временем открытия, а из ордеров с одинаковым временем открытия выбирать с наименьшим тикетом.
Как-то так.
Спасибо !!! Не заметил такой закономерности
У меня вроде ве нормально:
Проверил с помощью простейшей прогаммки:
int init() { int ord=OrdersHistoryTotal(); for(int i=0; i<ord; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) Print("OrderPos=",i," OrderTicket=",OrderTicket()); else Print("Error Select pos=",i); } return(0); } int deinit() { return(0); } int start() { return(0); }
тот же build 482
В MQL4 OrderSelect работает со списком ордеров, которым пользователь может сам управлять. По этой причине даже трехлетняя история счета может быть недоступна программе, если пользователь настроил показ истории только за "сегодня". Этот подход изменен в МТ5, а в МТ4 следует с таким нюансом считаться.
P. S. В экспертах, в принципе, лучше не делать ставку на историю счета (в смысле торговать на основании этих данных), т. к. брокеры, частенько архивируют историю счета, что приводит к появлению одной записи вместо нескольких сотен или тысяч.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, я использую "MT4, Build 482", сегодня обнаружил, что функция OrderSelect(1,SELECT_BY_POS,MODE_HISTORY) не возвращает первый приказ в истории, а возвращает приказ из середины списка.
OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
Print("First Order #= ",OrderTicket());
Результат:
2013.04.26 15:51:06 test USDCHF,M30: First Order #= 178555092
A должен быть: 178532001
Большая просьба подскажите я не прав или это ошибка Терминала ?