求助大神,SAR指标调用问题

 

我把SAR指标做了封装处理。

指标定义

double Data::SAR(int count=0, double 步长=0.02, double 最大值=0.2, ENUM_TIMEFRAMES period=PERIOD_CURRENT, string symbol=NULL)
{
    double a=0;
    int sar_handle=iSAR(symbol, period, 步长, 最大值);
    double data0[];
    ArraySetAsSeries(data0, true);
    if(CopyBuffer(sar_handle, 0, 0, count+1, data0) > 0)
    {
        a = NormalizeDouble(data0[count], _Digits);
    }
    else
    {
        Print("SAR指标CopyBuffer失败,错误码: ", GetLastError());
    }

    // 不要忘记释放指标句柄
    IndicatorRelease(sar_handle);
    return(a);
}

指标声明

double SAR(int count=0, double 步长=0.02, double 最大值=0.2, ENUM_TIMEFRAMES period=PERIOD_CURRENT, string symbol=NULL);

经过测试以上代码无编写问题,但是在EA中调用时不能进行÷运算

   // 获取最新价格
   double latestPrice = D.K_Close(0);

   // 调用SAR方法获取最新SAR值
   double sarValue = D.SAR(0, JIEDUAN);
   Print("SAR",sarValue);
   // 计算最新价格与最新SAR值的比例差
   double ratio = (latestPrice / sarValue) - 1;
   Print("比值",ratio);

以上代码也无编写错误,但是进行回测会报错,copybuffer失败,奇怪的是我进行对比和获取数据打印数据是正常的例如

   // 获取最新价格
   double latestPrice = D.K_Close(0);
   // 调用SAR方法获取最新SAR值
   double sarValue = D.SAR(0, JIEDUAN);
   Print("SAR",sarValue);
   // 检查比例差是否大于A
   if(sarValue > latestPrice)
    {
     Print("你好");
    }

不知道是哪里出了问题,怎么修改,请求大神援助。

原因: