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

 
Yurixx:
プライベートの 話。

しかし、VBAGは 最初に1つの指標を投稿し、その後、別のものと交換し(私はそれをすべて見た:-))、3番目のものを投稿したが、すでに専門家です。そして、数学者が正しいことを納得させるような、動く絵はまだ見えない。 頭の固い軍人は、盲信ではとても「馬鹿」:-)にならない:-)。


セルゲイさん、なぜ動く絵が必要なのかわかりませんが、2行のインジケータを作ることはできます。1つはLRMA、もう1つは3*LWMA-2*MAです。完全に重なり、片方のせいでもう片方が見えなくなってしまいます。もう片方の色を消すと、最初の色が見えるんですね。色をつけると......もう片方しか見えません。

等価性の証明も送りますよ、十数行と短いですから。しかし、線形回帰を実現するためには、解析的に導き出された数式に依存することになる。まあ、すべてを数字で数えるのではなく、できれば有限の数式を使って、サイクルが少なければ少ないほど速くカウントされます。 しかし、これはかなり長い計算で、私はWordでいじくり回したくありません。


ありがとうございます。自分でやってみる。気晴らしが必要だ。ようやくカルマンフィルターを完成させた。でも、1週間もテスターで動かせなかったんです。うまくいったら怖いです:-)私は、そのデータをよりよく準備し、予測をさらに正確にしようとしているエラーを探します。Matkadecでは動くのですが、テスターで動かすのは怖いです。

 
VBAG:
ダッシュやリグレッションを計算するための、より合理的なアルゴリズムがあれば、ぜひ見ていただきたいですね。

アルゴリズムはうるさくて呼べないが、イメージはつかめる。原理は簡単で、スピードで勝って、メモリーで負けるのです。最初の方が必要なので、メモリを搭載する。

例えば、単純なSMA。ビルトインアルゴリズムは、文脈に関係なく、どこでも計算できる普遍的なものでなければならない。また、過去の計算結果を自分のプログラムで使用することができます。新しいSMAの値を計算するためには、過去N個の価格の合計を取り、そこから最初の値を引き、新しい現在の値を加える必要があります。この合計をNで割る。したがって、直前のN個の価格の合計とそのN個の価格の配列を変数に取り込み、バーごとに合計と配列を更新する必要があります。その結果、各バーでSMAを計算するためには、合計の更新、配列要素の 更新、SMA値の計算の3つの演算を実行する必要があります。ループはありません。

 
Prival:

でも、もう1週間もテスターで動かせないんですよ。効きそうで 怖いです :-( .


はい、それもありますね。:-))
 
LeoV さんが書き込みました。
ここでは、例えば、JMAとSSAを50の周期で示します。しかし、SSAをベースにしたCSSAを持っていますが、再描画はしていません。非常に速い。このアルゴリズムをお勧めします......。

もちろん、オフトピックですが、それでも興味深い -LeoV、あなたは私に同じ開発者のCSSAサイクルの 指標の画像(株式で非常に良いように見える)を見せてもらえます?FXの相場での見え方を確認したい。
 
Yurixx:
このような方法は、おそらく意味があるのでしょうが、それは期間が短い場合のみです。 そして、メモリが主な理由ではありません。再起動すると、後ろに引きずっているものがなくなります。それはいいんですけどね。 回答ありがとうございました。
 
Prival:

ようやくカルマンフィルターが完成した。

カルマンというテーマを推しているそうですね。その議論をなぜか見逃していました。どこで見ることができますか?

追伸:この件に関するファイルを添付しました。もしかしたら、誰かが興味を持ってくれるかもしれません。
 
そう、臆病者を自称するならば、箱の中に入るのだ。よし、セルゲイ、これが証明だ(とにかく、私自身の自信のために必要なのだ)。

時間サンプルt = 1, 2, ...があるとする。N.MQL4ではナンバリングが逆になっており、つまりNは現在のバー、「ゼロ」です。これらの読みは、Сlose(1)、Сlose(2)、...という節に対応する。Сlose(N)です。クローズを通る直線y=A*t+BをMNCで構成してみる。そして、A*N + B、つまり現在のバーでのLRMAを計算します。

誤差の二乗和を計算する。

Delta^2 = Sum( ( y(i) - Close(i) )^2; i = 1..N ) = Sum( ( A*i + B - Close(i) )^2; i = 1..N )

このものをAとBで微分し、最適なAとBの商の方程式系を得る。

Sum( ( ( A*i + B - Close(i) ))* i ); i = 1...N ) = 0
Sum( A*i + B - Close(i) ); i = 1...N ) = 0

和を展開すると、次のようになる(表記を簡単にするため、インデックスの範囲は省略した)。

A*Sum( i^2 ) + B*Sum( i ) = Sum( i*Close(i) )
A*Sum( i ) + B*Sum( 1 ) = Sum( Close(i) )

プライベートは、今度は右側を見てください。最初の式の右辺の和は、正規化係数がないだけで、ほぼLWMAである。2番目はSMAで、これもなし。以下は、これらのスケールの正確な計算式である。

lwma = 2/(n*(n+1))* Sum( i*Close(i) )
SMA = 1/N * Sum( Close(i) )

ここで、自然数1からNまでの二乗の和が何に相当するかを思い出し(N*(N+1)*(2*N+1)/6である)、それを今回のシステムに代入すると、次のようになる。

a * n*(n+1)*(2*n+1)/6 + c * n*(n+1)/2 = lwma * n*(n+1)/2
a * n*(n+1)/2 + c * n = sma * n

簡略化すること。

a * (2*n+1)/3 + c = lwma
a * (n+1)/2 + c = sma とする。

システムを解くのが面倒くさい(もうここではっきりしている)。最初の式に3をかけ、2番目の式に2をかけ、最初の式から2番目の式を引くだけです。

a * (2*n+1) + 3 * c - a * (n+1) - 2 * c = 3 * lwma - 2 * sma

左側は、単純化した後、A*N + Bが残る。つまり、点Nでの我々の回帰と全く同じである。
 
アレクセイ!またまたリスペクトLRMAの計算式(オメガの計算式と言うべきか)の「/6」はどこから来ているのか、ずっと気になっていたのです
 
VBAG:
この方法はおそらく理にかなっていますが、それは期間が小さい場合のみです。 また、メモリが主な理由ではありません。再起動すると、後ろに引きずったものが消えてしまいます。でも素晴らしい、回答ありがとうございました。


この方法は、どの期間にも適しています。再起動すると、当然ながらすべてが失われる。しかし、起動時には、いつでもまずこの素朴なアルゴリズムをチャート全体に走らせ、必要な情報を作成することができるのです。あるいは、グラフ全体ではなく、その中の十分な塊に対してのみ実行することも可能です。

この方法の欠点は、1つのiMAの 代わりに、何行かのコードを自分の手で書かなければならないことです。:-)

 

アレクセイ ありがとうございます。鉛筆を持って座ります。AとBの導関数は次のようになります。


再確認したところ、確かにA*N+B=3*LWMA-2*SMAでした。

数学者は微分を取る際に、デュースを逃したが。

という疑問があり、N点ではなく、(N-1)/2点で一致するはずです。ブラシェフ P.156。ようです。以下は、点Nで一致する写真である。だから、私はむしろ間違っている。