หน้าแรก ตัวชี้วัดทางเทคนิค โพสต์

การใช้คลาส CADXWOnRingBuffer สำหรับการคำนวณ ADX Wilder ใน MetaTrader 5

ไฟล์แนบ
1356.zip (10.07 KB, ดาวน์โหลด 0 ครั้ง)

สวัสดีครับเพื่อนๆ นักเทรดทุกคน! วันนี้เราจะมาพูดถึงคลาสหนึ่งที่ชื่อว่า 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);

... 
}

ตัวอย่างการใช้งาน

  1. ไฟล์ Test_ADXW_OnArrayRB.mq5 คำนวณดัชนีจาก time series ของราคา โดยแสดงการใช้งานวิธี MainOnArray()
  2. ไฟล์ 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 นะครับ

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)