สวัสดีครับเพื่อนๆ นักเทรดทุกคน! วันนี้เราจะมาพูดถึงคลาสหนึ่งที่ชื่อว่า CADXWOnRingBuffer ซึ่งถูกออกแบบมาเพื่อคำนวณดัชนีทางเทคนิค Average Directional Movement Index Wilder หรือที่เรารู้จักกันในชื่อ ADX Wilder โดยใช้ อัลกอริธึม Ring Buffer ครับ
คำอธิบาย
คลาส CADXWOnRingBuffer นี้จะช่วยให้เราคำนวณ ADX Wilder ได้อย่างมีประสิทธิภาพ โดยการใช้ข้อมูลจาก Ring Buffer ซึ่งเป็นวิธีที่ช่วยให้การจัดการข้อมูลทำได้ง่ายและรวดเร็วขึ้น
การประกาศคลาส
class CADXWOnRingBuffer
การนำเข้าไฟล์
#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>
ไฟล์ CADXWOnRingBuffer.mqh ควรอยู่ในโฟลเดอร์ IncOnRingBuffer ซึ่งต้องสร้างขึ้นใน MQL5\Include\ นอกจากนี้ยังมีไฟล์ตัวอย่างที่ใช้จากคลาสนี้แนบมาด้วย
วิธีการของคลาส
//--- วิธีการเริ่มต้น: bool Init(// ถ้ามีข้อผิดพลาดจะคืนค่า false, ถ้าสำเร็จคืนค่า true int ma_period = 14, // ระยะเวลาของการทำให้เรียบด้วย Moving Average ENUM_MA_METHOD ma_method = MODE_SMMA, // วิธีการทำให้เรียบด้วย Moving Average int size_buffer = 256, // ขนาดของ Ring Buffer bool as_series = false); // true ถ้าเป็น time series, false ถ้าเป็นการจัดทำดัชนีของข้อมูล
เราสามารถเข้าถึงข้อมูลที่คำนวณได้จาก Ring Buffer ได้เหมือนกับการเข้าถึงข้อมูลจากอาเรย์ทั่วไป ตัวอย่างการใช้งานมีดังนี้:
#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh> CADXWOnRingBuffer adxw; //... //+------------------------------------------------------------------+ //| ฟังก์ชันการวนรอบของดัชนีแบบกำหนดเอง | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { //--- การคำนวณดัชนี: adxw.MainOnArray(rates_total, prev_calculated, high, low, close); ... }
ตัวอย่างการใช้งาน
- ไฟล์ Test_ADXW_OnArrayRB.mq5 คำนวณดัชนีจาก time series ของราคา โดยแสดงการใช้งานวิธี MainOnArray()
- ไฟล์ Test_ADXW_OnValueRB.mq5 แสดงการใช้วิธี MainOnValue() โดยเริ่มคำนวณและวาดดัชนี ADXW และตามด้วยการคำนวณสามเส้นของ ADXW จาก Ring Buffer

ผลลัพธ์จากการทำงานของ Test_ADXW_OnArrayRB.mq5 ที่มีขนาด Ring Buffer 256 องค์ประกอบ

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