modify trail stop loss fail

 

Hello, every one!

I try to use the standard library to write a trail stop loss function.

But it fail in test, some order can't be modify, it return a invalid stop error message, and the error code is 4756.

Hope someone can help to check it. Thank you.

//---class
CSymbolInfo mySymbol;
CPositionInfo myPosition;
CTrade myTrade;
//---setting
   mySymbol.Name(Symbol());
   myTrade.SetDeviationInPoints(50);
   StopLoss=500;
   TrailStopLossStep=200;

//---buy modify
   if(myPosition.Select(mySymbol.Name()))
     {
      if(myPosition.PositionType()==POSITION_TYPE_BUY)
        {
         if(myPosition.Profit()>0 && myPosition.StopLoss()<=(myPosition.PriceCurrent()-StopLoss*mySymbol.Point()-TrailStopLossStep*mySymbol.Point()))
           {
            double sl=mySymbol.NormalizePrice(mySymbol.Bid()-StopLoss*mySymbol.Point());
            myTrade.PositionModify(mySymbol.Name(),sl,0);
            if(myTrade.ResultRetcode()!=10008 && myTrade.ResultRetcode()!=10009 && myTrade.ResultRetcode()!=10010)
              {
               Print("请求结果代码文本:",myTrade.ResultRetcodeDescription());
               Print("Last Error:",GetLastError());
              }
           }
        }
     }
//---sell modify
   if(myPosition.Select(mySymbol.Name()))
     {
      if(myPosition.PositionType()==POSITION_TYPE_SELL)
        {
         if(myPosition.Profit()>0 && myPosition.StopLoss()>=(myPosition.PriceCurrent()+StopLoss*mySymbol.Point()+TrailStopLossStep*mySymbol.Point()))
           {
            double sl=mySymbol.NormalizePrice(mySymbol.Ask()+StopLoss*mySymbol.Point());
            myTrade.PositionModify(mySymbol.Name(),sl,0);
            if(myTrade.ResultRetcode()!=10008 && myTrade.ResultRetcode()!=10009 && myTrade.ResultRetcode()!=10010)
              {
               Print("请求结果代码文本:",myTrade.ResultRetcodeDescription());
               Print("Last Error:",GetLastError());
              }
           }
        }
     }