我正在编写一个 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 语句,但它没有这样做。