ยินดีต้อนรับทุกท่านสู่บล็อกของเรา! วันนี้เราจะมาพูดถึงการใช้งาน MACD ด้วยการประยุกต์ใช้ Ring Buffer ใน MetaTrader 5 กันนะครับ
คำอธิบาย
คลาส CMACDOnRingBuffer ถูกออกแบบมาเพื่อคำนวณ MACD (Moving Average Convergence/Divergence) โดยใช้ อัลกอริธึมของ Ring Buffer ซึ่งจะช่วยให้การประมวลผลข้อมูลมีประสิทธิภาพมากขึ้น
การประกาศ
class CMACDOnRingBufferไฟล์ที่ต้องใช้
#include <IncOnRingBuffer\CMACDOnRingBuffer.mqh>ไฟล์ CMACDOnRingBuffer.mqh ต้องถูกวางในโฟลเดอร์ IncOnRingBuffer ที่ต้องสร้างขึ้นใน MQL5\Include\ ซึ่งในไฟล์นี้จะมีตัวอย่างที่ใช้งานคลาสจากโฟลเดอร์นี้อยู่ด้วย
วิธีการในคลาส
//--- การเริ่มต้น: bool Init( // ถ้ามีข้อผิดพลาดจะคืนค่า false หากสำเร็จก็ true int fast_period = 12, // เวลาที่ใช้ในการคำนวณค่าเฉลี่ยเร็ว int slow_period = 26, // เวลาที่ใช้ในการคำนวณค่าเฉลี่ยช้า int signal_period = 9, // เวลาที่ใช้ในการคำนวณสัญญาณ ENUM_MA_METHOD fast_method = MODE_EMA, // วิธีการเฉลี่ยเร็ว ENUM_MA_METHOD slow_method = MODE_EMA, // วิธีการเฉลี่ยช้า ENUM_MA_METHOD signal_method = MODE_SMA, // วิธีการเฉลี่ยสัญญาณ int size_buffer = 256, // ขนาดของ Ring Buffer bool as_series = false );
วิธีการคำนวณ
int MainOnArray( // คืนค่าจำนวนที่ประมวลผล const int rates_total, // ขนาดของอาร์เรย์ const int prev_calculated, // จำนวนที่ประมวลผลในการเรียกครั้งก่อน const double &array[] );
สำหรับการเข้าถึงข้อมูลที่คำนวณจาก Ring Buffer สามารถทำได้เหมือนอาร์เรย์ปกติ
//--- คลาสที่ใช้ในการคำนวณ MACD: #include <IncOnRingBuffer\CMACDOnRingBuffer.mqh> CMACDOnRingBuffer macd; //+------------------------------------------------------------------+ //| ฟังก์ชันการคำนวณตัวบ่งชี้ | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const double &price[]) { macd.MainOnArray(rates_total, prev_calculated, price); for(int i=start; i<rates_total; i++) { MainBuffer[i] = macd[rates_total-1-i]; // histogram ของตัวบ่งชี้ SignalBuffer[i] = macd.signal[rates_total-1-i]; // สัญญาณของตัวบ่งชี้ } return(rates_total); }
โปรดทราบว่าการดัชนีใน Ring Buffer จะเหมือนกับใน time series
ตัวอย่าง
- ไฟล์
Test_MACD_OnArrayRB.mq5คำนวณตัวบ่งชี้จากราคาทางเวลา โดยแสดงการใช้งานของMainOnArray() - ไฟล์
Test_MACD_OnValueRB.mq5แสดงการใช้งานของMainOnValue()โดยเริ่มแรกคำนวณและวาดตัวบ่งชี้ MACD จากนั้นยังคำนวณตัวบ่งชี้ MACD อีกหนึ่งตัวจาก Ring Buffer

ผลลัพธ์ของ Test_MACD_OnArrayRB.mq5 โดยขนาดของ Ring Buffer 256 องค์ประกอบ

ผลลัพธ์ของ Test_MACD_OnValueRB.mq5 โดยขนาดของ Ring Buffer 256 องค์ประกอบ
การพัฒนาคิดค้นโดย MetaQuotes Software Corp., Integer และ GODZILLA
โพสต์ที่เกี่ยวข้อง
- เครื่องมือ Open Range Breakout สำหรับ MetaTrader 5
- Volume Profile + Range v6.0: เครื่องมือวิเคราะห์การซื้อขายใน MetaTrader 5
- การวิเคราะห์สเปกตรัมเดี่ยว: ตัวชี้วัดแนวโน้มสำหรับ MetaTrader 5
- iSpread: ตัวชี้วัดการกระจายสำหรับการเทรดคู่ใน MetaTrader 5
- ID Lite Info MA – ตัวช่วยวิเคราะห์ Moving Average สำหรับ MetaTrader 5