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

您正在浏览EA码头网,我们提供了许多优质的EA供您下载使用,请点击这里
我们建议大家用多款不同策略的EA,每个EA交易多个品种,每个EA在每个品种上只承担一丁点风险,这样能在增加收益的同时,分散风险,以达到持续稳定盈利的目的,您也可以根据你的交易理念自行设置参数。

  // 如果当前货币对没有开仓仓位,忽略它
if ( OrderSymbol() != Symbol() ) continue;

// 如果MagicNumber 不等于 _MagicNumber,
// 忽略这个仓位
if ( OrderMagicNumber() != _MagicNumber ) continue;

// 取决于仓位类型,
// 改变变量值:

switch ( OrderType() )
{
case OP_BUY: BuyOrder = OrderTicket(); break;
case OP_SELL: SellOrder = OrderTicket(); break;
case OP_BUYSTOP: BuyStopOrder = OrderTicket(); break;
case OP_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仓位开仓,
case OP_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 仓位的单元个一样
// 这就是我们不能在单元格上标注的原因…
case OP_SELL:
{
if ( BuyStopOrder > 0 )

{
if ( !OrderDelete( BuyStopOrder ) )

{
Alert(“OrderDelete 错误 #”,
GetLastError());
return(-1);
}

}
if(TrailingStop > MarketInfo( Symbol(), 
MODE_STOPLEVEL ) )

{
if(NormalizeDouble(OrderOpenPrice() – Ask,
Dig

您也可以注册登陆签到领取M币。免费下载EA,请点击这里

· 免责声明:投资有风险,本网站所包含之所有信息均不构成对外汇的任何任何投资的建议或意见, 网站内容仅供参考。不适合所有投资者,客户需根据自身情况选择,网站访问者不应依赖本网站信息并将其视爲作爲或不作爲之依据。 对于任何个人依据本网站或网站的信息采取的作爲或不作爲所导致的结果,我们将毋须承担任何责任。

外汇EA策略宝盒 » 外汇EA:简单的订单管理(三)-外汇EA下载

发表评论