请问mql5 获取订单的止损价格的2种方法有何区别
第一种:
if(PositionSelect(_Symbol))
{
double _SL = PositionGetDouble(POSITION_SL) ;
}
第二种: if ( OrderSelect(Ticket) ) //选择工作订单。如果函数成功调用返回真值,如果函数没能完成,返回错误值,
{ double _SL = OrderGetDouble( ORDER_SL);
}
麻烦各位大神解释一下,是不是第一种只是开仓时候的止损价 ,第二种是订单中途修改了的止损价?
请问mql5 获取订单的止损价格的2种方法有何区别
第一种:
if(PositionSelect(_Symbol))
{
double _SL = PositionGetDouble(POSITION_SL) ;
}
第二种: if ( OrderSelect(Ticket) ) //选择工作订单。如果函数成功调用返回真值,如果函数没能完成,返回错误值,
{ double _SL = OrderGetDouble( ORDER_SL);
}
麻烦各位大神解释一下,是不是第一种只是开仓时候的止损价 ,第二种是订单中途修改了的止损价?
mt5这块的确有点乱,持仓单(position)和挂单(order),功能函数并不是完全对应的。
positionSelect(_Symbol) 这个函数个人没用过,具我所知hedging对冲模式基本用不到,netting用的比较多。
正常hedging模式返回止损价应该是如下:
int t=PositionsTotal(); for(int i=0; i<t; i++) { if(PositionGetTicket(i)>0) } double _SL = PositionGetDouble(POSITION_SL) ; //返回开仓后订单的止损价 } }
第二种 对应上面的应该OrderGetTicket(i)>0
至于
OrderSelect()
应该是:
if ( OrderSelect(Ticket) ) //选择指定订单号 { double _SL = OrderGetDouble( ORDER_SL);//返回该订单号挂单的止损价格 }
当然这只是目前个人的理解,仅供参考,大家可以一起探讨,共同进步!
如樓上 Tiecheng 大神說的 MT5是容易搞混的語法
你需要先知道Position是持倉單也就是說已經成交的單子 在你的賬上會出現盈虧的單就屬Position
掛單是Order 在清單裡面掛著還沒交易成功 帳面上不出現盈虧的就是Order
所以 你提到的第一種狀況 獲取的是持倉單的SL 第二種獲取的是掛單的SL
當掛單成交 成為持倉單後 就要用第一種方式才能獲取持倉單的SL
如果中途有修改SL(無論是持倉或是掛單) 調用出來的都是最後的SL
请问mql5 获取订单的止损价格的2种方法有何区别
第一种:
if(PositionSelect(_Symbol))
{
double _SL = PositionGetDouble(POSITION_SL) ;
}
第二种: if ( OrderSelect(Ticket) ) //选择工作订单。如果函数成功调用返回真值,如果函数没能完成,返回错误值,
{ double _SL = OrderGetDouble( ORDER_SL);
}
麻烦各位大神解释一下,是不是第一种只是开仓时候的止损价 ,第二种是订单中途修改了的止损价?