FXの任意のチャートをフーリエ変換するプログラムをMQL4で書いて。
MQL4でFXチャートをフーリエ変換するプログラムを作成するには、まずチャートから価格データを収集し、それを数値データに変換する必要があります。その後、収集した価格データをフーリエ変換するためのアルゴリズムを実装する必要があります。
以下は、MQL4でFXチャートのフーリエ変換を行うプログラムの一例です。
// チャートから価格データを収集する
double prices[];
int limit;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = Bars - counted_bars;
ArraySetAsSeries(prices, true);
for(int i = 0; i < limit; i++) {
prices[i] = Close[i];
}
// フーリエ変換を行う
Complex fft[];
ArraySetAsSeries(fft, true);
ArrayResize(fft, limit);
for(int i = 0; i < limit; i++) {
fft[i].re = prices[i];
fft[i].im = 0;
}
FourierTransform(fft, FFT_FORWARD);
// 結果を表示する
for(int i = 0; i < limit; i++) {
double freq = i / (Period() * limit);
double amplitude = MathSqrt(fft[i].re*fft[i].re + fft[i].im*fft[i].im);
Print("Frequency: ", freq, ", Amplitude: ", amplitude);
}
このプログラムでは、Close価格を収集し、FourierTransform関数を使用してフーリエ変換を実行します。結果は、周波数と振幅のペアのリストとして表示されます。
ただし、このプログラムはFXチャートのヒストリカルデータを使用してフーリエ変換を行うだけで、リアルタイムでの解析には適していません。また、フーリエ変換を使用する場合、周期的な信号に対してのみ有効であるため、FXチャートの場合には限界があります。