インディケータ: 直線回帰

 

直線回帰:

直線回帰

直線回帰

作者: Mladen Rakic

 
 

あなたのバージョンは同じ数学のようです:

https://www.mql5.com/ja/code/429

私はNZDUSD,D1で20の期間で両方を実行し、それらは正確に一致した。

違いは

  • あなたのは傾きを色分けしている。

  • 彼のは、バーとポイントを "ずらす "機能がある。

  • APPLIED_PRICEを切り替える機能がある。
 
Anthony Garot:

あなたのバージョンは、同じ数学のように見える:

https://www.mql5.com/ja/code/429

私はNZDUSD,D1で20の期間で両方を実行し、それらは正確に一直線に並んだ。

相違点

  • あなたのは傾きを色分けしている。

  • 彼のはバーとポイントを "シフト "する機能がある。

  • あなたのはAPPLIED_PRICEを切り替える機能がある。

その方法(3*lwma-2*sma)は、投稿のリンクで説明されており(そのリンクもチェックしてください、このリンクはhttps://www.mql5.com/ja/articles/270)、長い間存在し、このフォーラムで最初に紹介されました(率直に言って、そのアルゴを最初に紹介したのが誰だったのか正確には覚えていません、「mathemat」だったと思いますが、私の言葉を鵜呑みにしないでください)。

コードについて:私が投稿したコードはシングルパス・コードであり(だから速い)、Nikolaysのコードとは何の共通点もない。この投稿の目的は、どのようなタイプのコードにも柔軟に使える高速な(CPU的に高速な)方法を投稿することでした。そして、すべてのテストによると、それはメタトレーダー5で使用するのに十分速く、柔軟性も十分です。

それではまた。

3 Methods of Indicators Acceleration by the Example of the Linear Regression
3 Methods of Indicators Acceleration by the Example of the Linear Regression
  • www.mql5.com
Fast calculation of the indicators is a vitally important task. Calculations can be accelerated by different methods. There are plenty of articles concerning this issue. And now we are going to examine 3 more methods to accelerate calculations and sometimes even to simplify a code itself. All described methods are algorithmic ones, i.e. we...
 
Mladen Rakic:


コードについて:私が投稿したコードはシングルパス・コードであり(だからこそ速い)、Nikolaysのコードとは共通点がありません。この投稿の目的は、どのようなタイプのコードにも柔軟に使える高速な(CPU的に高速な)方法を投稿することでした。そして、すべてのテストによると、それはメタトレーダー5で使用するのに十分速く、柔軟性も十分です。

OK。速いのはいいことだ。私はコードを比較したのではなく、結果だけを比較したのです。

Nikolaysのコードをしばらく使っていますが、私が持っているインジケーターの 中で一番遅いです。速いのはいいことだ。

これからも頑張ってください!

 
Automated-Trading:

ライナー回帰

著者Mladen Rakic

素晴らしい実装だ。おめでとう。

  • これの目的は何ですか?難読化?
#define ¤ instance
#define _functionInstances 1
  • 下のコードで >= を使わない理由はあるのだろうか?)
   if(i>period)
 
Alain Verleyen:

素晴らしい実装だ。おめでとう。

  • これの目的は何ですか?難読化?
  • 下のコードで>=を使わない理由はあるのだろうか?)

難読化はしない:

関数 コードをひと目見ただけで、何がどこで使われているのかがよくわかる)。パラメータ名として直接使うこともできますが、そうすると、関数名を入力したときに、オートフィルでパラメータ名が表示されたときに、「わかりにくすぎる」ことになります。

functionInstances "については、コンパイル時のディレクティブに変換されるため、計画を立てるのに役立ちます。複数の関数インスタンス(つまり、何らかの理由で異なるパラメータ)を使いたい場合は、単に定義値を変更するだけで、異なるパラメータで使用するための配列割り当てのための正しい数にコンパイルされます。また、コンパイラのディレクティブであるため、実行時のコストがかからない。

">="については、2つの理由がある:

  • コンパイラが他のもの(">=")に変換しない限り、(関数呼び出しのたびに実行される)条件が1つ減るが、プロファイラの結果から判断すると、その場合は1つではなく2つの条件として使われている。
  • 最終的なスピードはまったく落ちないし、次の処理のためにすべてが適切に設定されていることを確認している(最初の合計処理が1つ増えることで、それが確実になる)。
 
Mladen Rakic:

難読化はしない:

関数 コードをひと目見ただけで、どこで何が使われているのかがよくわかる)。パラメータ名として直接使うこともできますが、そうすると関数名を入力したときや、オートフィルでパラメータ名が表示されたときに「わかりにくすぎる」ことになります。

functionInstances "については、コンパイル時のディレクティブに変換されるため、計画を立てるのに役立ちます。複数の関数インスタンス(つまり、何らかの理由で異なるパラメータ)を使いたい場合は、単に定義値を変更するだけで、異なるパラメータで使用するための配列割り当てのための正しい数にコンパイルされます。また、コンパイラのディレクティブであるため、実行時のコストもかかりません。

OOPのアプローチを試すべきだ。

">="については、2つの理由がある:

  • コンパイラが他のもの(">=")に変換しない限り、(関数呼び出しのたびに実行される)条件が1つ減るが、プロファイラの結果から判断すると、その場合は1つではなく2つの条件として使われている。
あなたの言いたいことが理解できないのですが?
  • 最終的なスピードには全く影響しませんし、その後の処理のためにすべてが適切に設定されていることを確認しています(最初の合計処理が1つ追加されることで、それが確認されます)。

もちろん">"は機能している。私の発言は、「1ループ」を失っていると言いたかっただけで、もちろん最終的なスピードはあまり変わらない。"それを確認する "というのは、むしろ迷信のように思える;-)

 

Alain Verleyen:
You should try an OOP approach.

...

こんな感じですか?)

OOPモードでリング・バッファ・アプローチを使っているので、計算全体に1つのmod命令が追加されるんだ。投稿されたものも十分OKだと思うよ :)


 
Mladen Rakic:

こんな感じ?)

OOPモードでリング・バッファ・アプローチを使っていて、そのために計算全体にmod命令が1つ追加されるんだ。投稿されたものも十分問題ないと思います :)


そうだね、スピードとメモリは常に妥協の産物なんだ。

もちろん、OOPの主な利点はメンテナンスと再利用性であって、スピードではない。

 
私はいつも正しい数学に興味をそそられる。(x,y)の線形回帰 モデルは市場によく合っている。NumPyで(bars,price,volume)(volume weighting)を使って実験してみたが、同じような結果が得られた。また、(time,price)を繰り返し、ソートし、結果を見つけることで、出来高による重み付け分位型回帰を行いました。NPでは簡単な作業ですが、MQL5では不可能でした。