91评论

6收藏

一款赢利达到一定数额后全部平仓的指标

avatar talizn1985 | 14540 人阅读 | 91 人评论 | 2021-04-23

[pre]extern double yingli=0;//设定盈利值

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//---

if (Profit_total_buy() >= yingli)   iCloseOrders("Buy");
if (Profit_total_sell()>= yingli)   iCloseOrders("Sell");

}
//+------------------------------------------------------------------+

//---
double Profit_total_buy()
{
double Profit=0;
for(int i=0;i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if( OrderSymbol()!=Symbol())                         continue;
if(OrderType()==OP_BUY)
Profit=Profit+OrderProfit();
}
return(Profit);
}

//---
double Profit_total_sell()
{
double Profit=0;
for(int i=0;i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if( OrderSymbol()!=Symbol())                         continue;
if(OrderType()==OP_SELL)
Profit=Profit+OrderProfit();
}
return(Profit);
}

//---
void iCloseOrders(string myType)
{
if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==false) return;
//-----------------------
if (myType=="Buy")//平掉所有多头订单
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if( OrderSymbol()!=Symbol()) continue;
//--- check order type
if(OrderType()==OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White))
Print("OrderClose error ",GetLastError());
continue;
}
}
}
//-----------------------
if (myType=="Sell")//平掉所有空头订单
{
for(int j=OrdersTotal()-1;j>=0;j--)
{
if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==false) break;
if( OrderSymbol()!=Symbol()) continue;
//--- check order type
if(OrderType()==OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,Red))
Print("OrderClose error ",GetLastError());
continue;
}
}
}
}[/pre]
""
还没有人打赏,支持一下

评论|共 91 个

w04562

发表于 2021-4-25 21:11:05 | 显示全部楼层

顶下

cinib

发表于 2021-5-2 14:11:06 | 显示全部楼层

支持下

udvwf

发表于 2021-5-5 16:03:43 | 显示全部楼层

你好吧

发表于 2021-5-8 17:56:03 | 显示全部楼层

gjlbrtcu

发表于 2021-5-16 10:00:55 | 显示全部楼层

支持下

徐斌斌

发表于 2021-5-17 19:48:58 | 显示全部楼层

谢谢

风之语

发表于 2021-5-18 20:19:15 | 显示全部楼层

liufeng631

发表于 2021-5-19 21:10:40 | 显示全部楼层

世间人

发表于 2021-5-20 00:34:17 | 显示全部楼层

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则