6th Degree Poly Help!

 
自己紹介をさせてください。私はデータベースアーキテクトで、データベース全般(SQL、t-SQL、PL/SQL)の強力なプログラミングスキルを持ち、データベース以外の言語(C、C++、C#、VB/VBA)にも十分なスキルを持っています(数学者ではありません)。金融サービス業界で何年も何年も働いていたので、Excelにも精通しています(2013は本当に気に入っています。)

そして、ある日突然、実際の(視覚的でない)数値の実用的なアプリケーションを特定し、「どのように」を決定するためにプレゼンテーションの表面から掘り下げる必要があることを思いついたことは一度もありませんでした。これまでは、視覚的な表現(とその背後にある論理)が売り物だったのです。

そこに、私の探求の目的があります。

次のグラフを見ると、6次多項式のトレンドラインの安定性がはっきりと確認できる。多項式は、SMAが提供する大きな範囲において、より安定的であり、しかも、わずかなレイテンシーで、このようなことができるのです。簡単に言えば、多項式はひるまないと言うことです。私は、2008年の不動産市場の天井を特定するのに使って以来、Excelのポリのトレンドラインに惚れ込んでしまいました(確か、トレンドは5月から6月に変化を特定し、8月から9月に崩壊が起こりました)当時、私がサービスを提供していた住宅ローンポートフォリオのリスク軽減チームに、真剣に注意を促す機能を提供してくれました(視覚的にではありますが)!今、私の探求は始まっています。

ポリグラフ

さて、ここからが私の探求の始まりです。

実用的なアプリケーションを特定した今、私はポリ・トレンドラインの公式の背後にある数学を学ぶ(あるいは私の場合、再学習する)ことに努めました。がんばってください。多項式がもたらす極めて複雑な数式と必要な係数の計算に最小二乗法と行列を加えることは、(私にとって)コードに置き換えるにはあまりにも難しいことなのです。そこで、Excelを(おそらくc++から)呼び出し、(x,y)データ値の配列を与え、LINEST()を使ってポリ(x,y)インターセプト(トレンドライン値)を計算し、この値を私のデスクトップアプリケーション(呼び出し機能が制限されている閉じた専用ソフトウェアアプリ)に戻すことが最も簡単だろうと考えたのです。

LINEST()を使って数式を組み立てるのは、かなりのハードルになっています。データを提供するのは簡単ですが、グラフに完璧に表示されている (x,y) 切片を計算するのはどうしたらよいのでしょうか?新しい測定が行われるたびに計算式が変わり、新しく計算された係数が使用される?なぜ、このようなことが起こるのでしょうか?何時間も何時間もインターネットを探し回って、解決策を探しましたが、(男らしく)ついに指示を仰ぐことにしました。

ソースの値(何年も何年も)は持っています。私が足りないのは、a) poly(x,y) intercept を生成する方法、b) Excel を外部から呼び出して、c) 与えられた (x,y) データに基づく poly(x,y) を返す方法、です。

このトピックに関する記事や非常に具体的な処理方法をお持ちの方、あるいは手を貸してくださる方がいらっしゃいましたら、一生恩に着ますのでよろしくお願いします。

dj


 

i-regrインジケータは任意の次数の多項式回帰を行うことができます。私は3次以上のものを試したことはないが、コードはあるので見てみるとよいだろう。6次でCPUが死ぬかもしれないが、試してみてほしい。


https://www.mql5.com/en/code/8417

 
rocketman99:

i-regrインジケータは任意の次数の多項式回帰を行うことができます。私は3次以上のものを試したことはないが、コードはあるので見てみるとよいだろう。6次でCPUが死ぬかもしれませんが、試してみてください。


https://www.mql5.com/en/code/8417



rocketmanさん、ありがとうございます。このような場合、私は、このような方法でしばらく作業して、私が何を考え出すか見てみることにします。

更新しました。

i-regrはあまり精度が高くないようだ。おそらく、ガウス法(i-regr)と最小二乗法(excel)を使って解いているせいだろう。誰か、もっと良いポリテクをご存じないでしょうか?

 

i-regrは、各バーのClose[]の値で動作しており、おそらく違いがあります(MT4とExcelでパターンの長さを等しくしていると思われます)。

Close[]をOpen/High/Lowに変更したり、weight関数など 他の分析式に変更すれば、簡単に変更できます。

しかし、これで利益が出るとは思えません。他のリペイントトレンドインジケーターと同じです。

 

dennisj2さん、こんにちは。

本当にその数式が必要なのでしょうか?

まず、Kalman, Ehlers, Gauss, Jurik (JMA), DEMA などの他のフィルタを検索してみてはいかがでしょうか。これらのほとんどはローパス(物理)周波数フィルタから派生したもので、そのほとんどがmt4-codeに組み込まれています。

JMA(多くのバリエーションがあります)をより長い周期で設定することで、あなたが探しているものが得られるかもしれませんね。


 
または、AllAveragesインジケータhttp://www.forexfactory.com/showthread.php?t=418219 を使って夢中になってください。
 
dennisj2:
さて、ここからが私の探求の始まりです。

さて、実用的なアプリケーションを特定したところで、ポリ・トレンドラインの公式の背後にある数学を学ぶ(私の場合、再学習する)ことを模索した。がんばってください。多項式がもたらす極めて複雑な数式と必要な係数の計算に最小二乗法と行列を加えることは、(私にとって)コードに置き換えるにはあまりにも難しいことなのです。そこで、Excelを(おそらくc++から)呼び出し、(x,y)データ値の配列を与え、LINEST()を使ってポリ(x,y)インターセプト(トレンドライン値)を計算し、この値を私のデスクトップアプリケーション(呼び出し機能が制限されている閉じた専用ソフトウェアアプリ)に戻すことが最も簡単だろうと考えたのです。

LINEST()を使って数式を組み立てるのは、かなりのハードルになっています。データを提供するのは簡単ですが、グラフに完璧に表示されている (x,y) 切片をどのように計算すればよいのでしょうか?新しい測定が行われるたびに計算式が変わり、新しく計算された係数が使用される?なぜ、このようなことが起こるのでしょうか?何時間も何時間もインターネットを探し回って、解決策を探しましたが、(男らしく)ついに指示を仰ぐことにしました。

ソースの値(何年も何年も)は持っています。私が足りないのは、a) poly(x,y) intercept を生成する方法、b) Excel を外部から呼び出して、c) 与えられた (x,y) データに基づく poly(x,y) を返す方法、です。

このトピックに関する記事や非常に具体的な処理方法をお持ちの方、あるいは手を貸してくださる方がいらっしゃいましたら、一生恩に着ますのでよろしくお願いします。

dj



代数学については、ギリシャ語の例文が載っている記事がたくさんありますが、実際はブードゥー教のようなものです。

例えば、線形回帰についての wikipediaの記事がありますが、私には全く意味がわかりません。しかし、私は今すぐあなたの直線の線形回帰版をコーディングすることができます。なぜなら、他のどこかで、次の公式を使うことを学んだからです。

y=a+bx

wikipediaの記事には、この公式はどこにも出てきませんが、どうして意味があるのでしょうか?

また、この公式を使っていてわかったのですが

a == 傾き

b== 切片

勾配と切片を計算するための数学は知られており、値の合計を計算し、それらの一部を二乗するなどの非常に単純な手順です。

また、二次回帰(2次)の公式はy=ax^2 + bx + cであることも知っています。

ということで、この2つの式は関連していて、3次回帰の式は

y=ax^3 + bx^2 + cx + d となります。

ということで、6次回帰は

y=ax^6 + bx^5 + cx^4 + dx^3 + ex^2 + fx + g

となりますが、aが傾きでbが切片だとすると、cやdはどうなるのでしょうか?それが私があなたの線をコード化できなかった唯一の理由です。私は係数が何であるか、どのように計算するかを知りません。

UPDATE: OK 今、私を混乱させている他のことを学びました。

別の記事で、2次多項式は次のように記述されています。

ax^2 + bx + c = 0 となります。

ということは、傾きや切片の計算をしなくても、2次方程式を解いてa, b, cの値を求めることができるということでしょうか?

しかし、ax^2 + bx + c = 0 はどのように関係するのでしょうか?

との関係は

y=ax^2 + bx + c とどう関係するのでしょうか?

この2つは似ていますが、どうして一方はy=で、もう一方は=0なのでしょうか?

 

SDCです。

ある点での傾きは、関数の 最初の導出によって計算することができます。

y=ax+bのような一次関数は、どの点でも同じ傾き:aを持ちます。

一般に、一次関数 ax^n + bx^n-1 + ... = y の導出は次のようになります。+ nax^(n-1) + (n-1)bx^n-2 ... = y' - 元の関数の最後の定数は、常に 0 になります!

つまり、ax + b = y => y' = a ( <= 1*a^(1-1); b=0 )、2次関数は y' = 2ax + b ( <= 2ax^(2-1) + 1bx^(1-1); c=0 )となるわけですね。

しかし、フィルタの考え方を理解するには、周波数のフィルタリングについて考える(読む)のが良いと思う。それが音であろうと、絵であろうと、引用であろうと、....

一般に、ノイズを除去したいのは、短周期である。そして、線形関数の使用は、1つのアプローチに過ぎません。

 

説明してくれてありがとう。でも、なぜその方程式が何を意味するのかがわからないんだ。もし私が手続き的に個別に係数を計算する方法を知っていれば、それを使って値を差し込むことができますが、それくらいしかできません。

フィルターのコンセプトは理解しているので、OPのラインをどうコーディングするかに興味があっただけです。

しかし、それを行うことに関して、あなたが言うとき。

"つまり、ax + b = y => y' = a ( <= 1*a^(1-1); b=0 )、2次関数は y' = 2ax + b ( <= 2ax^(2-1) + 1bx^(1-1); c=0 )となる。" とあります。

何を言っているのか、それがどう関係するのかすら全く分からないので、多分すぐにポリライン・コーディングはしないでしょう(笑)

 

SDC:

ギリシャ語の例で代数について書かれた記事はたくさんありますが、実際にはブードゥー教です。



SDC - あなたは今、私と同じレベルにいます。私が見つけた線形回帰式は機能しますし、私が見つけた2つのはっきりと異なる式がありますが、同じ結果を生み出します。これらの式は、線形回帰(直線的な傾向線)が目的であれば、素晴らしいものです。

まず、参考資料です。

マイクロソフト:http://office.microsoft.com/en-us/excel-help/linest-HP005209155.aspx

インテグラルカルク(IntegralCalc):https://www.youtube.com/watch?v=1pawL_5QYxE&noredirect=1


線形回帰式 y = mx + b が与えられたとき。

ここで、y = 価格、(例えば、Close[x])

および x = インデックス (例: Bar[x])

およびm = スロープ(各(x、y)のペアに適用される係数)

およびb = Y切片(各(x,y)ペアに適用されるY切片の基準値)。


方法 A:IntegralCalc より方法B:Microsoft から (ここで x(overbar) と y(overbar) は平均値)

IntegralCalcによる線形回帰線線形回帰線 - Microsoft


n次までの多項回帰の傾向線の式でも、比較的簡単に適用できる。

y = m1*x1 + m2*x2 + m3*x3 + ...の式が与えられると、次のようになる。+ b

ここで、変数x, y, m, bは、一次方程式で説明したものと同じ定義である。

全部できたように見えるけど、何が足りないの?

足りないのは、多項回帰のm(傾き)とb(Y切片)の計算です。これらの値を計算するための一次方程式は、多項回帰には当てはまりません。調べたところ、多項式回帰では、行列を使った多項式連立方程式をもとに最小二乗を計算する式が必要なようです。上のグラフの例を見てください。最初のグラフでは、poly(6)の線は全く無傷で、トップとボトムが明確に呼び出されています。このデータがあれば、私は今よりも長くトレードを続けることができ、最終的にトレードあたりの平均pipsを2倍、3倍にすることができます。

2つ目のグラフは、poly(6)とガウス行列を使って傾き係数を解くi-regr法の結果を示しています。言うまでもなく、この方法はかなりのレイテンシーがあるので、かなり役に立ちません。一方、単純移動平均はもっとダメです。SMAは市場の中間的な修正時にあまりにも敏感で、私のEAが過剰反応する可能性があります。

しかし、その結果は、Excelが生成する結果と絶対に一致しなければなりません。LINEST()関数は、係数を計算するために多くの魔術が使われるブラックボックスです。簡単に言うと、この魔術を理解する必要があるのです。

更新:Excelで実装した方法を示すファイルを添付しました。

ファイル:
linest.zip  15 kb
 
graziani:

i-regrは、各バーのClose[]の値で動作しており、おそらく違いがあります(MT4とExcelでパターンの長さを等しくしていると思われます)。

Close[]をOpen/High/Lowに変更したり、weight関数など他の分析式に変更すれば、簡単に変更できます。

しかし、私はこれで利益を上げることができるとは思っていません。これは他のリペイントトレンドインジケーターと同じです。



グラジ

i-regrを使い、上記の結果を比較しました。Poly(6)アルゴリズムとi-regrを比較すると、同じデータセットに基づいてi-regrはpoly(6)よりも大幅にレイテンシーが大きくなっています。私のEAは日中の振動をトレードするのではなく、トレンドのためにホールドしています。そして、反応速度の遅いインジケータを使えば、私のEAは今よりもっと市場を捉えることができるでしょう。具体的には、私が真のpoly(6)アルゴリズムを統合したら、オープンポジションをより長く保持し、トレンドの変化を3-4期間早く 予測することができるようになり、私のエントリーポイントが改善されるでしょう。

理由: