0

株式市場のトレンドを特定するための Java プログラムを作成しており、次のパターンを特定したいと考えています。

値が約 100 を超えてEMA下回っている場合。0.7% (1 日目)、次の 2 ~ 3 日間の 2 つの間のSMA0.2% ~ 0.5% の変動 (上下関係の変化) を探すことができますSMAEMAこれは売りシグナルを示します。

andの float 値の配列がEMAあり、次にEMA と SMA のパーセンテージ差を含むSMA別の float 配列が呼び出されます。percentDifたとえば、これらはEMASMAおよびpercentDif配列の最初の 2 セットの値です。

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 ステートメントをトリガーする必要がありますが、実行していません。

4

2 に答える 2

0

このコードで最も効率が悪いのは、コンソールへの書き込みです。たとえば 10 年間、つまり 2500 サンプルの毎日のデータしかない可能性が高いとすれば、この方法でスキャンするには約 1 ミリ秒かかるはずです。

ループの終了が早すぎると思われます

for(int i = 0; i < percentDif.length - 1; i++)

最小/最大は間違った方法です

float minFluxNeg = -0.5f;
float maxFluxNeg = -0.2f;
于 2013-01-02T12:31:42.373 に答える
0

負のフラックス値に対して、比較演算子が逆になっています。if ステートメントは次のようになります。

if( ((percentDif[i+1] > minFluxPos) && (percentDif[i+1] < maxFluxPos))
                || ((percentDif[i+1] < minFluxNeg) && (percentDif[i+1] > maxFluxNeg)) )

また、提供したデータと境界を考えると、条件が成立することはありません。最初の反復では、外側の条件は成立しますが (5 > -0.7 として)、内側の条件は成立しません (-0.8 は 0.2 と 0.5 の間でも -0.2 と -0.5 の間でもないため)。2 回目と最後の反復では、外側の条件は -0.8 < -0.7 として失敗します。

于 2013-01-02T12:51:53.933 に答える