我需要从 comment获取订单的级别信息, 当用EA平掉一个订单的一部分仓位后,该订单的持仓部分的comment会消失,只能在历史订单中看到原有的 comment。如何避免?
universework:
我需要从 comment获取订单的级别信息, 当用EA平掉一个订单的一部分仓位后,该订单的持仓部分的comment会消失,只能在历史订单中看到原有的 comment。如何避免?
我需要从 comment获取订单的级别信息, 当用EA平掉一个订单的一部分仓位后,该订单的持仓部分的comment会消失,只能在历史订单中看到原有的 comment。如何避免?
平仓之前先获取订单的comment,赋给request.comment即可.
虽然获得了单子的注释,但是request你根本就没有用.
你需要重写标准库的PositionClosePartial成员函数,或者你自己写个独立的部分平仓函数.
简单点吧,你把标准库Trade.mqh中部分平仓成员函数中增加一条语句:m_request.comment = PositionGetString(POSITION_COMMENT);
如下:
bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation) { //--- check stopped if(IsStopped(__FUNCTION__)) return(false); //--- for hedging mode only if(!IsHedging()) return(false); //--- check position existence if(!PositionSelectByTicket(ticket)) return(false); string symbol=PositionGetString(POSITION_SYMBOL); //--- clean ClearStructures(); //--- check filling if(!FillingCheck(symbol)) return(false); //--- check if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { //--- prepare request for close BUY position m_request.type =ORDER_TYPE_SELL; m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID); } else { //--- prepare request for close SELL position m_request.type =ORDER_TYPE_BUY; m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK); } //--- check volume double position_volume=PositionGetDouble(POSITION_VOLUME); if(position_volume>volume) position_volume=volume; //--- setting request m_request.action =TRADE_ACTION_DEAL; m_request.position =ticket; m_request.symbol =symbol; m_request.volume =position_volume; m_request.magic =m_magic; m_request.deviation=(deviation==ULONG_MAX) ? m_deviation : deviation; m_request.comment = PositionGetString(POSITION_COMMENT); //增加这条语句 //--- close position return(OrderSend(m_request,m_result)); }