著者の対談です。アレクサンドル・スミルノフ - ページ 41

 
lna01:
この中で線間係数a、bが計算される。 A = (SumXY - N3*SumY)*N4; B = (N1*SumY - SumXY)*N2; 説明のために、現在の線形回帰を描くだけの MovingLR_2 版を添付します。特に、前作ではN4の計算でミスがありましたので :) MovingLR_2 は純粋な線形回帰を与えるので、それを確認するのは非常に簡単です。at_LR0では、時間単位から棒単位への変化の精度が悪い。at_LR0のCloseを(High+Low)/2に変更して期間を1にし、MovingLR_2の期間を60ではなく61に変更して1分足チャートで表示しても、結果は全く同じになります。 。







それならMovingLR_2は良いアルゴリズムなので、コードレイアウトをいじればOKです!

at_LR0では、MT4標準ツールキットの線形回帰に 適合させるため、1バーのオフセットが行われます。こんなことする必要なかったかも...。

 
Mathemat:

2 ジガン

線形回帰の場合、式は次のようになります。 LRMA = 3*LWMA - 2*MA

二次回帰の場合。

二次回帰 MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) )- LWMA * ( 12 - 15/( n + 2 ) )

ここで、Nは平均値の周期である。

QWMA( i; N ) = 6/( N*(N+1)(2*N+1) )* sum( Close[i] * (N-i)^2; i = 0...N-1 ) (二乗ウェイトマシーン).

for cubic: おっと、まだTrading Solutionsから取り出せません、私の計算式はそこそこ乱暴すぎます。

2 Candid: 本当に被害妄想ですね、私なら思いつきません...。


配合が違うんです。

何処ら辺が

 
うーん、RMSにとっては、Yurixxよりも さらにおいしい結果になってしまいましたね。

RMS^2 = (Sum(Y*Y) - A*Sum(X*Y) - B*Sum(Y))/(N-2)

Yurixxと 同様、X軸の原点と方向の選択により、表現がシンプルになります。誰もエラーを発見しないのであれば、アルゴリズムへのアプローチはこれで終わりです。計算されたAやRMSが消えないように、インジケータにLRの線画を残し、RMSチャンネルを追加しました :)

ANG3110:

コードのレイアウトを少し調整すれば、すべてOK!

まさにこのインジケータを使うのではなく、アルゴリズムを使うことになると思います。

2ユリックス:
Nが小さい場合のRMS値の違いは、RMS補正ではなく、スタートと方向Xの選択によるようです。なぜなら、これらを変更すると、私の以前の公式も異なる結果を出し始め、何の留保もなく正確だからです。
ファイル:
 
lna01:

2Yurixx: Nが小さい場合のRMS値の違いは、RMS補正ではなく、スタートと方向Xの選択によるもののようです。 なぜなら、それらを変更すると、私の古い式も異なる結果を出し始めるからです。一方、予約なしで正確です。 。

確かに、座標系を正しく選択することは、計算や最終的な数式の見栄えをシンプルにする強力なテクニックです。線形回帰には 使いませんでしたが、すべてが十分に良い結果になりました。しかし放物線回帰では、ある原点を選択すると、最終的な表現は2倍簡単になり、アルゴリズムの有効性は1桁上がる。また、計算の精度に制約があるという問題も完全に解消されました。

しかし、一点だけ同意しかねることがあります。RMS値は、実際の回帰値と同様に、X軸の原点の選択に依存することはできません。おそらく、計算式そのものが違う結果を出し始めているのではなく、計算精度の問題そのものが顕在化しているのでしょう。intは ともかくdoubleは 有効数字が15桁しかないため、計算の過程でかなり早く誤差が蓄積される。特に、XとYの大きさのオーダーが異なる場合は、その傾向が顕著になる。例えば、Xは数十万オーダーのバー番号、Yは1オーダーの価格、価格変動は0.0001オーダーです。


追記

この配合の何が「おいしい」のか、理解したかったのです。明らかに、もっとシンプルに、一行で。なぜ(N-1)で割らずに(N-2)で割るのかが理解できないが。ただし、最大加速度を目指す場合は、別の計算式が必要になることをお断りしておきます。原点Xの選択を現在の価格値に対して固定する場合は、Sum(X*Y)のない数式を使用する方が有利です。そうすれば、すべてのバーでコンボリューションを計算する必要がなくなります。しかし、すべてのバーでSum(Y*Y)またはSum(X*X)を更新することは、1つの演算子です。

 

線形回帰の係数A、Bの現在値がわかっている場合、RMSを計算できるか?

以下はその計算式です。

係数A

係数B

 
Prival:

線形回帰の係数A、Bの現在値がわかっている場合、RMSを計算できるか?

QWMAのような2次関数では、おそらく可能でしょう。しかし、ダミー経由のアルゴリズムは、本質的に非最適である。チャンスは、内蔵ダッシュのネイティブコードを使うことでしたが、失敗したようです。
追伸:QWMAはXの2次式で、Yの2次式の項が必要なことを今思い出しました。だから、QWMAは役に立ちません。
 
Prival:

線形回帰の係数A、Bの現在値がわかっている場合、RMSを計算できるか?


無理だと思います。回帰直線は、AとBの2つの定数で定義されます。AとBが同じなら、この直線の周りの変動は何でもありだ。RMSを計算するためには、XとYの分散も必要です。QWMAはYの二乗を含まないため、Yの分散を決定することができないので、おそらくQWMAも十分ではないでしょう。
 
Yurixx:
QWMAはYを二乗していないため、Yの分散を決定できないので、おそらく十分ではないでしょう。
そうそう、QWMAが全然Y字になってないことを忘れてました。思い出したら、追記しました。
 
Yurixx:

ただ、ひとつだけ、納得できないことがあります。RMS値は、回帰値そのものと同様に、X軸の開始点の選択には依存できない。おそらく、異なる結果が出始めるのは、計算式そのものではなく、この計算精度の問題そのものなのでしょう。

計算結果というのは、まさにそういうことなんです。

なぜ(N-1)で割らずに(N-2)で割るのかが理解できないが。

回帰には自由度が加わるからだ。Yandexは、例えば、http://cmacfm.mazoo.net/archives/000936.html のような詳細な情報を提供することができます。
ただし、最大加速度を目指すのであれば、別の計算式を使うべきでしたね。原点Xの選択を現在の価格値に対して固定する場合は、Sum(X*Y)のない数式を使用する方が有利です。そうすれば、すべてのバーでコンボリューションを計算する必要がなくなります。しかし、各バーでSum(Y*Y)やSum(X*X)を更新するのは一つの演算子です。
Sum(X*Y)はすでにあり、これがなければAもBも計算できない。 これは3つの操作で再帰的に計算される。もっと注意深く_LR0やMovingLRv3を見てください。

追伸:Sum(Y*Y)の場合は3つの演算もありますが、Sum(X*X)の場合は何も ありません。
 
Prival:
数学

二次回帰 MA = 3 * SMA + QWMA * ( 10 - 15/( N + 2 ) )- LWMA * ( 12 - 15/( n + 2 ) )

QWMA( i; N ) = 6/( N*(N+1)(2*N+1) )* sum( Close[i] * (N-i)^2; i = 0...N-1 ) (平方加重のウィザード)です。

他のフォーミュラも手に入れた。

どこ

全く同じ処方で、ありがとうございます、プライヴァル。マッシュアップに関連して、似たようなものを教えてください。