1

私は株式市場データのパターンを特定するプログラムを作成しており、次の短期的なパターンを特定しようとしています。

低い値が開いた値より少なくとも3小さく、近い値が開いた値の2以内にある場合。

次の形式でCSVファイルから値を読み込んでいますが、ヘッダーはありません。

Open    High    Low     Close
353.4   359.2   347.7   349
351.4   354.08  349.1   353.1
350.1   354     349.3   350.2
352.4   353.28  348.7   349.8
345.7   352.3   345.7   351.5

値は、closePrice、openPrice、lowPriceと呼ばれるfloat配列リストに格納されます。私は計算していますこれは、データ内のパターンを識別しようとするために私が書いたコードです。

    for(int i = 0; i < closePrice.size(); i ++)
    {
        //Difference between opening price and the price low
        float priceDrop = Math.abs(openPrice.get(i) - lowPrice.get(i));
        //Difference between opening price and close price (regardless of positive or negative)
        float closingDiff = Math.abs(openPrice.get(i) - closePrice.get(i));

        float dropTolerance = 3.0f;
        float closingTolerance = 2.0f;

        if( (priceDrop > dropTolerance) || (closingDiff < closingTolerance) )
        {
            System.out.println("price drop = " + priceDrop + " closing diff = " + closingDiff);
            System.out.println("Hangman pattern" + "\n");
        }
    }

したがって、価格が3を超えて下落し、終値が始値の2以内であるかどうかをテストする必要がありますが、プログラムを実行すると、すべてがifステートメントをバイパスするように見えます。私の出力は次のとおりです。

price drop = 5.6999817 closing diff = 4.399994
Hangman pattern
price drop = 2.2999878 closing diff = 1.7000122
Hangman pattern
price drop = 0.8000183 closing diff = 0.1000061
Hangman pattern

フロートを比較しているからですか?どんな助けでもいただければ幸いです。

4

1 に答える 1

4

AND演算子とOR演算子を混同しているようです。

両方の条件が満たされた場合にのみ出力することを指定しますが、コードは、どちらかの条件が満たされた場合に出力することを示しています。

于 2013-02-06T16:23:53.670 に答える