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

 
このRMS^2 = M[X^2] - (M[X])^2 という式は、実は分散、つまり完全特性のためのものなのです。おそらく、「クロスオーバー」の合計が明示的または暗黙的にゼロにされたのだろう。大きなサンプルの場合、これは十分に正しいです。しかし、小さなサンプルでは、実際のRMSは異なるかもしれません。でも、まだ確認できていないんです。
 
Mathemat:

由良 標準機能よりも高速にRMSをカウントしたいんです。うまくいったら?1回の呼び出しでは、その言語で書かれたどのコードよりも速いはずですが、大量(チャート全体の計算)の場合は、コスト削減が可能です。


線形回帰の scoについて言えば、数式で一段階解析的に計算されます。

sko^2=d[y] - d[x]*a^2,

ここで、D[Y]=M[Y^2]-M[Y]^2,D[X]=M[X^2]-M[X]^2,Aは 線形回帰係数Y=A*X+Bです。

だから、リカバリーはここでは必要ないのです。

PS そして、クロスサムは、明示的に純粋に解析的にゼロにされます。サンプルの大きさは関係ない。

 
Prival:

まだエラー 2008.02.15 17:07:22 2007.01.11 12:15 OTF_1 EURUSD,M1:MathSqrt 関数に負の引数を指定。

エラーの内容から判断すると、MathSqrt(lambda*lambda*lambda+16.0*lambda*lambda)はこの辺にあるはずです。しかし、lambda=MathAbs(Value1[i]/Value2[i]) ;は負になりえない。
そんなわけで、念のためlambda=0.0を実行することくらいしか思いつきません。
と MathSqrt(MathAbs(lambda*lambda*lambda*lambda)) を併用することで、このエラーを永久に解消することができます。
//---- メインループ
double alpha, lambda=0.0 ;
//********************************************************************************************
for (i = limit; i >= 0; i--)
{
Price[i]=(High[i]+Low[i])/2.0;
}
for (i = limit; i >= 0; i--)
{
Value1[i]=SC*(Price[i]-Price[i+1])+4*SC*Value1[i+1];
Value2[i]=SC*(High[i]-Low[i])+4*SC*Value2[i+1];
}
for (i = limit; i >= 0; i--)
{
if(Value2[i]< Point)Value2[i]=Point;else lambda=MathAbs(Value1[i]/Value2[i])とする。

alpha=(-lambda*lambda+ MathSqrt(lambda*lambda) )/8.0;

Value3[i]=alpha*Price[i]+(1.0-alpha)*Value3[i+1];
}
//********************************************************************************************

P.S. 一般的にはナンセンス。このエラーはテスターでポップアップしているはずです。
P.P.S. おそらく、変数 double lambda; がデフォルトで非常に小さな負のゴミで初期化されていたのでしょう。そうすると、double lambda=0.0;式が役に立つはずです。
スラバは私たちに教えてくれる - デフォルトでは決して動作しませんし、我々は学ぶことはありません
 
VBAG:
プライベートの 話。

まだエラー 2008.02.15 17:07:22 2007.01.11 12:15 OTF_1 EURUSD,M1:MathSqrt 関数に負の引数を指定。


追伸:それはおかしいですね。このエラーはおそらくテスターで表示されているのでしょうか?
P.P.S. おそらく、変数 double lambda; がデフォルトで非常に小さな負のゴミで初期化されていたのでしょう。そうすると、double lambda=0.0;式が役に立つはずです。
スラバは私たちに教えてくれる - デフォルトでは決して動作しませんし、我々は学ぶことはありません

地元のボットニックは、いつも何か自転車を発明しようとしている。

無駄な汗をかかないように。カスタムインデックスの中にBands.mq4がある - RMS計算のアルゴリズムがある
 
<br /> translate="no">。

sko^2=d[y] - d[x]*a^2,

ここで、D[Y]=M[Y^2]-M[Y]^2,D[X]=M[X^2]-M[X]^2,Aは 線形回帰係数Y=A*X+B である。

だから、リカバリーはここでは必要ないのです。

この手の処方には不要なものが多いんです。
また、再帰性が不要とはどういうことですか、和はどのように計算するのですか?それとも、期待値を平均値に置き換えないやり方があるのでしょうか?

追伸:ちなみに、クロスサムは勝手に出ていくわけではありません。少なくとも私はそうしなかった。分散ではなく、"本物 "の表現に挑戦してみよう
 
任意の関数に対するRMS

sq = 0.0;
for (int n=0; n<period; n++)
{
   dc = Close[n] - fx[n];
   sq += dc * dc;
}
sq = MathSqrt(sq/period);
したがって、線形回帰の 場合は、

となります。
sq = 0.0;
for (n=0; n<p; n++)
{
   lr = b + a * n;  
   dc = Close[n] - lr;
   sq += dc * dc;
}
sq = MathSqrt( sq / p );
 
ANG3110:
したがって、線形回帰の場合は、次のようになります。

sq = 0.0;
for (n=0; n<p; n++)
{
   lr = b + a * n;  
   dc = Close[n] - lr;
   sq += dc * dc;
}
sq = MathSqrt( sq / p );

これは定義によるものです。LRがあまり短くない場合は、余分なサイクルがなく、より正確にRMSを計算することができます。ソースMovingLR.mq4にはRMSを計算するコードがありますが、コメントアウトされており、RMSはrmsYと呼ばれています。
 
lna01:

sko^2=d[y] - d[x]*a^2,

ここで、D[Y]=M[Y^2]-M[Y]^2,D[X]=M[X^2]-M[X]^2,Aは 線形回帰係数Y=A*X+B である。

だから、リカバリーはここでは必要ないのです。

これらの数式には冗長な部分が多くあります。
また、再帰性が不要とはどういうことですか、和はどのように計算するのですか?あるいは、期待ペイオフを平均値で置き換えることを避ける方法があるのでしょうか?

追伸:ちなみに、クロスサムは勝手に出ていくわけではありません。少なくとも私はそうしなかった。分散ではなく、"本物 "の表現に挑戦してみよう


これらの式の中で、何が余計なのか、とても知りたいのですが?:-)

MOはもちろん、平均に置き換えられ、総和を計算しなければならない。ただし、再発、あるいは周期は必要ない。以下の式で十分です。

S(X)[i+1]=S(X)[i] - X[i-N+1] + X[i+1] ここでS(X)[i]=Sum(X[k]; k=i-N+1, i-N+2, ...,i-1,i )

えーと、もしかして、再発というとこの表現のことですか?それなら、もちろん、その通りです。

本当の表現」については、これらの数式はどこから来ているのでしょうか?さて、この「実数式」に、MNCから導かれるA、Bの有限式を代入すると、ちょうど上記の実効値式になります。対応する解析計算をお教えします。

 
Yurixx:
lna01 です。


関連する分析計算をお教えします。


新しいデータでは、係数AとBが変化する可能性があると思います。)LRの場合は解決しそうですが、放物線回帰の場合はどうなんでしょうか?
 
lna01:
これは定義によるものです。LRがあまり短くない場合は、余分なサイクルがなく、より正確にRMSを計算することができます。ソースMovingLR.mq4にはRMS計算のコードがありますが、コメントアウトされており、RMSはrmsYと呼ばれています。 。
はい、一度やって最後の要素を引き、新しい最初の要素を追加することができます。すると、サイクルなしで動作するようになります。そんなことをmql2で、MT3でやってました。今でも、線形回帰だけ でなく、必要に応じて行っています。