푸리에 도움말 - 페이지 2

 
진폭과 위상은 하나의 복소수이고 1 bar도 허수부가 0인 1 숫자입니다. 따라서 8개의 막대 - 8개의 주파수입니다. klot 에게 이에 대해 어떻게 생각하는지 물어봅시다.
 
파일이 아닌 것이 전송되지 않음
다시 시도하겠습니다
파일:
 
사실 이 방법이 더 좋아요 :)

 //+------------------------------------------------------------------+
//|                                            #_i_SpecktrAnalis.mq4 |
//|                                          Copyright © 2006, klot. |
//|                                                     klot@mail.ru |
//+------------------------------------------------------------------+
#property copyright " Copyright © 2006, klot. "
#property link      " klot@mail.ru "
//---
#include < stdlib.mqh >
#define pi 3.14159265358979323846
//---
#import " #_lib_FFT.ex4 "
void realfastfouriertransform ( double & a [] , int tnn , bool inversefft ) ;
#import
//---
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- buffers
double SpecktrBuffer [] ;
//---
extern double n = 8 ; // Задает размер массива - степень двойки
extern double f = 1.0 ; // Частота периодической функции
extern double ff = 0 ; // Фаза периодической функции
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init ()
  {
//---- indicators
SetIndexStyle ( 0 , DRAW_HISTOGRAM ) ;
SetIndexBuffer ( 0 , SpecktrBuffer ) ;
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit ()
  {
//----
   
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start ()
  {
   int tnn1 = MathPow ( 2 , n ) ; // По ограничению функции- размер массива длжен быть степенью двойки
   double aa [] ;
   int N = ArrayResize ( aa , tnn1 ) ;
   SetIndexDrawBegin ( 0 , Bars - N ) ;
   SetIndexDrawBegin ( 1 , Bars - N ) ;
   //ArrayResize(aa,tnn1+1); //Для косинус-преобразования
   //---
   // Исследование спектра разных функций
   double sig ;
   for ( int i = 0 ; i <= N - 1 ; i ++ )
   {
      sig = MathCos ( f * i / ( 2.0 * pi ) + ff * pi ) ; // Обыкновенная периодическая функция - к рынку не имееет отношения
      //sig=Close[i];
      //sig=iRSI(NULL,0,14,PRICE_CLOSE,i+1);
      aa [ i ] = sig ;
      
   }
   //InSigNormalize(aa); //Нормализация значений 
   // Прямое преобразование Фурье - после выпонения функции в массиве aa[] - спектрограмма
   realfastfouriertransform ( aa , tnn1 , false ) ; 
   InSigNormalize ( aa ) ; //Нормализация значений 
   
   //--- Вывод спектрограммы на экран
   for ( i = 0 ; i <= N - 1 ; i ++ )
   {
      // Модуль комплексного числа
      SpecktrBuffer [ i ] = MathSqrt ( aa [ i * 2 ] * aa [ i * 2 ] + aa [ i * 2 + 1 ] * aa [ i * 2 + 1 ]) ; 
   }
   //---
   /*
   //realfastfouriertransform(aa, tnn1, true);
   for( i=0; i<=N; i++)
   {
      SpecktrBuffer[i]=aa[i];
   }*/
 
   //----
   return ( 0 ) ;
  }
  
//+------------------------------------------------------------------+
 
//--------------------------------------------------------------------+
void InSigNormalize ( double & aa [])
{
   double sum_sqrt ;
   int element_count = ArraySize ( aa ) ;
   sum_sqrt = 0 ;
   for ( int i = 0 ; i <= element_count - 1 ; i ++ )
   {
      sum_sqrt += MathPow ( aa [ i ] , 2 ) ;
   }
   sum_sqrt = MathSqrt ( sum_sqrt ) ;
   
   if ( sum_sqrt != 0 )
   {
      for ( i = 0 ; i <= element_count - 1 ; i ++ )
      {
         aa [ i ] = aa [ i ] / sum_sqrt ;
      }
   }
   return ;
}
//---------------------------------------------------------------------+
 
lsv писал (а):
진폭과 위상은 하나의 복소수이고 1 bar도 허수부가 0인 1 숫자입니다. 따라서 8개의 막대 - 8개의 주파수입니다. klot 에게 이에 대해 어떻게 생각하는지 물어봅시다.

복소수를 사용하여 다음을 수행했습니다.
//--- 스펙트로그램을 화면에 표시
for( i=0; i<=N-1; i++)
{
// 복소수 모듈
SpecktrBuffer[i]=MathSqrt(aa[i*2]*aa[i*2]+aa[i*2+1]*aa[i*2+1]);
}
//---
 
lsv :
진폭과 위상은 하나의 복소수이고 1 bar도 허수부가 0인 1 숫자입니다. 따라서 8개의 막대 - 8개의 주파수입니다. klot 에게 이에 대해 어떻게 생각하는지 물어봅시다.
더 잘 물어보세요 :)
몇 년 전부터 이 일을 하고 있어요 :)
내 웹사이트에도 디지털 필터에 대한 페이지가 많이 있습니다.
http://www.may.nnov.ru/mak/DSP/Contents.shtml

아니면 구글링..
다음은 첫 번째 링크입니다.
http://alglib.sources.ru/fft/realfft.php

페이지 끝:

이 그림을 FFT와 유사한 복소수 함수와 비교하면 f -1 에서 f -N / 2 + 1 까지의 주파수가 어딘가에서 사라지고 주파수 f 0f N 의 실수 부분만 있음을 알 수 있습니다. / 2 복소 주파수 f 0 의 이전 자리를 차지했습니다. 그 이유는 푸리에 변환의 대칭 속성입니다. 실수 함수 h(t) 의 경우 H(-f) = H * (f) 인 것이 사실입니다.

따라서 f -1 에서 f -N/2+1 까지의 주파수는 더 이상 새로운 정보를 전달하지 않습니다. 대칭 쌍의 복소 켤레에 의해 얻어지며 주파수 f 0f N/2 는 허수부가 0입니다.

===================================================== ========
복소수는 2개의 독립 구성요소를 포함하며,
허수부가 0인 복소수는 1개의 독립 성분을 포함합니다.

입력이 일련의 복소수이면 K 주파수를 얻습니다.
입력이 일련의 실수이면 주파수의 절반이 남습니다.
 
나는 더 간단하게 추론한다. 그런 정리가 있지만 그것을 증명한 사람의 이름은 기억나지 않는다: 아날로그 신호를 디지털로 변환하기 위해, 특정 주파수를 저장하기 위해, 저장된 주파수보다 2배 많은 샘플이 필요하다 . 우리의 경우 8개의 샘플이 있으므로 4주기 이상 주파수 정보를 저장할 수 없습니다.
 
Kotelnikov의 정리.
 

토론으로 판단하면 이 푸리에가 흥미로운 것이지만 불행히도 나는 그것이 무엇인지 이해하지 못합니다.
누군가 그것이 무엇이며 어떻게 조언자를 만들 수 있는지 간단히 설명할 수 있습니까?

 
Ronen :

토론으로 판단하면 이 푸리에가 흥미로운 것이지만 불행히도 나는 그것이 무엇인지 이해하지 못합니다.
누군가 그것이 무엇이며 어떻게 조언자를 만들 수 있는지 간단히 설명할 수 있습니까?


나는 약간의 부정확성을 인정할 수 있습니다.... 결론은 주기적인 함수는 다른 주파수의 사인파 성분의 합으로 표현될 수 있다는 것입니다. 푸리에 급수로 전개한다. 푸리에 급수는 주파수(고조파)가 배가되는 사인파와 코사인파의 합입니다. 푸리에 변환을 사용하는 몇 가지 수학적 조작을 통해 데이터 시리즈는 균일하게 변화하는 주파수의 정현파의 합으로 나타낼 수 있으며 각 구성 요소가 진폭을 얻음으로써 간단히 말해서 신호의 주파수 응답(정현파의 진폭 1Hz, 2, 3 등의 주파수). 그런 다음 각 주파수 성분을 조작하여 신호 등을 필터링할 수 있습니다. 등. 모든 것이 좋지만 한 가지 - 함수는 주기적이어야 합니다. 주기적이 아니더라도 이러한 변환은 주기적임을 의미합니다. 누가 알지만... 아마도 그것으로부터 약간의 이점이 있을 것입니다.
 
Integer писал (а):
결론은 모든 주기적 함수는 다음과 같이 나타낼 수 있다는 것입니다 ...

그럼, 어렵지 않다면 - 찻주전자 수준에서 조금 더:

내가 틀릴 수도 있지만 작은 TF가이 조건에 충분히 맞는 것 같습니다. 지금 저는 prevBars!=Bars를 전역 변수로 사용하여 M1에서 값을 전달하고 1분 간격으로 M15 및 H1으로 읽어서 이것을 관찰하고 있습니다. 이것이 막대 내부의 진입점에 큰 영향을 미칠 수 있는지 확인합니다. 오래된 TF. 아마도 재미를 위해, 또는 아마도 - "각 시간당 바에는 10p의 이익이 있습니다. :) 또는 15p 큰사슴 :(." 사인/코사인이 실제로 떨어지면 일중의 실제 부속물이 될 것입니다.