微分積分、例 - ページ 4

 
ユスフホジャ・スルトノフ

サンプルをN=100に増やすと、4次式で次のような結果になる。



数学的に言えば、検索の境界線は非常にあいまいです。どのように見えるのか、詳しく教えてください。

 
ニコライ・セムコ

はい、勘違いしてました。本当に近似値を使っているのかと思っていました。あなたのコードをよく見てみると、これは近似ではなく、非常に珍しいものではありますが、単なる些細な平均化であることに気づきました。その後、紫の線と赤い線を72本分左にずらして92本の赤い尾を描き終えると、新しいバーが出るたびに描き直されます。青い線は、紫の線をシフトして形成されています。ちなみに始値より終値を使うのが正しいですクローズに変更すると、92本のバーの赤い尾が1ティックごとにジャンプしていることがすぐにわかります。

移動平均を 左にずらしたところで、何の役にも立たないし、実用性もない。それは、美しさ、フィット感、魅力に役立つだけです。

近似と平滑化(平均化)の違いを理解する必要がある。近似計算は、与えられたデータ区間の関数(多項式、フーリエ、ベジェ、スプラインなど)の係数を計算し、これらの係数は、少なくとも一つのデータ値が変化すると原則としてすべて変化するので、観測されたデータ区間で関数を描き直します。しかし、平均化の場合は、過去のデータを基にした現在の1点のみを考慮するため、平均化(平滑化)は再描画されず、近似とは異なり常にデータから遅れている。
それに、コードに度数もないのに、何度かの多項式とニュートンの二項式がどう関係するのか理解できない。

))

そして、今度は明示的なSin関数がない正弦波です。

正弦波の差分方程式: https://dxdy.ru/post1247421.html#p1247421

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a2_Buffer[i]=  2701*a1_Buffer[i]   -5328   *a1_Buffer[i+1 ]    +  2628 *a1_Buffer[i+2 ];

      a4_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a4_Buffer[i+0+z]=  5*a4_Buffer[i+1+z]  -  10*a4_Buffer[i+2+z]   +   10*a4_Buffer[i+3+z]  -  5*a4_Buffer[i+4+z]  +  1*a4_Buffer[i+5+z];  }}

      a3_Buffer[i+292]=a1_Buffer[i];   if(i<=1) { for(z=292-1;z>=0;z--){         a3_Buffer[i+0+z]=  2.998096443*a3_Buffer[i+1+z]  -  2.998096443*a3_Buffer[i+2+z]   +   1*a3_Buffer[i+3+z]   ;  }}

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]   +   1*a5_Buffer[i+3+z]   ;  }}

      a6_Buffer[i+292]=a1_Buffer[i];   if(i<=1) { for(z=292-1;z>=0;z--){         a6_Buffer[i+0+z]=  3.998096443*a6_Buffer[i+1+z]  -  5.996192886*a6_Buffer[i+2+z]   +   3.998096443*a6_Buffer[i+3+z]  -  1*a6_Buffer[i+4+z] ;  }}

周期144の正弦波の計算がハイライトされます。1つ目は定数付近(図中緑)、2つ目は傾斜線付近(図中赤)である。

Рекуррентная формула для синуса : Дискуссионные темы (М) - Страница 7
  • dxdy.ru
В принципе, используется и рекуррентное вычисление через возвратное уравнение второго порядка, и через комплексную экспоненту. Первое менее расходно по ресурсам (умножение и два сложения и две ячейки памяти) по сравнению со вторым (два умножения, четыре сложения, две ячейки памяти при постоянной частоте), но накапливается погрешность быстрее...
 

すぐにでも支店に「読書リスト」を添付すればよかったかもしれませんね。))

このテーマに関する文献はたくさんあるので、私の好みに合わせてスリムな本をいくつか提案します。

レオニード・クズミッチ・ラフチン著「有限差分の微積分」。

Markushevich A.I. リターンシークエンス

 
アレクセイ・パンフィロフ

))

そして、今度は明示的なSin関数がない正弦波です。

正弦波の差分方程式: https://dxdy.ru/post1247421.html#p1247421

周期144の正弦波の計算が強調されている。1つ目は定数付近(図中緑)、2つ目は傾斜線付近(図中赤)である。


Alexeyさん、文献をありがとうございます。再帰は、関数やアルゴリズムの高速化に有効で、うまく応用できる場合もあることは認めるが、正直なところ、あまり自信はない。
私はただ、物事は正式名称で呼ぶべきであり、従来の用語を使うべきであり、混乱が生じないようにすることを提唱しているのです。私見ですが、このスレッドの冒頭で再帰について言及し、補間、近似、多項式については、あなたの例には示されていないので、言及しない方が論理的だったと思います。そして、インジケータを左にずらすことに注力し、過度な形の正しさで他人を惑わさないようにしたほうがよかったのでは、誰もが他人のコードを理解するのが好きなわけではないので、私もそれにひっかかったのです。

アレクセイ、私の理解する限り、あなたは再帰の問題ではプロです。個人的には無知なんですけどね。質問と要望と提案があります。フーリエ法での近似を高速化するために、自分の方法を使えるか?何か、ありそうな気がするんですよね。出来ればwowow!!!となり、実用性は絶大です。MT5でのフーリエ外挿による近似の例を添付します(この方がはるかに速く、単純にうまく動作します)。この例を参考に、Ctrlキー(開始位置の変更)とShiftキー(倍音数の変更と同時に観測期間の変更)によるマウス操作を加えて、わかりやすくしました。試していただけますか?

このインジケーターは以下の通りです。まず、チャートをマウスでクリックし(ウィンドウをアクティブにする)、Ctrlキーを押しながら(そして離す)マウスを動かして開始位置を変更し、終了するには任意のキー(CtrlとShiftを除く)を押してください。Shiftキーで周期(近似関数のバーの範囲)を変更する場合も同様です。

ファイル:
Fourier.mq5  16 kb
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

微分積分、例

ニコライ・セムコ さん 2018.01.12 00:43


私は、物事は正式名称で呼ぶべきであり、一般的に受け入れられている用語を使用することで、混乱を避けるべきだと提唱しているに過ぎません。私見ですが、このスレッドの冒頭で再帰について言及し、補間、近似、多項式については、あなたの例には示されていないので、言及しない方が論理的だったと思います。また、他人のコードを覗き見するのが好きな人ばかりではないので、形の正しさで誤解を招かないよう、インジケータを左にずらすことに注力した方が正解だったのですが、私もまんまと引っかかってしまいました。


Nikolaiさん、投稿と添付のインジケータをありがとうございます。

そして、私も全く同感で、まず用語や名称を曖昧にしない理解が必要です。

私の立場を説明させてください。

2点で直線を引くことができる。つまり、この直線の任意の点を、点間の間隔の内側に見つける(内挿)ことも、点間の間隔の外側に見つける(外挿)こともできるのだ。

例えば、直交座標系で一次二次方程式で表される 正方形の放物線に対応する一値曲線が描けます。つまり、この曲線の任意の点を、極点間の区間内に見つけること(内挿)も、区間外に見つけること(外挿)も可能なのである。これらの点がプロットされる法則は多項式であることに変わりはない。また、少なくとも3点によって、正弦波法則を仮定すれば曖昧さのない正弦波、存在を仮定すれば円を描くことが可能であることを付け加えておきたい。

このように、3点 この場合、2点は以前の履歴を蓄積し 、3点は新しい情報を伝える)の4次に対する2次の多項式による補間は、行為またはプロセスの必要(他の法則もあるかもしれない) かつ十分な定義であることがわかる。

もちろん、他の用語を提案するのであれば別ですが。

とはいえ、必要最小限の数値を超えた数値の数で曲線を描くのであれば、回帰を含め、統計的に(あるいはその他の方法で)健全な重み付けをするべきだということには、私も全面的に賛成です。
 
アレクセイ・パンフィロフ


Nikolaiさん、投稿と添付のインジケータをありがとうございます。

そして、まず用語や名称の明確な理解が必要であることは、全く同感です。

私の立場を説明させてください。

2点上に直線を引くと、その直線の任意の点を、点間距離の内側(内挿)か、点間距離の外側(外挿)に求めることを意味します。

例えば、直交座標系で一次二乗方程式で表される二乗放物線に対応する一次曲線が描けます。つまり、この曲線の任意の点を、極点間の区間内に見つけること(内挿)も、区間外に見つけること(外挿)も可能なのである。これらの点がプロットされる法則は、多項式のままである。また、少なくとも3点によって、正弦波法則を仮定すれば曖昧さのない正弦波、存在を仮定すれば円を描くことが可能であることを付け加えておく。

このように、3点(この場合、2点は以前の履歴を蓄積し、3点は新しい情報を伝える )の4次に対する2次の多項式による補間は、行為またはプロセスの必要(他の法則もあるかもしれない) かつ十分な定義であることがわかる。

もちろん、他の用語を提案するのであれば別ですが。

とはいえ、必要最小限の数を超える値のカーブを描く必要がある場合は、回帰を含め、統計的に(あるいはその他の方法で)正当な値の重み付けをする必要があることには全く同意します。

3点による多項式曲線の構築方法 私は最近、このコードで 実装しました 一度ご覧になってはいかがでしょうか。

しかし、あなたのコードでは3点による多項式を計算することはできません。

アレクセイ・パンフィロフ

グラフにするとこのようになります。

青-赤の線は、肩が72の4次多項式による補間(区間内の点を見つけること)である。

a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

細い青線は、レバレッジ78の次数2の多項式による外挿(区間外の点を見つけること)である。

a2_Buffer[i]=  3160*a1_Buffer[i]   -6240   *a1_Buffer[i+1 ]    +  3081*a1_Buffer[i+2 ];

赤線は4乗の多項式を構成する線です。再描画され、最後のバーの始点が基準となります。

a4_Buffer[i+92]=a1_Buffer[i];   if(i<=10) { for(z=92-1;z>=0;z--){        a4_Buffer[i+0+z]=  5*a4_Buffer[i+1+z]  -  10*a4_Buffer[i+2+z]   +   10*a4_Buffer[i+3+z]  -  5*a4_Buffer[i+4+z]  +  1*a4_Buffer[i+5+z];  }}


2次多項式や4次多項式と呼ばれるものは多項式ではありません。

2次の多項式を表す式なので

Price = a+b*i+c*i²

が、4次多項式の式である。

Price = a+b*i+c*i²+d*i³+f*i⁴

どこ

a,b,c,d,f - 算出される係数.

iはバーの数です。

そして、平均化の方法は、(次数2の多項式を例にとると)ある線分iの現在点を、重み係数の異なる別の線分の最後の3点(i、i+1、i+2)から計算するという凝ったものになっていますね。これを平均化(または平滑化)といいます。そのため、平均化の結果生じるラグを隠すために、チャートを72本左にずらしたのですね。

私の例では、3点による多項式の計算がはっきりと見えています。

 
ニコライ・セムコ

しかし、私の例では、3点にわたる多項式の計算が、はっきりと明瞭に見えています。

あなたのインジケーターはとても優秀です。

4に同じものがあれば、このスレッドの 投稿23から、グレーの指標線の任意の3点に取り付けてください。

このライン(グレー)は、バッファで計算されます。

 a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]   +   1*a5_Buffer[i+3+z]   ;  }}
1*Y1-3*Y2+3*Y3-1*Y4=0 - 2次放物線差分方程式等距離の点の場合。
 
アレクセイ・パンフィロフ

あなたのインジケーターはとても良いものです。

もし、同じものを4つお持ちでしたら、このスレッドの 投稿23から、グレーのインジケーターラインの任意の3点に取り付けてください。

このライン(グレー)は、バッファで計算されます。

1*Y1-3*Y2+3*Y3-1*Y4=0は2次放物線の差分方程式 です。等距離の点の場合。

MT4用の コードは、そこのコメント欄のさらに下にあります。

そうです、あなたが持っているグレーの線は多項式です。そして、再描画した2メッセージから シフトした平均までの92バーの赤いテールも多項式で、ただ再描画しているだけなのです。しかし、あなたはそれ以外のものを多項式と呼び、同時に自分の多項式は再描画されないと主張しています。そして、それはない。だから、物事にはちゃんと名前をつけて呼んでほしいのです。

ちなみに、私の例では、多項式の次の点の形成は、係数の計算によって行われ、このアルゴリズムは、あなたの「差分計算」よりも高速です(私も前の値との差を適用しますが)。

for(i=1; i<=Bar[0]; i++) { ArcDownBuffer[i]=ArcDownBuffer[i-1]+D2; D2+=2*C2;}

を選択してください。

for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]   +   1*a5_Buffer[i+3+z]   ;  }
 
ニコライ・セムコ

MT4用の コードはコメント欄のさらに下にあります

そうです、あなたが持っているグレーの線は多項式です。そして、2ndメッセージから 92本のバーの赤いテールは、シフトした平均に描かれていますが、これも多項式で、描きすぎです。しかし、あなたはそれ以外のものを多項式と呼び、同時に自分の多項式は再描画されないと主張しています。そして、それはない。だから、物事にはちゃんと名前をつけて呼んでほしいのです。


そうですね、2次の多項式なら作図に関わるのは4点だけ、4次の多項式なら6点というのは納得できますね。 得られた、再描画されない直線全体は、もちろん多項式ではなく、ある次数の多項式を使って考えられた場合のみ構成されます。

細い線は、次の点を構成する多項式を可視化したに過ぎない。

条件に同意したようですね。:)


ちなみに私の例では、多項式の次の点の形成は係数の計算によって行われ、このアルゴリズムはあなたの「差分計算」よりも高速です(私も前の値との差を適用しますが)。

for(i=1; i<=Bar[0]; i++) { ArcDownBuffer[i]=ArcDownBuffer[i-1]+D2; D2+=2*C2;}

を選択してください。

for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]   +   1*a5_Buffer[i+3+z]   ;  }

スピードについては、おそらくおっしゃるとおりだと思います。

スピードの問題や、おそらく過失の問題には触れない方がいいと思います(そもそも私の問題ですが:))。) をコーディングすることは、もちろん、重要でないなら、可能です。

 
ニコライ・セムコ

あなたの手法でフーリエ近似を高速化することは可能ですか?何か、ありそうな気がするんですよね。もしできたら、すごい!!...と、実益は絶大です。MT5でのフーリエ外挿による近似の例を添付します(この方がはるかに速く、単純にうまく動作します)。この例を参考に、わかりやすくするために、Ctrlキー(開始位置の変更)とShiftキー(高調波数の変更と同時に観測期間の変更)によるマウスコントロールを追加して、少し改良してみました。試していただけますか?

このインジケーターは、まずチャートをマウスでクリックし(ウィンドウをアクティブにする)、Ctrlキーを押しながら(そして離しながら)マウスを動かして開始位置を変え、終了するには任意のキー(CtrlとShiftを除く)を押す、というものです。Shiftキーで周期(近似関数を計算するバーの範囲)を変更するのも同じです。


フーリエについては、話題が豊富です。興味があれば、随時触れていきます。

ほとんどの場合、(他の方法による)問題文から主な疑問が生じます。さて、私の理解するところでは、このインジケータはフーリエ・スペクトルから最も振幅の大きい周波数を選択するものです。

すでに平均化された多項式線にフーリエ 指標をねじ込むという発想がありました。その外挿された数値は、もっとゆっくり変化するのではないかと思っています。