移动止损函数
- //移动止损函数
-
- // 详解:该函数里面需要用到的可修改的外部变量是: 1、 移动止损点数 2、magic (这两个变量可将其定义成全局变量)
-
- void yidong() //定义函数名称
- {
-
- for(int i=0;i<OrdersTotal();i++) //for循环语句订单总数的循环 OrdersTotal()用来获取当前的所有订单总数
- {
- if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) //查询当前的订单序号是否存在
- {
- if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) //判断第一查询到的订单类型是不是买单,第二查询到的订单的货币对是不是当前货币对,第三查询到的订单的魔术号是否和外部定义的魔术号是否相同
- {
- if ((Bid-OrderOpenPrice())>=Point*移动止损点数) //如果现卖价-开单价的点数大于等于移动止损点数,即价格上升多少个点后,准备开启以下的止损上移变动设置。
- {
- if (OrderStopLoss()<(Bid-Point*移动止损点数)||(OrderStopLoss()==0)) // 如果现卖价-移动止损点数后的 价格大于设置的止损价,或者 止损价格没有设置的时候,执行下面的修改订单止损价格语句
- {
- int OM; //定义一个变量接收修改订单函数的返回值
- OM=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*移动止损点数,OrderTakeProfit(),0,Green); //修改订单止损价格语句(订单编号识别,订单开单价识别,止损价格修改,订单止盈价格识别,当前周期,订单颜色)
- }
- }
- }
- if (OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) //判断第一查询到的订单类型是不是买卖单,第二查询到的订单的货币对是不是当前货币对,第三查询到的订单的魔术号是否和外部定义的魔术号是否相同
- {
- if ((OrderOpenPrice()-Ask)>=(Point*移动止损点数)) //如果现开单价格--买价价的点数大于等于移动止损点数,即价格下降多少个点后,准备开启以下的止损下移变动设置。
- {
- if((OrderStopLoss()>(Ask+Point*移动止损点数))||(OrderStopLoss()==0)) // 如果设置的止损价大于现买价价+移动止损点数后的 价格,或者 止损价格没有设置的时候,执行下面的修改订单止损价格语句
- {
- int OM; //定义一个变量接收修改订单函数的返回值
- OM=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*移动止损点数,OrderTakeProfit(),0,Green); //修改订单止损价格语句(订单编号识别,订单开单价识别,止损价格修改,订单止盈价格识别,当前周期,订单颜色)
- }
- }
-
- }
-
- }
-
- }
-
- }
复制代码
|