这是mt4编程方面的问题,它的策略要求是在订单总盈利满足设定条件的时候将订单全部平仓。
如果是计算当前mt4账户的总盈利,那直接用 AccountProfit() 函数即可。如果要计算某个EA或者某个指定货币对的订单总盈利,那需要单独编写盈利统计函数。
清仓通常是指将账户所有订单或者指定某种类型的订单全部平仓。如果是账户清仓,则在平仓所有多空单的时候还有考虑到是否删除所有未成交挂单。
这里以mt4账户总盈利达到多少执行全部清仓做示范,参考代码:
1、定义输入变量
input double Clusd = 300;//定义账户盈利清仓金额变量
2、构建账户一键清仓函数,为了能有效的清仓所有订单,以 while() 循环结构编写较好。
void Closeall()
{
int a=0;
while(OrdersTotal()>0)
{
for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true)
{
if(OrderType() < 2)
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,CLR_NONE))
{
Print("OrderClose Error #",GetLastError());
}
}
if(OrderType() >= 2)
{
if(!OrderDelete(OrderTicket()))
{
Print("OrderDelete Error #",GetLastError());
}
}
}
}
a=a+1;if(a==20){return;}
}
}
3、在EA主函数OnTick(void)中执行。
if(AccountProfit() >= Clusd){Closeall();}
账户盈亏清仓类的EA,在ea吧有现成的EA可直接下载使用。如果是新手研究学习EA编程,可以参考上面代码进行演变。