2.2.2 清仓方法

2.2.2 清仓方法

本节所讲的"消仓"并不是全部持仓单平仓,而是指标对具有相同条件的订单平仓,例如所有盈利的订单平仓。为了实现这种操作,有两个知识点需要掌握: 一是遍历所有持仓单, 二是筛选特定条件的目标订单。

for语句完成遍历持仓单任务, MQL4将持仓单按照时间远近顺序分配了序号,例如当前持仓单数量为2 ,那么第1张持仓单顺序号为0 ,第2 张待仓单顺序号为1。

if语句中的"OrderSelect( ent , SELECT_BY_POS, MODE_TRADES)" 表示按序号选择订单,如果被选中返回true,否则返回false。筛选条件的设置是一门学问,稍有差池,结果就会大相径庭。我们继续添加条件,当持仓单被选中后,需要增加一个货币对筛选条件,即"OrderSymbol () = = Symbol()" ,将持仓单货币对锁定在当前货币对里,再槽加一个特征码筛选条件"OrderMagicNumher( ) = = MyMagicNum" ,将持仓单锁定在EA 监管的范围内,最后增加一项"OrderProfit ( ) > 0" ,将持仓单锁定在盈利范围内。此时就完成了目标订单的选择。

总结筛选组合条件:选中订单+当前货币对+EA可监管+订单盈利。

平仓动作需要注意的是买入单和卖出单使用的平仓价格不同,买入单用Bid平仓,卖出单用Ask平仓,因此在代码中还需要做进一步区分。

清仓操作还包括撤销挂单,可以利用订单类型再增加一个筛选条件,搬销订单的操作只需要用"OrderDelete ( OrderTicket ( ) ) ; "命令即可,与报价无关。