필터 계수를 처리하는 가장 좋은 방법은 무엇입니까? - 페이지 4

 

아마추어리즘에 대해 미안하지만 SATL FATL과 같은 디지털 필터 는 당신이하는 일에 가깝습니까, 아니면 다른 지역에서 왔습니까?

나는 그것이 전자 제품에서 나온 것임을 이해합니다. 인용문에 적용할 수 있는 철학과 이론적 근거는 무엇입니까?

 

신호 처리에 대한 책이 있습니다. Sophocles J. Orfanidis, Optimum Signal Processing (and Introduction to Signal Processing )

 
Maxim Dmitrievsky :

아마추어리즘에 대해 미안하지만 SATL FATL과 같은 디지털 필터 는 당신이하는 일에 가깝습니까, 아니면 다른 지역에서 왔습니까?

나는 그것이 전자 제품에서 나온 것임을 이해합니다. 인용문에 적용할 수 있는 철학과 이론적 근거는 무엇입니까?


이러한 유형의 필터에 대한 설명에 대한 링크를 제공할 수 있습니까? 그러면 나는 분명히 대답할 수 있었다. 나는 피상적으로 읽은 기사에서 설명을 찾지 못했습니다.

저는 영어로 FIR 또는 FIR 필터에 대한 수업을 만들고 있습니다. 그리고 그들이 가질 유형과 매개 변수는 계수에 의해서만 결정되며 알고리즘은 모든 사람에게 동일합니다.

나는 계수를 계산합니다. 타원형 필터의 경우 가장 짧기 때문에 지연이 가장 작습니다.

철학과 타당성에 관해서는 - 무엇을 필터링할지, 전기 신호, 인용문 또는 기타 데이터는 중요하지 않습니다. 필터의 임무는 불필요한 주파수를 제거하는 것입니다. 예를 들어, LPF는 고주파수 노이즈가 제거되기 때문에 시간 영역에서 따옴표 평활화를 얻습니다. 그래프를 게시했는데 거기에서 명확하게 볼 수 있습니다. 동일한 Simple MA MA는 일반 LPF FIR 필터이지만 그다지 효과적이지 않습니다. 기사에서 자세히 다루었습니다.

 
Alexey Volchanskiy :


이러한 유형의 필터에 대한 설명에 대한 링크를 제공할 수 있습니까? 그러면 나는 분명히 대답할 수 있었다. 나는 피상적으로 읽은 기사에서 설명을 찾지 못했습니다.

저는 영어로 FIR 또는 FIR 필터에 대한 수업을 만들고 있습니다. 그리고 그들이 가질 유형과 매개 변수는 계수에 의해서만 결정되며 알고리즘은 모든 사람에게 동일합니다.

나는 계수를 계산합니다. 타원형 필터의 경우 가장 짧기 때문에 지연이 가장 작습니다.

철학과 타당성에 관해서는 - 무엇을 필터링할지, 전기 신호, 인용문 또는 기타 데이터는 중요하지 않습니다. 필터의 목적은 원하지 않는 주파수를 제거하는 것입니다. 예를 들어, LPF는 고주파수 노이즈가 제거되기 때문에 시간 영역에서 따옴표 평활화를 얻습니다. 그래프를 게시했는데 거기에서 명확하게 볼 수 있습니다. 동일한 Simple MA MA는 일반적인 저역 통과 FIR 필터이지만 그다지 효과적이지 않습니다. 기사에서 자세히 다루었습니다.


기사 자체에 대한 링크가 대체되었습니다.

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

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

신호 처리에 대한 책이 있습니다. Sophocles J. Orfanidis, Optimum Signal Processing (and Introduction to 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 필터 공식입니다. 그러나 나는 이미 썼습니다 - 그것은 모두 계수에 달려 있습니다. 예, 제공되지만 설명이 없으므로 즉시 판단할 수 없습니다. 하지만 회사에 대한 광고가 있습니다))

나는이 기사에 대해 이야기하고있다.

----------

예를 들어 Finware의 FATL과 같은 디지털 필터 용 MQL5 코드를 빌드할 수 있습니다.

일반적으로 디지털 필터를 계산하는 공식은 다음과 같습니다.

FILTER = SUM (K(i) * CLOSE(i), FilterPeriod)

어디:

합계 - 합계;

K(i)는 가중 계수입니다.

CLOSE (i) — 현재 막대의 종가

FilterPeriod — 평균을 낼 막대 수입니다.

 
Alexey Volchanskiy :


나는 그녀에 대해 이야기했다. 다음은 내가 직접 사용하는 FIR 필터 공식입니다. 그러나 나는 이미 썼습니다 - 그것은 모두 계수에 달려 있습니다. 예, 제공되지만 설명이 없으므로 즉시 판단할 수 없습니다. 하지만 회사에 대한 광고가 있습니다))

나는이 기사에 대해 이야기하고있다.

----------

예를 들어 Finware의 FATL과 같은 디지털 필터 용 MQL5 코드를 빌드할 수 있습니다.

일반적으로 디지털 필터를 계산하는 공식은 다음과 같습니다.

FILTER = SUM (K(i) * CLOSE(i), FilterPeriod)

어디:

합계 - 합계;

K(i)는 가중 계수입니다.

CLOSE (i) — 현재 막대의 종가

FilterPeriod — 평균을 낼 막대 수입니다.


음, 이해합니다. 즉, 이것은 다른 해석의 동일한 주제입니다.
 
Maxim Dmitrievsky :

글쎄요, 즉, 같은 주제를 다른 해석으로 이해합니다.


따라서 여기서 다른 것은 생각할 수 없습니다.)) FIR 필터는 불명예스럽습니다. 입력 버퍼의 따옴표에 계수 배열을 차례로 곱하면 이 모든 것이 합산되어 출력 틱이 표시됩니다. 이것은 우리가 진드기에 대해 작업하는 경우입니다. 또는 닫기에 있는 경우 바.

따라서 이러한 회사가 인용문을 분석하기 위한 혁신적인 필터를 개발했다는 진술은 매우 웃기게 보입니다.)) 혁명은 다른 분야에서 오래 전부터 있었습니다.

 
Alexey Volchanskiy :


따라서 여기서 다른 것은 생각할 수 없습니다.)) FIR 필터는 불명예스럽습니다. 입력 버퍼의 따옴표에 계수 배열을 차례로 곱하면 이 모든 것이 합산되어 출력 틱이 표시됩니다. 이것은 우리가 진드기에 대해 작업하는 경우입니다. 또는 닫기에 있는 경우 바.

따라서 이러한 회사가 인용문 분석을 위한 혁신적인 필터를 개발했다는 진술은 매우 웃기게 보입니다.)) 혁명은 다른 분야에서 오래 전부터 있었습니다.


예, 몇 년 전에 이 주제가 슈퍼 천재 과학자들의 새롭고 혁신적인 발견으로 거래자들에게 직접 홍보되었던 걸로 기억합니다.)
 
Maxim Dmitrievsky :

예, 몇 년 전에 이 주제가 슈퍼 천재 과학자들의 새롭고 혁신적인 발견으로 거래자들에게 직접 홍보되었던 걸로 기억합니다.)

훈련을 위해 사람들을 모집한 것 같습니다. 글쎄, 모든 사람은 그가 할 수있는 한 벌고 있습니다 ...