首页学院交易策略EA智能交易文章详细

外汇EA:简单的订单管理(三)

外汇网2021-06-17 09:42:21 48
汇外网 - 全球专业的黄金外汇门户导航行情资讯网站

// 假使目前货币对没有开仓仓位,忽视它

if(OrderSymbol()!=Symbol())continue;

// 假使MagicNumber 不等于 _MagicNumber,

// 忽视这个仓位

if(OrderMagicNumber()!=_MagicNumber)continue;

// 取决于仓位类型,

// 更改变量值:

switch(OrderType())

{

caseOP_BUY:BuyOrder=OrderTicket();

break;

caseOP_SELL:SellOrder=OrderTicket();

break;

caseOP_BUYSTOP:BuyStopOrder=OrderTicket();

break;

caseOP_SELLSTOP:SellStopOrder=OrderTicket();

break;

}

}

//---- 假使我们有两个挂单交易,退出

//---- 等候他们开启

if(BuyStopOrder>0&&SellStopOrder>0)return(0);

// 在全部定单中第二次搜索

// 当下运行它们:

_OrdersTotal=OrdersTotal();

for(z=_OrdersTotal-1;z>=0;z--)

{

// 假使在仓位搜索中生成错误,

// 转至下一个仓位

if(!OrderSelect(z,SELECT_BY_POS))

{

_GetLastError=GetLastError();

Print("OrderSelect(",z,", SELECT_BY_POS) - 错误 #",

_GetLastError);

continue;

}

// 假使对于目前的货币对没有开仓

// 忽视它

if(OrderSymbol()!=Symbol())continue;

// 假使 MagicNumber 不等于 _MagicNumber,

// 忽视这个仓位

if(OrderMagicNumber()!=_MagicNumber)continue;

// 取决于仓位的类型,

// 更改变量值:

switch(OrderType())

{

//----假使BUY仓位开仓,

caseOP_BUY:

{

// 假使 SellStop定单还没有删除,

// 删除:

if(SellStopOrder>0)

{

if(!OrderDelete(SellStopOrder))

{

Alert(OrderDelete Error #",GetLastError());

return(-1);

}

}

// 检测止损被移动:

// 假使跟踪止损的大小不是很小,

if(TrailingStop>MarketInfo(Symbol(),

MODE_STOPLEVEL))

{

// 假使赢利点胜过跟踪止损点,

if(NormalizeDouble(Bid-OrderOpenPrice(),

Digits)>

NormalizeDouble(TrailingStop*Point,

Digits))

{

// 假使新的止损水平胜过目前仓位的水准

// (或者假使仓位没有止损),

if(NormalizeDouble(Bid-

TrailingStop*Point,Digits)>

OrderStopLoss()||OrderStopLoss()<=

0.0)

{

//---- 修改定单

if(!OrderModify(OrderTicket(),

OrderOpenPrice(),

NormalizeDouble(Bid-

TrailingStop*Point,Digits),

OrderTakeProfit(),

OrderExpiration()))

{

Alert("OrderModify 错误 #",

GetLastError());

return(-1);

}

}

}

}

// 假使没有开仓仓位,退出

// 无事可做

return(0);

}

// 下一个单元格与BUY仓位的单元个一样

// 这就是我们不能在单元格上标注的原因...

caseOP_SELL:

{

if(BuyStopOrder>0)

{

if(!OrderDelete(BuyStopOrder))

{

Alert("OrderDelete 错误 #",

GetLastError());

return(-1);

}

}

if(TrailingStop>MarketInfo(Symbol(),

MODE_STOPLEVEL))

{

if(NormalizeDouble(OrderOpenPrice()-Ask,

Dig

标签:

随机快审展示
加入快审,优先展示

加入VIP