本节所讲的“清仓”并不是全部持仓单平仓,而是指针对具有相同条件的订单平仓,例如所有盈利的订单平仓。 为了实现这种操作, 有两个知识点需要掌握, 一是遍历所有持仓单,二是筛选特定条件的目标订单。 for 语句完成遍历持仓单任务,MQL4 将持仓单按照时间远近顺序分配了序号,例如当前持仓单数量为 2,那么第 1 张持仓单顺序号为 0,第 2 张持仓单顺序号为 1。 if 语句中的“OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)”表示按序号选择订单,如果被选中返回 true,否则返回 false。筛选条件的设置真是一门学问,稍有差池,结果就会大相径庭。我们继续添加条件,当持仓单被选中后,需要增加一个货币对筛选条件,即“OrderSymbol()==Symbol()” , 将持仓单货币对锁定在当前货币对里, 再在增加一个特征码筛选条件“OrderMagicNumber()==MyMagicNum” ,将持仓单锁定在 EA 监管的范围内,最后增加一项“OrderProfit()>0” ,将持仓单锁定在盈利范围内。此时就完成了目标订单的选择。 总结筛选组合条件:选中订单+当前货币对+EA 可监管+订单盈利。 平仓动作需要注意的是买入单和卖出单使用的平仓价格不同,买入单用 Bid 平仓,卖出单用 Ask 平仓,因此在代码中还需要做进一步区分。清仓操作还包括撤销挂单, 可以利用订单类型再增加一个筛选条件, 撤销订单的操作只需要用“OrderDelete(OrderTicket());”命令即可,与报价无关。
|
清仓方法
回复:0 浏览:950
- 楼主admin 圈主
- 2019-05-05 15:00