不同的策略对移动止损的要求不尽相同,因此本节以第一章“移动止损”定义内容来描述实现“方法” 。
“移动止损” 是指成交持仓单盈利且当前报价与该单开仓价超过预设移动止损间距点数而执行的一个不断向盈利方向调整订单止损价位的过程。该订单被止损后利润≥0。
假设移动止损(TrallingStop)间距为 50 点,我们针对订单号为 921795 的成交持仓单进行移动止损操作。执行前预定义一个移动止损价位变量(myTrallingStopPrice) ,首先选中该订单,其次判断该订单类型(买入/卖出) ,第三步计算移动止损价位,第四步比较订单止损价是否可以执行移动止损,第五步执行移动止损。
- int TrallingStop=50; //预定义移动止损间距
- double myTrallingStopPrice=0; //预定义移动止损价位
- if (OrderSelect(921795,SELECT_BY_TICKET,MODE_TRADES)) //选中订单号为 921795 的成交持仓单
- {
- if (OrderType()==OP_BUY) //判断订单为买入类型
- {
- myTrallingStopPrice=Bid-TrallingStop*Point; //计算移动止损价位
- if (myTrallingStopPrice>OrderStopLoss()) //比较订单止损价是否可以执行移动止损
- {
- iWait;
- OrderModify(OrderTicket(),OrderOpenPrice(),myTrallingStopPrice,OrderTakeProfit(),0);
- }
- }
- if (OrderType()==OP_SELL) //判断订单为卖出类型
- {
- myTrallingStopPrice=Ask+TrallingStop*Point; //计算移动止损价位
- if (myTrallingStopPrice<OrderStopLoss()) //比较订单止损价是否可以执行移动止损
- {
- iWait;
- OrderModify(OrderTicket(),OrderOpenPrice(),myTrallingStopPrice,OrderTakeProfit(),0);
- }
- }
- }
|