Как опредилить orderprofit последних сделок или хотя бы последней
double ProfitClose(int mag) { int pr=0; datetime oct; double oop,ocp; int pos_type=-1; int j=-1; if(OrdersHistoryTotal()!=0){ for(int i=OrdersHistoryTotal()-1;i>=0;i--){ if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue; if(OrderSymbol()!=Symbol())continue; if(OrderMagicNumber()==mag){ if (oct<OrderCloseTime()) { oct=OrderCloseTime(); j=i;} if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) { oop=OrderOpenPrice(); ocp=OrderClosePrice(); if(OrderType()==OP_BUY ){ pr=(oop-ocp)/Point; return(pr); } if(OrderType()==OP_SELL){ pr=(ocp-oop)/Point; return(pr); }}}}} return(0); }
Так получим профит в пунктах, тот же перебор с суммированием OrderProfit()+OrderSwap()+OrderCommission() по всем ордерам вернет прибыль в валюте депозита
Если не нравиться в пунктах поставит
pr=OrderProfit()+OrderSwap()+OrderCommission() ;не проблема .
Большое спасибо, но нужно за последнии несколько сделок.Помогите пожалуйста
lovova откликнись на последнюю просьбу!
rodis писал (а):
нужно за последнии несколько сделок.
нужно за последнии несколько сделок.
В качестве примера могу дать по дате закрытия. Например, с помощью этой функции можно получить общий профит сделок, закрытых за последние два дня или за последние три часа.
//+----------------------------------------------------------------------------+ //| Возвращает суммарный профит в валюте депозита | //| закрытых с определённой даты позиций | //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) | //+----------------------------------------------------------------------------+ double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0) { double p=0; int i, k=OrdersHistoryTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) { if (dt<OrderCloseTime()) { p+=OrderProfit()+OrderSwap(); } } } } } } return(p); }
Спасибо за ответ Kim.Хочу объяснить почему часто задаю вопросы.Не из за лени.Вопросы задаю не я, а мой друг програмист.Он практически слепой - атрофия зрительного нерва.Что бы рассмотреть что то на мониторе он смотрит в него с растояния 15 см.Книгу по mql4 особо на читалке-говорилке не почитаешь для освоения mql.Так что спасибо ещё раз, извините если надоедаю.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь