フィルター係数の扱いはどうすればよいのでしょうか? - ページ 4

 

素人考えで申し訳ないのですが、SATL FATLなどのデジタル フィルターは、先生のお仕事に近いのでしょうか、それとも別分野のものでしょうか?

エレクトロニクスの何かだと理解しています。引用に適用する哲学や理論的な妥当性はどうなのか?

 

信号処理については、Sophocles J. Orfanidis, Optimum Signal Processing(and Introductionto Signal Processing)を参照。

 
Maxim Dmitrievsky:

素人考えで申し訳ないのですが、SATL FATLなどのデジタル フィルターは、先生のお仕事に近いのでしょうか、それとも別分野のものでしょうか?

私の理解では、エレクトロニクスの何かだと思うのですが。引用に適用できる哲学や理論的な妥当性はどのようなものですか?


この種のフィルターについての説明のリンクを教えてください。そうすれば、はっきりと答えられるはずです。ざっと読んだだけでは記事に記載がありませんでした。

有限インパルス応答FIRまたはFIRを持つフィルタのクラスを英語で作成します。そして、どのようなタイプやパラメータになるかは、係数のみで決定され、アルゴリズムはすべて同じです。

楕円形フィルタの係数は、最も短いので、遅延が少なくなると考えています。

哲学と妥当性について - 電気信号、相場、その他のデータ、何をフィルターにかけるかに違いはない。フィルタの仕事は、不要な周波数を取り除くことです。例えば、LPFは高域を潰してしまいますが、時間領域では高域のノイズを殺してしまうので、見積もりは滑らかになります。それがよくわかるチャートを掲載しました。同じSimple MA mouvingは一般的なFIRフィルタですが、あまり効果がありません。記事で詳しく見てみました。

 
Alexey Volchanskiy:


この種のフィルターについての説明のリンクを教えてください。そうすれば、はっきりと答えられるはずです。ざっと読んだだけでは、記事に記述が見当たりませんでした。

有限インパルス応答FIRまたはFIRを持つフィルタのクラスを英語で作成します。そして、どのようなタイプやパラメータを持つかは、係数のみで決定され、アルゴリズムはすべて同じである。

楕円形フィルタの係数は、最も短いので、遅延が少なくなると考えています。

哲学と妥当性について - 電気信号、相場、その他のデータ、何をフィルターにかけるかに違いはない。フィルタの仕事は、不要な周波数を取り除くことです。例えば、LPFは高域を潰してしまいますが、時間領域では高域のノイズを殺してしまうので、見積もりはスムーズになります。それがよくわかるチャートを掲載しました。同じSimple MA mouvingは一般的なFIRフィルタですが、あまり効果がありません。記事で詳しく取り上げています。


しかし、そこには記事へのリンクが勝手に挿入されており、まさにこの問題を扱っているのです。

https://www.mql5.com/ru/articles/32

Практическая реализация цифровых фильтров на MQL5 для начинающих
Практическая реализация цифровых фильтров на MQL5 для начинающих
  • 2010.03.19
  • Nikolay Kositsin
  • www.mql5.com
Идее цифровой фильтрации сигналов посвящаются достаточно объёмные темы обсуждения на форумах по построению торговых систем. В этой статье автор знакомит с процессом превращения кода более простого индикатора SMA из своей статьи "Пользовательские индикаторы в MQL5 для начинающих" в код гораздо более сложного универсального цифрового фильтра. В ней также изложены простейшие приёмы замены текста в коде и методика получения простейших навыков по исправлению ошибок программирования.
 
Quantum:

信号処理については、Sophocles J. Orfanidis, Optimum Signal Processing(and Introductionto Signal Processing) という本があります。


すべてポインターを使った例ですが、多くの例があるのが興味深いです。アラビア語

/* cfir1.c - FIR filter implemented with circular delay-line buffer */

void wrap();

double cfir1(M, h, w, p, x)
double *h, *w, **p, x;
int M;
{                        
       int i;
       double y;

       *(*p)-- = x;
       wrap(M, w, p);                          /* \(p\) now points to \(s\sb{M}\) */

       for (y=0, h+=M, i=M; i>=0; i--) {       /* \(h\) starts at \(h\sb{M}\) */
              y += (*h--) * (*(*p)--);
              wrap(M, w, p);
              }

       return y;
}

ここまでやったのは、クラスなしの例からです。m_Coeff[] には、係数をロードする必要があります。

#define  TICK_BUF_SIZE       0x1000              // 4096
#define  TICK_BUF_MAX_IDX    (TICK_BUF_SIZE - 1) // 0xFFF
#define  OUT_BUF_SIZE        0x10000             // 65536
#define  OUT_BUF_MAX_IDX     (OUT_BUF_SIZE - 1)  // 0xFFFF   

double  m_TickBuf[TICK_BUF_SIZE]; // ring-buffer for ticks store
double  m_OutBuf[OUT_BUF_SIZE];   // output ring-buffer
double  m_Coeff[];                // coefficient array
int     m_CoeffSize;              // size of m_Coeff  
int     m_TickBufIdx;             // index of new tick placed in m_TickBuf
int     m_OutBufIdx;              // index of new tick placed in m_OutBuf

//+------------------------------------------------------------------+
//| filter one tick                                                                 |
//+------------------------------------------------------------------+
double  FilterTick(double tick)
  {
   static double acc;
   static int tbIdx;
   acc=0;
   tbIdx=m_TickBufIdx;
   m_TickBuf[m_TickBufIdx]=tick;
   if(m_TickBufIdx==0)
      m_TickBufIdx=TICK_BUF_MAX_IDX;
   else
      m_TickBufIdx--;
// filter in cycle "for""
   for(int n=0; n<m_CoeffSize; n++)
     {
      acc+=m_TickBuf[tbIdx++]*m_Coeff[n];
      tbIdx &=TICK_BUF_MAX_IDX; 
      /* it was little optimization instead if
      if(tbIdx > TICK_BUF_MAX_IDX)
         tbIdx = 0;*/
     }
   m_OutBuf[m_OutBufIdx++]=acc;
   m_OutBufIdx &=OUT_BUF_MAX_IDX;
   return acc;
  }
 
Maxim Dmitrievsky:

そしてそこには、記事へのリンクが勝手に挿入されていた。まさにこの点についてである。


そういうことなんです。私自身が使っているFIRフィルタの計算式は以下の通りです。しかし、すでに書いたように、すべては係数次第なのです。そうなんです。でも、説明文がないので判断できません。しかし、会社の広告がある))。

この記事のこの部分を参照しています

----------

例えば、フィンウェア社のFATLのようなデジタル フィルターのコードをMQL5で作ってみるとか。

一般論として、デジタルフィルタの計算式は次のようになる。

FILTER = SUM (K(i) * CLOSE(i), FilterPeriod)である。

のところです。

SUM - 合計。

K(i) - 重み付け係数。

CLOSE (i) - 現在のバーの終値。

FilterPeriod - 平均化するバーの数。

 
Alexey Volchanskiy:


こういうことだったんですね。私自身が使っているFIRフィルタの計算式は以下の通りです。しかし、すでに書いたように、すべては係数に依存しているのです。そうですね、与えられてはいるのですが、説明がないので、すぐには判断できませんね。しかし、会社の広告がある))。

この記事のこの部分を参照しています

----------

例えば、フィンウェア社のFATLのようなデジタル フィルターのコードをMQL5で作ってみるとか。

一般論として、デジタルフィルタの計算式は次のようになる。

FILTER = SUM (K(i) * CLOSE(i), FilterPeriod)である。

のところです。

SUM - 合計。

K(i) - 重み付け係数。

CLOSE (i) - 現在のバーの終値。

FilterPeriod - 平均化するバーの数。


なるほど、同じ話題でも解釈が違うんですね。
 
Maxim Dmitrievsky:

なるほど、同じテーマを別の解釈で表現しているわけですね。


まあ、他に思いつかないんだろうけど))FIRフィルタは、入力バッファからの引用が係数の配列で順次乗算され、それがすべて加算され、出力ティックが得られるという、とてつもなくシンプルなものだ。ティックを扱う場合は、出力のティックを取得することになります。クローズと組めばバーも。

だから、ある会社が相場分析用の画期的なフィルターを開発したなどというのは、とんでもない話なのだ)。革命は他の分野でも昔からあった。

 
Alexey Volchanskiy:


まあ、ここで考えても仕方ないのですが))FIRフィルタは非常にシンプルで、入力バッファからの引用符に係数の配列が掛けられ、それがすべて加算されて出力の刻みが得られます。ティックを扱う場合は、出力のティックを取得することになります。クローズと組めばバーも。

だから、ある会社が相場分析用の画期的なフィルターを開発したなどというのは、とんでもない話なのだ)。革命は他の分野でも昔からあった。


そう、数年前、このテーマは、超天才科学者の新しい革命的発見としてトレーダーに宣伝されたのである(笑)。
 
Maxim Dmitrievsky:

そう、数年前、この話題は超天才科学者の新革命的発見としてトレーダーに宣伝されていたっけ(笑)。

以前は研修のために人を募集していた。まあ、誰でも稼げるだけ稼いではいるんですけどね...。