HistoryProfitsAmount()历史订单的盈利金额统计,可以按照月、周、天进行统计
函数名称doubleHistoryProfitsAmount(string SymbolX,int OrderTypeX,int MagicX,string PeriodX,string OrderTimeX,bool HoldX,int ShiftX)
函数介绍
HistoryProfitsAmount()获得历史订单的盈利金额。可以根据品种、订单类型、魔术码、时间周期、订单时间等进行筛选。
//举例:打印出本周多单的盈利金额。
Print(HistoryProfitsAmount(Symbol(),OP_BUY,MAGIC,"week","close",0));
参数介绍
SymbolX:订单筛选的交易品种,一般设置当前品种即可,也就是Symbol();“-1”代表不筛选交易品种。
OrderTypeX:订单筛选的订单类型,0代表多单,1代表空单。OP_BUY是常量0,OP_SELL是常量1。-1代表不筛选订单类型。
MagicX:订单的魔术码,你的EA的魔术码是多少,这里填上即可。
PeriodX:时间周期,"month"代表统计本月的盈利金额,"week"代表统计本周的盈利金额,"day"代表统计当天的盈利金额。
OrderTimeX:"open"代表以开仓时间进行计算,"close"代表以平仓时间进行计算。
HoldX:为false,就不统计当前持仓的盈利金额;true,统计当前持仓的盈利金额。
ShiftX:时间周期偏移,0代表当周期(比如:当天)的统计金额;1代表上周期(比如:昨天);2代表上周期(比如:大昨天);
函数定义
注意:本人发布的函数均为实战开发所用,低价或免费发布并不赚钱,仅限懂编程的朋友使用,不提供指导,因为人工成本巨贵,感谢朋友们海涵。doubleHistoryProfitsAmount(string SymbolX,int OrderTypeX,int MagicX,string PeriodX,string OrderTimeX,bool HoldX,int ShiftX)
{
double Profits=0;
double NowProfits=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY))
if((OrderSymbol()==SymbolX ||SymbolX=="-1")&& (OrderMagicNumber()==MagicX || MagicX==-1)&&(OrderType()==OrderTypeX || OrderTypeX==-1))
{
if(PeriodX=="month")
{
if(OrderTimeX=="open")
if(OrderOpenTime()> (TimeCurrent()/(PERIOD_MN1*60)-ShiftX)*(PERIOD_MN1*60) && (ShiftX>0?(OrderOpenTime()< (TimeCurrent()/(PERIOD_MN1*60)-ShiftX+1)*(PERIOD_MN1*60)):true))
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
if(OrderTimeX=="close")
if(OrderCloseTime()> (TimeCurrent()/(PERIOD_MN1*60)-ShiftX)*(PERIOD_MN1*60) && (ShiftX>0?(OrderCloseTime()< (TimeCurrent()/(PERIOD_MN1*60)-ShiftX+1)*(PERIOD_MN1*60)):true))
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
}
if(PeriodX=="week")
{
if(OrderTimeX=="open")
if(OrderOpenTime()> (TimeCurrent()/(PERIOD_W1*60)-ShiftX)*(PERIOD_W1*60) && (ShiftX>0?(OrderOpenTime()< (TimeCurrent()/(PERIOD_W1*60)-ShiftX+1)*(PERIOD_W1*60)):true))
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
if(OrderTimeX=="close")
if(OrderCloseTime()> (TimeCurrent()/(PERIOD_W1*60)-ShiftX)*(PERIOD_W1*60) && (ShiftX>0?(OrderCloseTime()< (TimeCurrent()/(PERIOD_W1*60)-ShiftX+1)*(PERIOD_W1*60)):true))
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
}
if(PeriodX=="day")
{
if(OrderTimeX=="open")
if(OrderOpenTime()> (TimeCurrent()/(PERIOD_D1*60)-ShiftX)*(PERIOD_D1*60) && (ShiftX>0?(OrderOpenTime()< (TimeCurrent()/(PERIOD_D1*60)-ShiftX+1)*(PERIOD_D1*60)):true))
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
if(OrderTimeX=="close")
if(OrderCloseTime()> (TimeCurrent()/(PERIOD_D1*60)-ShiftX)*(PERIOD_D1*60) && (ShiftX>0?(OrderCloseTime()< (TimeCurrent()/(PERIOD_D1*60)-ShiftX+1)*(PERIOD_D1*60)):true))
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
}
if(PeriodX=="-1")
{
Profits=Profits+OrderProfit()+OrderSwap()+OrderCommission();
}
}
}
for(int i=OrdersTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS))
if((OrderSymbol()==SymbolX ||SymbolX=="-1")&& (OrderMagicNumber()==MagicX || MagicX==-1)&&(OrderType()==OrderTypeX || OrderTypeX==-1))
NowProfits+=OrderProfit()+OrderSwap()+OrderCommission();
if(HoldX)
Profits=Profits+NowProfits;
return(Profits);
}
[发呆]好贵啊 历史订单的盈利金额统计 学习中学习 谢谢分享
页:
[1]