может быть так?
if(OrderSymbol()!=Symbol() || dm < dt) continue;
и, кстати
for(int i = OrdersHistoryTotal()-1;i>=0;i--){
индекс позиций начинается с нуля
double ProfitDef() { double pr = 0; datetime dt = iTime(Symbol(),1440,0); datetime dm = TimeCurrent(); if(OrdersHistoryTotal()!=0){ for(int i = OrdersHistoryTotal()-1;i>=0;i--){ if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue; dm=OrderCloseTime(); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if(OrderSymbol()!=Symbol() && dm > dt)continue; { pr+= OrderProfit(); //Print("Общая прибыль/убыток по незакрытым операциям составляет ", pr); }}} return(pr); }
точно! только условие должно остаться
if(OrderSymbol()!=Symbol() || dm < dt) continue;
в dm хранится время закрытия перебираемого ордера.
в dt хранится время начала текущего дня.
...
возможно вы не заметили
continue;
//+------------------------------------------------------------------+ //| LastDayProfit | //+------------------------------------------------------------------+ double LastDayProfit(int day=0,string Sy="",int Typ=-1,int Mag=-1){ int i,time; double profit; string sy; if(Sy==""){sy=Symbol();}else{sy=Sy;} for(i=0;i<=OrdersHistoryTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){ if(Sy==""||OrderSymbol()==Sy){ if(Typ==-1||OrderType()==Typ){ if(Mag==-1||OrderMagicNumber()==Mag){ if(OrderCloseTime()>=iTime(sy,1440,day)){ profit=profit+OrderProfit()+OrderSwap()+OrderCommission(); } } } } } } return(profit); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему в этой функции не производится сравнение времени?
Она должна выдавать прибыль всехзакрытых сделок за текущие сутки, а она выдает за всю историю.
double ProfitDef() {
double pr = 0;
datetime dt = iTime(Symbol(),1440,0);
datetime dm = TimeCurrent();
if(OrdersHistoryTotal()!=0){
for(int i = OrdersHistoryTotal()-1;i>0;i--){
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) continue;
if(OrderSymbol()!=Symbol() && dm > dt)continue;
{
pr+= OrderProfit();
//Print("Общая прибыль/убыток по незакрытым операциям составляет ", pr);
}}}
return(pr);
}