我正在编写一个 java 程序来尝试识别股票市场的趋势,并且我想识别以下模式:
其中EMA价值下降SMA超过约。0.7%(第 1 天),您可以寻找未来 2-3 天两者之间 0.2%-0.5% 的波动(SMA&EMA上下关系的变化)。这表明卖出信号。
我有一个浮点值数组,EMA然后SMA我有一个单独的浮点数组percentDif,它包含 EMA 和 SMA 之间的百分比差异。例如,这些是EMA,SMA和percentDif数组的前两组值
EMA 314.395         SMA 314.9859884       percentDif -0.001876237
EMA 313.9476        SMA 314.4888908        percentDif -0.001721176
我已经编写了这个方法来识别我想要的模式,但它不能正常工作,有没有更好的方法可以做到这一点?
public void trend(){
    /*
     * Trend indicator pattern
     */
    float valueDrop = -0.7f;
    float minFluxPos = 0.2f;
    float maxFluxPos = 0.5f;
    float minFluxNeg = -0.2f;
    float maxFluxNeg = -0.5f;
    for(int i = 0; i< percentDif.length-2; i++)
    {
        //If the difference between EMA and SMA is greater or equal to -0.7 percent
        if(percentDif[i] >= valueDrop){
            //If the next day the percentage difference fluctuates between 0.2 or 0.5 either way
            if( ((percentDif[i+1] > minFluxPos) && (percentDif[i+1] < maxFluxPos))
                    || ((percentDif[i+1] > minFluxNeg) && (percentDif[i+1] < maxFluxNeg)) )
            {
                //Indicates price drop and therefore sell signal
                System.out.println("Trend Indicated - SELL");
            }
        }
    }
}
我在percentDif数组中输入了以下值:5 -0.8 -0.3
这些值符合模式的描述,因此应该触发 print 语句,但它没有这样做。