การแจ้งเตือน
ลบทั้งหมด

Machines Learning Overview EP3 (สุดท้าย)

1 กระทู้
1 ผู้ใช้
0 Reactions
34 เข้าชม
James Albert
(@james-albert)
สมาชิก
Rank F
เข้าร่วม: 6 เดือน ที่ผ่านมา
กระทู้: 128
หัวข้อเริ่มต้น  

 

  1. ความหมายของอัลกอริทึมอนุกรม Fourier

อนุกรม Fourier (Fourier Series) เป็นเครื่องมือทางคณิตศาสตร์ที่ใช้วิเคราะห์ฟังก์ชันที่เป็นแบบต่อเนื่องหรือเป็นคาบ (Periodic Function) โดยแบ่งออกเป็นส่วนประกอบย่อยที่เรียกว่า ไซน์ (Sine) และ โคไซน์ (Cosine) ที่มีความถี่ต่าง ๆ กัน การวิเคราะห์นี้มีจุดเด่นที่ช่วยแปลงสัญญาณในโดเมนเวลา (Time Domain) ให้กลายเป็นโดเมนความถี่ (Frequency Domain)สำหรับการประยุกต์ใช้งานด้านการวิเคราะห์แนวโน้มและทิศทางราคาในตลาดการเงิน เช่น Forex หรือหุ้น อนุกรม Fourier ช่วยในการสกัดข้อมูลสำคัญ เช่น รูปแบบการเคลื่อนไหวที่เป็นคาบ (Cyclic Behavior) และแนวโน้ม (Trends) จากข้อมูลราคา โดยไม่พึ่งพา Machine Learning

  1. อัลกอริทึมอนุกรม Fourier สามารถนำไปใช้ประโยชน์อะไรได้บ้าง

การใช้งานและประโยชน์:

  1. วิเคราะห์แนวโน้มราคาในตลาดการเงิน:
    • สามารถสกัดแนวโน้ม (Trend) หรือรูปแบบการเคลื่อนไหวของราคาออกมาได้ เช่น การหาความถี่ที่สำคัญในชุดข้อมูลราคาเพื่อทำนายทิศทางในอนาคต
    • ตัวอย่าง: ใช้อนุกรม Fourier ในการลดสัญญาณรบกวน (Noise) จากราคาหุ้นและแสดงเฉพาะแนวโน้มหลัก
  2. การลดสัญญาณรบกวน (Noise Filtering):
    • Fourier Series สามารถกรองเอาสัญญาณที่ไม่ต้องการ (เช่น ความผันผวนระยะสั้น) และคงไว้เฉพาะสัญญาณสำคัญที่มีความหมายต่อการวิเคราะห์
  3. การวิเคราะห์รอบคาบ (Cyclic Analysis):
    • ใช้ Fourier Transform เพื่อวิเคราะห์ความถี่ (Frequency) ของคาบที่เกิดขึ้นในราคาสินทรัพย์ เช่น คาบรายวัน รายเดือน หรือรายสัปดาห์
  4. การสร้างดัชนีวิเคราะห์เพิ่มเติม (Custom Indicators):
    • สามารถสร้างอินดิเคเตอร์เฉพาะทางที่อิงกับข้อมูลความถี่ เช่น การตรวจจับช่วง Breakout หรือช่วงที่ตลาดมีการกลับตัว

 

 

  1. ตัวอย่าง Code MQL4 (EA) ที่ใช้อัลกอริทึมอนุกรม Fourier

ด้านล่างเป็นโค้ด MQL4 สำหรับการวิเคราะห์แนวโน้มราคาด้วย Fourier Series:

//+------------------------------------------------------------------+

//|                                           @Fourier Series EA.mq4        |

//|                                                  Thana Supamanop         |

//|                                             https://www.mql 5.com        |

//+------------------------------------------------------------------+

#property copyright "Thana Supamanop"

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

 

 

input int Period = 50;             // Period of price data to analyze

input int FourierTerms = 5;        // Number of Fourier terms to use

input ENUM_TIMEFRAMES TimeFrame = PERIOD_H1; // Timeframe

 

double FourierOutput[];

 

// Function to calculate Fourier Series

void CalculateFourierSeries(double &output[], int terms, int period)

{

   int size = Bars(Symbol(), TimeFrame); // Fixed: Number of bars in the timeframe

   ArrayResize(output, size);

  

   for (int i = 0; i < size; i++)

   {

      double a0 = 0, an = 0, bn = 0; // Fourier coefficients

      for (int t = 0; t < period; t++)

      {

         double price = iClose(Symbol(), TimeFrame, t); // Fixed: Corrected function call

         double omega = 2 * M_PI * t / period;

        

         a0 += price / period;

         for (int n = 1; n <= terms; n++)

         {

            an += (price * MathCos(n * omega)) / period;

            bn += (price * MathSin(n * omega)) / period;

         }

      }

      // Fourier output at bar i

      output[i] = a0 + an + bn;

   }

}

 

//+------------------------------------------------------------------+

//| Expert Initialization                                                          |

//+------------------------------------------------------------------+

int OnInit()

{

   Print("Fourier Analysis EA Initialized");

   return(INIT_SUCCEEDED);

}

 

//+------------------------------------------------------------------+

//| Expert Tick Function                                                         |

//+------------------------------------------------------------------+

void OnTick()

{

   double CurrentFourierTrend[];

   CalculateFourierSeries(CurrentFourierTrend, FourierTerms, Period);

 

   // Use the Fourier trend for decision-making (e.g., Buy/Sell signals)

   if (iClose(Symbol(), TimeFrame, 0) > CurrentFourierTrend[0])

   {

      Print("Price is above the Fourier trend. Buy Signal.");

   }

   else

   {

      Print("Price is below the Fourier trend. Sell Signal.");

   }

}

 

//+------------------------------------------------------------------+

//| Expert Deinitialization                                                      |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

   Print("Fourier Analysis EA Deinitialized");

}

//+------------------------------------------------------------------+

 

 

การอธิบายโค้ด:

  1. ตัวแปรสำคัญ:
    • Period: จำนวนแท่งเทียนที่ใช้ในการคำนวณ
    • FourierTerms: จำนวนของเทอม (Terms) ในอนุกรม Fourier ที่ใช้
    • TimeFrame: ระบุ Timeframe ของกราฟ เช่น H1, M15
  2. ฟังก์ชัน CalculateFourierSeries:
    • ใช้คำนวณค่าของอนุกรม Fourier โดยวนลูปในช่วงเวลา (Period) และคำนวณค่าสัมประสิทธิ์ Fourier (a0, an, bn)
  3. ส่วนการตัดสินใจ:
    • ใช้แนวโน้มที่ได้จาก Fourier Series (CurrentFourierTrend) เพื่อพิจารณาส่งสัญญาณ Buy หรือ Sell

การใช้งาน:

  1. ติดตั้ง EA นี้ใน MetaTrader 4 โดยการคัดลอกโค้ดไปที่ MetaEditor ในโฟลเดอร์ Experts
  2. ทดสอบกับข้อมูลย้อนหลัง (Backtesting) โดยกำหนดช่วงเวลาและจำนวน Terms ที่เหมาะสม
  3. วิเคราะห์ผลลัพธ์ที่ได้ว่าตรงกับแนวโน้มหรือคาบที่เกิดขึ้นจริงในตลาดหรือไม่

 

สรุป:

การใช้อัลกอริทึมอนุกรม Fourier เป็นการนำเครื่องมือทางคณิตศาสตร์มาใช้ในการวิเคราะห์แนวโน้มของตลาดโดยไม่ต้องพึ่งพา Machine Learning ช่วยให้ผู้เทรดสามารถตรวจจับแนวโน้มและรูปแบบการเคลื่อนไหวที่สำคัญในตลาดการเงินได้อย่างมีประสิทธิภาพ

 

 

 

 

 

 

 

 

 


   
อ้างอิง

ทิ้งคำตอบไว้

ชื่อผู้แต่ง

อีเมลผู้เขียน

ตำแหน่ง *

You are not allowed to attach files on this forum. It is possible that you have not reached the minimum required number of posts, or your user group does not have permission to attach files in this forum.
 
ดูตัวอย่าง แก้ไข 0 ครั้ง บันทึกแล้ว
แบ่งปัน: