私は整数の「オンライン」シリーズを持っているので、数ミリ秒ごとに新しい番号があります。頻度は指定されていません。数が多い場合もあれば、数がない場合もあります。
実際には、この数字はいわゆる「真の価格」です。取引アプリケーションで使用しています。
今は最後の数値を「真の価格」として使用しているだけなので、シリーズはまったく追跡しません。しかし、このようなアプローチにはいくつかの問題があります。このシリーズを見てみましょう:
- 98; 最後 = 98
- 100; 最後 = 100
- 101; 最後 = 101
- 100; 最後 = 100
- 101; 最後 = 101
- 100; 最後 = 100
- 101; 最後 = 101
- 100; 最後 = 100
- 101; 最後 = 101
- 100; 最後 = 100
- 99; 最後 = 99
- 98; 最後 = 98
問題は、私の「真の価格」が非常に短期間に 100 から 101 に何度も変更されてしまうことです。真の価格を変更するたびに、多くの作業 (再計算、発注など) が必要になるため、そのような真の価格を変更する必要はありません。この変更 (100-101-100-101) は「測定の問題」によるものであり、フィルタリングする必要があります。「計測」は直せないので、ここで直さなければなりません。
アプローチの 1 つは、「3LastAverage」アルゴリズムを使用することです。
- 98; 3 最後の平均 = 98
- 100; 3 最後の平均 = 99
- 101; 3 最後の平均 = 99.67 => 100
- 100; 3 最後の平均 = 100.33 => 100
- 101; 3 最後の平均 = 101
- 100; 3 最後の平均 = 100
- 101; 3 最後の平均 = 101
- 100; 3 最後の平均 = 100
- 101; 3 最後の平均 = 101
- 100; 3 最後の平均 = 100
- 99; 3 最後の平均 = 100
- 98; 3 最後の平均 = 99
このようなアプローチが常に機能するとは限らないことがわかるように、私はまだ 100-101-100 の問題を抱えています。おそらく、より多くの数値を使用して「平均」を計算できます...しかし、そのような例のため、そのようなアプローチはうまくいきません:
- 99; 3lastAverage = 99 (99 が欲しい)
- 100; 3lastAverage = 100 (100 が欲しい)
- 101; 3lastAverage = 100 (101 が必要)
- 102; 3lastAverage = 101 (102 が必要)
- 103; 3lastAverage = 103 (103 が欲しい)
一般に、物事が「OK」になったときは、truePrice を最後の数字にする必要があります。
したがって、整数の「オンライン」シリーズがあるため、このシリーズのいわゆる「真の値」を計算する必要があります。これは、次のように定義されています。
- すべてが問題なければ、これは最後の数字です
- 直列に同じ数が多すぎる場合(測定の問題のため)、「真の値」はあまり頻繁に変化するべきではありません。最も適切な値を使用する必要があります
私の提案は次のとおりです。
- 「真の値」が 1 秒に 2 回以上同じ価格になることを禁止するだけです。
例えば:
- 0.000 : 98; 真の値 = 98
- 0.100 : 100; 真の値 = 100
- 0.200:101; 真の値 = 101
- 0.300 : 100; 真の値 = 101 (100 は 0.2 秒前のステップ 2 で既に使用されています)
- 0.400 : 98; 真の値 = 101 (98 は 0.4 秒前のステップ 1 で既に使用されています)
- 0.500 : 99; 真の値 = 99
- 0.600 : 100; 真の値 = 99 (0.5 秒前のステップ 2 で 100 が使用されました)
- 1.500:101; 真の値 = 101 (101 が使用されてから 1 秒以上経過)。
ただし、そのようなアプローチには次のような「バグ」もあります。
- 99tp = 99
- 100tp = 100
- 101 tp = 101
- 102 tp = 102
- 103 tp = 103
- 102 tp = 103
- 101 tp = 103
- 100 tp = 103
- 99tp = 103
- 98tp = 98
- 97tp = 97
ここでの問題は、「tp」がレベル 103 で長時間「凍結」されていたことです。
大変な質問で大変申し訳ありません。しかし、おそらく誰かが密接な問題を解決していて、経験を共有することができます. 私の主な問題は、2 つの相反する問題を同時に解決する必要があることです。
- 「真の価格」は、一般的な条件下での「最後の」値でなければなりません
- 「真の価格」は頻繁に変更すべきではありません (そのため、以前の値を何らかの方法で使用する必要があります)。
- また、いつ「一般的な」条件があり、いつ「測定上の問題」があるのかを判断するのは困難です。
だから私の質問は本当に漠然としていて、誰かがそのようなことを解決しようとしていたことを願っています. いつものように、この問題を解決するには「常識」を使用する必要があります。