下载MetaTrader 5
要添加评论,请登录注册
存储您的源代码在MQL5存储中。非常安全!
pulsar
11
pulsar 2010.09.26 12:55 

想在现在已有的EA中添加一个加仓代码,条件是:

当EA自动下单之后,如果每亏损50点(这个可以设置是多少点)自动下一单(手数可以设置),平仓规则和原先EA平仓规则是一样的,即EA原始单子平仓条件满足时候,后来加仓的单子跟着一起平仓。

请教这样的代码怎么写?

谢谢

WANGGUANG
81
WANGGUANG 2010.09.26 17:37  

第一步:确定仓中订单亏开仓几价格,首先确定订单类型(这里我只给你举个多单的例子,空单的情况你可以模仿多单的例子去写。如果实在搞不出来可联系QQ:1031130533

int LastBuyOpenPrice() {
for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--)
if (OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == -2101841039 && OrderType() == OP_BUY) return(OrderOpenPrice);
return (-1);
}

if (LastBuy OpenPrice ()-ask=50*point ) OrderSend();

第二步:你的原来平仓条件达到时,可以全部平仓。

void CloseAll()
{
bool Result;
int i,Pos,Error;
int Total=OrdersTotal();

if(Total>0)
{
for(i=Total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == TRUE)
{
Pos=OrderType();
if(Pos==OP_BUY)
{Result=OrderClose(OrderTicket(), OrderLots(), Bid, 5, CLR_NONE);}
if(Pos==OP_SELL)
{Result=OrderClose(OrderTicket(), OrderLots(), Ask, 5, CLR_NONE);}
if((Pos==OP_BUYSTOP)||(Pos==OP_SELLSTOP)||(Pos==OP_BUYLIMIT)||(Pos==OP_SELLLIMIT))
{Result=OrderDelete(OrderTicket(), CLR_NONE);}
//-----------------------
if(Result!=true)
{
Error=GetLastError();
Print("LastError = ",Error);
}
else Error=0;
//-----------------------
}
}
}
return(0);
}

if(条件达到)CloseAll();

刘明德
26
刘明德
26
刘明德 2010.10.05 03:49  

www.nordfx.cn/?id=14598

刘明德
26
刘明德 2010.10.05 03:50  

www.nordfx.cn/?id=14598

/
要添加评论,请登录注册