Взять ордер, у которого время закрытия максимальное
int history(){ int time = 0;double profit = 0;//обьявляем необходимые нам переменные куда мы положим интересующие нас характеристики ордера for(int i = OrdersHistoryTotal();i>=0;i--){// Перебираем все закрытые ордера if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){//если ордер с таким номером (i) в списке закрытых ордеров есть ( не путать с тикетом) if(OrderSymbol() == Symbol()){//если выбранный ордер был открыт по нашей валютной паре if(time<OrderCloseTime()){//(сравниваем его с хранящимся в пероеменной time) time=OrderCloseTime();//если время закрытия ордера больше - ложим его в переменную profit=OrderProfit();//и заодно запоминаем прибыль ордера } } } } //по окончании этой процедуры в наших переменных будут сидет наибольшее время закрытия, и его профит. Или по нулям если история чистая. //теперь мы можем выставлять условия в зависимости от результата процедуры if(profit == 0 &&time == 0){//действия если история чистая} } if(profit >= 0){//действия если последний ордер был прибыльным, или нулевым} } if(profit < 0 ){//действия если последний ордер был убыточным} } return(0); }
int history(){ int time = 0;double profit = 0;//обьявляем необходимые нам переменные куда мы положим интересующие нас характеристики ордера for(int i = OrdersHistoryTotal();i>=0;i--){// Перебираем все закрытые ордера if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){//если ордер с таким номером (i) в списке закрытых ордеров есть ( не путать с тикетом) if(OrderSymbol() == Symbol()){//если выбранный ордер был открыт по нашей валютной паре if(time<OrderCloseTime()){//(сравниваем его с хранящимся в пероеменной time) time=OrderCloseTime();//если время закрытия ордера больше - ложим его в переменную profit=OrderProfit();//и заодно запоминаем прибыль ордера } } } } //по окончании этой процедуры в наших переменных будут сидет наибольшее время закрытия, и его профит. Или по нулям если история чистая. //теперь мы можем выставлять условия в зависимости от результата процедуры if(profit == 0 &&time == 0){//действия если история чистая} } if(profit >= 0){//действия если последний ордер был прибыльным, или нулевым} } if(profit < 0 ){//действия если последний ордер был убыточным} } return(0); }
Не будут.
for ( int i = OrdersHistoryTotal() - 1; i >= 0; i -- ) {...}
;), уже дважды на одни и те же грабли я наступаю - сохраняю у себя чужой код (этот код написал xRust ) и с одной и той же ошибкой выкладываю
Там еще область видимости:
Переменные time, profit внутри процедуры и вне - это разные переменные, не смотря на схожие названия. Те, что внутри, будут уничтожены при завершении процедуры и результат не сохранится.
Там еще область видимости:
Переменные time, profit внутри процедуры и вне - это разные переменные, не смотря на схожие названия. Те, что внутри, будут уничтожены при завершении процедуры и результат не сохранится.
конечно, внутри вызываемых ф-ций, область видимости переменных заканчивается при выходе из ф-ции, не знаю как в mql, на Delphi и пр. ЯВУ локальные переменные ф-ции создаются в стеке, при выходе из ф-ции данные переменных будут утеряны
в этой ф-ции, необходимо производить действия здесь:
if(profit >= 0){ }
где-то у себя я пробовал - ф-ция работала норм
Там еще область видимости:
Переменные time, profit внутри процедуры и вне - это разные переменные, не смотря на схожие названия. Те, что внутри, будут уничтожены при завершении процедуры и результат не сохранится.
конечно, внутри вызываемых ф-ций, область видимости переменных заканчивается при выходе из ф-ции, не знаю как в mql, на Delphi и пр. ЯВУ локальные переменные ф-ции создаются в стеке, при выходе из ф-ции данные переменных будут утеряны
в этой ф-ции, необходимо производить действия здесь:
if(profit >= 0){ }
где-то у себя я пробовал - ф-ция работала норм
В мкл - так же. А, сорри: я неверно посчитал скобки.... Да, все ок.
Удачи.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как найти в истории именно последний закрывшийся ордер?