我如何计算某一天的所有利润?
How do i calculate all the profit for a certain day?
double CheckProfitSofar()
{
datetime today = iTime(_Symbol,PERIOD_D1,0);
int dDay=TimeDay(today);
int dMonth = TimeMonth(today);
int dYear = TimeYear(today);
int todayYear, todayMonth, todayDay;
datetime opnOrdTime = 0;
double opnOrdProfit =0;
double addLoss = 0;
for(int s=0 ; s<OrdersHistoryTotal(); s++)
{
if ( OrderSelect( s, SELECT_BY_POS, MODE_HISTORY ) == true )
opnOrdTime = OrderCloseTime();
todayYear=TimeYear(opnOrdTime);
todayMonth =TimeMonth(opnOrdTime);
todayDay=TimeDay(opnOrdTime);
if ( dYear==todayYear && dMonth==todayMonth && dDay==todayDay )
totalLoss_Profit += (OrderProfit() + OrderSwap() + OrderCommission());
}
Comment(dYear," ",dMonth," ",dDay," ",todayYear," ",todayMonth," ",todayDay);
return totalLoss_Profit;
}
我想要的是计算特定日期的利润(+ve 或-ve)。例如今天。我使用 "datetime today" 获得今天第一根蜡烛的开盘时间,然后跟随。它没有返回准确的值。请帮忙。提前致谢。
您只需要 datetime timeStart = iTime(_Symbol,PERIOD_D1,i)
收到的那一天的开始和那一天的结束 datetime timeEnd=timeStart+PeriodSeconds(PERIOD_D1);
。然后循环关闭交易并在 OrderClosePrice()
不在范围内时将其过滤掉。
double getClosedPnlOfDay(const int indexDay)
{
const datetime timeStart=iTime(_Symbol,PERIOD_D1,i),
timeEnd = timeStart+PeriodSeconds(PERIOD_D1);
double result=0.;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
//filter by OrderSymbol() and OrderMagicNumber() here
if(OrderCloseTime()<timeStart || OrderCloseTime()>=timeEnd) continue;
result+=OrderProfit() + OrderCommission() + OrderSwap();
}
}
double CheckProfitSofar()
{
datetime today = iTime(_Symbol,PERIOD_D1,0);
int dDay=TimeDay(today);
int dMonth = TimeMonth(today);
int dYear = TimeYear(today);
int todayYear, todayMonth, todayDay;
datetime opnOrdTime = 0;
double opnOrdProfit =0;
double addLoss = 0;
for(int s=0 ; s<OrdersHistoryTotal(); s++)
{
if ( OrderSelect( s, SELECT_BY_POS, MODE_HISTORY ) == true )
opnOrdTime = OrderCloseTime();
todayYear=TimeYear(opnOrdTime);
todayMonth =TimeMonth(opnOrdTime);
todayDay=TimeDay(opnOrdTime);
if ( dYear==todayYear && dMonth==todayMonth && dDay==todayDay )
totalLoss_Profit += (OrderProfit() + OrderSwap() + OrderCommission());
}
Comment(dYear," ",dMonth," ",dDay," ",todayYear," ",todayMonth," ",todayDay);
return totalLoss_Profit;
}
我想要的是计算特定日期的利润(+ve 或-ve)。例如今天。我使用 "datetime today" 获得今天第一根蜡烛的开盘时间,然后跟随。它没有返回准确的值。请帮忙。提前致谢。
您只需要 datetime timeStart = iTime(_Symbol,PERIOD_D1,i)
收到的那一天的开始和那一天的结束 datetime timeEnd=timeStart+PeriodSeconds(PERIOD_D1);
。然后循环关闭交易并在 OrderClosePrice()
不在范围内时将其过滤掉。
double getClosedPnlOfDay(const int indexDay)
{
const datetime timeStart=iTime(_Symbol,PERIOD_D1,i),
timeEnd = timeStart+PeriodSeconds(PERIOD_D1);
double result=0.;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
//filter by OrderSymbol() and OrderMagicNumber() here
if(OrderCloseTime()<timeStart || OrderCloseTime()>=timeEnd) continue;
result+=OrderProfit() + OrderCommission() + OrderSwap();
}
}