盈亏平衡功能中的无效止损

时间:2019-09-28 20:59:39

标签: mql5

当我仅在策略测试器的“ Jurnal”部分中测试EA和BreakEven选项时,我看到有关头寸修改的错误信息:“修改失败#28卖出1.00 EURUSD sl:1.14730,tp:1.13730-> sl:1.14730 ,tp:1.13730 [无效的停靠站]

当我放慢策略测试器的收支平衡时,将其运作良好,并将止损设置为0。一切正常,但是我看到一个错误报告。 如果有人知道要解决此问题,我将不胜感激。

谢谢

输入double break_even = 3.0; double ExtBreakEven = 0.0;

int Oninit()
{
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(_symbol.Digits()==3 || _symbol.Digits()==4 || _symbol.Digits()==5)
      digits_adjust=10;
      m_adjusted_point=_symbol.Point()*digits_adjust;
//--- 
   ExtBreakEven         = break_even          *   m_adjusted_point;
}                      

//..... and finally 
void BreakEven(const double price)
{ 
   if (break_even==0)
       return;
   for (int i=PositionsTotal()-1; i>=0; i--){
      string symbol=PositionGetSymbol(i);
      ulong magic=PositionGetInteger(POSITION_MAGIC);
      if (symbol==_symbol.Name() && magic == magic_number){
         ulong PositionTicket=PositionGetInteger(POSITION_TICKET);
         double PriceEntry=PositionGetDouble(POSITION_PRICE_OPEN);
         double CurrentTakeProfit=PositionGetDouble(POSITION_TP);
         if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY){
            if (price>=(PriceEntry+ExtBreakEven)){
               if (!_trade.PositionModify(PositionTicket,PriceEntry,CurrentTakeProfit)) {
                   Print("Modify ",PositionTicket,
                                          " Position -> false. Result Retcode: ",_trade.ResultRetcode(),
                                          ", description of result: ",_trade.ResultRetcodeDescription());
                  PrintResultModify(_trade,_symbol,_position);
               }
            }
         }
         else {
         if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL){
            if (price<=(PriceEntry-ExtBreakEven)){
               if (!_trade.PositionModify(PositionTicket,PriceEntry,CurrentTakeProfit)){
                  Print("Modify ",PositionTicket,
                                          " Position -> false. Result Retcode: ",_trade.ResultRetcode(),
                                          ", description of result: ",_trade.ResultRetcodeDescription());
                  PrintResultModify(_trade,_symbol,_position);
               }
            }
         }
       }
      }
   }
}

0 个答案:

没有答案