MT4外汇期货哪里开户_外汇EA:简单的订单管理(三)

作者:MT4 发布时间:2021-09-22 15:04

  // 若是以后货泉对于不启仓仓位,疏忽它
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