6

最初は、この質問は非常にばかげているように聞こえるかもしれませんが、基本的なことではありません。たぶん、どのアルゴリズムでも正確に解決できないように見えるかもしれませんが、私はそう言うふりをしています.

それで質問。金などのチャートがあります。時間軸上で頂点と底がど​​こにあるかを見つける必要があります。問題は、大きな好転と大きな不況がどこから始まるかを見つける必要があることです。問題は、関係のない小さな好転と不況がたくさんあることです。

これが理解を深めるための写真です - 赤い斑点は私が見つけたいものです(正確ではありませんが、何らかの形でこのようなものです)。

ここに画像の説明を入力

したがって、おそらく小さなターンアップとターンダウンを除外する必要がありますが、その方法がわかりません。どんなアイデアでも喜ばれます。Javaなどのアルゴリズムは必要ありません。言葉だけで十分です。

4

3 に答える 3

11
  1. 最初に平滑化またはローパス フィルター操作を実行し、平滑化されたデータから極小値/極大値の位置を見つけることができます。次に、元のデータから最小値と最大値を取得します。

  2. すべてのターニング ポイントを検出する通常の最大/最小フィルターを使用してから、ターニング ポイントのリストをしきい値でフィルター処理することができます。

  3. あなたが本当にやりたいことは、信号から「長期変動」を取り除き、「短期変動」だけを見ることだと思います。これは、経験的モード分解を使用して行うことができます。私の論文の 2.3.2 節を参照してください。(代わりに、「経験的モード分解」、「EMD」、または「ヒルベルト・ファン変換」を Google で調べてください。)

EMD の動作は次のとおりです。

ここに画像の説明を入力

EMD アルゴリズムが信号のコンポーネントを抽出するにつれて、一般性が増していることに注意してください。「最も詳細」から始まり、「最も一般的な傾向」で終わります。(明らかに 9 つのコンポーネントがあることに注意してください。表示されているのはごく一部です。)

于 2012-04-16T05:49:02.643 に答える
0

通常、移動平均から始めます。つまり、最新の N ポイントを平均します。平滑化の程度は N にほぼ比例します (つまり、より多くのポイントを平均すると、結果はより滑らかになります)。

次に、平均化された各ポイントと次のポイントの差を取ることができます。差が符号を変える場合、最小値または最大値があります (正から負に変化する場合は最大値、負から正に変化する場合は最小値)。

于 2012-04-16T05:53:05.177 に答える
0

完全には理解できないかもしれませんが、特定の時間範囲の最低点を取ることができないのはなぜですか? ほとんどのデータ プロバイダーは 1 日の最高値/最低値を提供していますが、それを保存するだけでなく、時間範囲 x の最低値を取得できますか?

研究の範囲を広げることで、小さな浮き沈みを取り除きます。これは私が通常行うことです。もう1つの方法は、過去X日間の平均を使用して結果を平滑化することです(移動平均)が、精度が失われます(程度は範囲に依存します..2〜3日の移動平均の場合、そうでない場合悪い 2 年移動平均)。

編集:申し訳ありませんが、理解できませんでした。範囲を見つけようとしています。データがある場合は、最初に最低点を見つけてから、翌日に行って変化率を計算し、次の日などを調べて、より高い範囲が見つかった日を上書きしてみませんか. 後でいくつかのロジックを追加する必要があります (そのピークからの %down など)。そうしないと、通常、株式の IPO を取得し、そのすべての高値を取得して、それが 1 つの期間であると報告されます。

于 2012-04-16T05:55:32.223 に答える