แจกโค้ดอินดิเคเตอร์ MT5: Volume MA + Histogram ช่วยดูเทรนด์ให้แม่นขึ้น
แจกฟรีโค้ด MetaTrader 5 อินดิเคเตอร์ Moving Average Volume พร้อม Histogram สำหรับ MT5 ช่วยกรองสัญญาณเทรด ยืนยันแนวโน้ม และดูการ Breakout ให้แม่นยำยิ่งขึ้น โหลดเลย!
สร้าง METATRADER 5 INDICATOR ด้วย AI
Admin
5/11/20262 min read
MetaTrader 5 Script: Moving Average Volume
//+------------------------------------------------------------------+
//| Volume_MA_Histogram.mq5 |
//| |
//+------------------------------------------------------------------+
#property copyright "Custom Indicator"
#property version "1.10"
//--- Display settings
#property indicator_separate_window // แสดงในหน้าต่างแยกด้านล่าง
#property indicator_buffers 2 // เพิ่มเป็น 2 buffers (Volume + MA)
#property indicator_plots 2 // เพิ่มเป็น 2 plots
//--- Plot 1: Volume Histogram (แสดงผลเป็นแท่ง)
#property indicator_label1 "Volume"
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 clrLightGray
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
//--- Plot 2: Volume MA Line (แสดงผลเป็นเส้น)
#property indicator_label2 "Volume MA"
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrDodgerBlue
#property indicator_style2 STYLE_SOLID
#property indicator_width2 2
//--- Input parameters (ผู้ใช้สามารถตั้งค่าได้)
input int InpMAPeriod = 14; // Moving Average Period
input ENUM_MA_METHOD InpMAMethod = MODE_SMA; // Moving Average Method
input ENUM_APPLIED_VOLUME InpVolumeType = VOLUME_TICK; // Volume Type (Tick or Real)
//--- Indicator buffers
double VolBuffer[]; // Buffer สำหรับแท่ง Volume
double MABuffer[]; // Buffer สำหรับเส้น MA
//--- Indicator Handles
int vol_handle;
int ma_handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- Bind arrays to indicator buffers
SetIndexBuffer(0, VolBuffer, INDICATOR_DATA);
SetIndexBuffer(1, MABuffer, INDICATOR_DATA);
//--- ตั้งชื่อย่อที่จะแสดงที่มุมซ้ายบนของหน้าต่างอินดิเคเตอร์
IndicatorSetString(INDICATOR_SHORTNAME, "Vol MA & Hist (" + IntegerToString(InpMAPeriod) + ")");
//--- 1. Get the handle for the standard Volumes indicator
vol_handle = iVolumes(_Symbol, _Period, InpVolumeType);
if(vol_handle == INVALID_HANDLE)
{
Print("Error: Failed to get Volumes handle");
return(INIT_FAILED);
}
//--- 2. Get the handle for the MA, using the Volumes handle as the applied price
ma_handle = iMA(_Symbol, Period, InpMAPeriod, 0, InpMAMethod, volhandle);
if(ma_handle == INVALID_HANDLE)
{
Print("Error: Failed to get MA handle");
return(INIT_FAILED);
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
//--- หาจำนวนแท่งเทียนที่ต้องคำนวณและอัปเดต
int values_to_copy = rates_total - prev_calculated;
//--- อัปเดตแท่งเทียนปัจจุบันเสมอ
if(prev_calculated > 0)
values_to_copy++;
//--- คัดลอกข้อมูล Volume ลงใน VolBuffer (สำหรับวาด Histogram)
if(CopyBuffer(vol_handle, 0, 0, values_to_copy, VolBuffer) <= 0)
{
Print("Warning: Waiting for Volume data...");
return(0); // Return 0 เพื่อลองใหม่ใน Tick ถัดไป
}
//--- คัดลอกข้อมูลเส้น MA ลงใน MABuffer (สำหรับวาดเส้น)
if(CopyBuffer(ma_handle, 0, 0, values_to_copy, MABuffer) <= 0)
{
Print("Warning: Waiting for MA data...");
return(0);
}
//--- คืนค่าจำนวนแท่งที่คำนวณเสร็จแล้ว
return(rates_total);
}
//+------------------------------------------------------------------+
การวิเคราะห์ปริมาณการซื้อขาย (Volume) เป็นหัวใจสำคัญที่ช่วยให้เทรดเดอร์สามารถยืนยันความแข็งแกร่งของแนวโน้มตลาดได้ แต่ปัญหาของอินดิเคเตอร์ Volume แบบดั้งเดิมคือ การดูแท่งวอลุ่มที่ขึ้นๆ ลงๆ แบบสวิงตัว อาจทำให้วิเคราะห์ภาพรวมได้ยาก บทความนี้จึงขอนำเสนอ Volume MA + Histogram Indicator สำหรับ MT5 ที่ผสานการทำงานของ Volume และเส้นค่าเฉลี่ยเคลื่อนที่ (Moving Average) เข้าด้วยกัน ทำให้การดูวอลุ่มสมูทขึ้นและมองเห็นเทรนด์ได้ชัดเจนกว่าเดิม!
[จุดเด่นของ Volume MA + Histogram ตัวนี้]
แสดงผลแบบแยกส่วน (Separate Window): ไม่รบกวนกราฟราคาหลัก ทำให้หน้าจอเทรดดูสะอาดตา
ดูง่ายด้วย Dual Display: แสดงแท่งวอลุ่มจริง (Histogram) เป็นพื้นหลัง และมีเส้นค่าเฉลี่ย (MA Line) วาดทับด้านหน้า ช่วยให้เปรียบเทียบวอลุ่มปัจจุบันกับค่าเฉลี่ยในอดีตได้ทันที
ปรับแต่งได้อย่างอิสระ (Fully Customizable): สามารถตั้งค่า MA Period (ค่าเริ่มต้น 14), เปลี่ยนรูปแบบการคำนวณ (SMA, EMA, ฯลฯ) รวมถึงปรับเปลี่ยนสีและขนาดของเส้นได้ตามสไตล์การเทรดของคุณ
[นำไปประยุกต์ใช้กับการเทรดได้อย่างไร?]
ยืนยันการ Breakout: หากราคาทะลุแนวรับ/แนวต้าน พร้อมกับแท่ง Histogram ที่พุ่งสูงทะลุเส้นค่าเฉลี่ย MA ขึ้นมา ถือเป็นการยืนยันสัญญาณ Breakout ที่มีนัยสำคัญ
ดูความแข็งแกร่งของเทรนด์: ในช่วงที่เป็นเทรนด์ขาขึ้นหรือขาลงที่ชัดเจน วอลุ่มมักจะเกาะตัวอยู่เหนือเส้นค่าเฉลี่ย หากวอลุ่มเริ่มหดตัวลงต่ำกว่าเส้น MA อาจเป็นสัญญาณเตือนว่าเทรนด์นั้นเริ่มอ่อนแรง
กรองสัญญาณหลอก (Fakeout): ถ้าราคาวิ่งแรงแต่วอลุ่มยังคงต่ำกว่าเส้น MA ให้ระวังว่าอาจเป็นการเคลื่อนไหวที่ไม่มีแรงสนับสนุนจริง (False Break)
[พารามิเตอร์ที่สามารถตั้งค่าได้ (Inputs)]
Moving Average Period: จำนวนแท่งเทียนย้อนหลังที่ใช้คำนวณเส้นค่าเฉลี่ย (แนะนำที่ 14 หรือ 20)
Moving Average Method: เลือกวิธีคำนวณเส้น MA (เช่น Simple, Exponential, Smoothed)
Volume Type: เลือกใช้ปริมาณการซื้อขายแบบ Tick Volume หรือ Real Volume (ขึ้นอยู่กับข้อมูลที่โบรกเกอร์รองรับ)
Please help me to create MT5 Indicator to display in separate indicator window for show Moving Average of Volume by 14 previous bar (Can configure) and can adjust average line property
AI Prompt ที่ใช้สร้าง MetaTrader 5 Indicator
วิธีการติดตั้งและตั้งค่า
คอมไพล์ (Compile): เปิดโปรแกรม MetaEditor ใน MT5 (กดปุ่ม F4) สร้าง Custom Indicator ใหม่และตั้งชื่อว่า Volume_MA จากนั้นนำโค้ดด้านบนไปวางแทนที่โค้ดเริ่มต้น แล้วกดปุ่ม Compile
นำไปใช้กับกราฟ (Attach to Chart): ลากอินดิเคเตอร์ตัวใหม่จากหน้าต่าง Navigator ไปวางลงบนกราฟของคุณ
ตั้งค่า Period (Configure the Period): ในแท็บ Inputs ของอินดิเคเตอร์ คุณจะเห็นค่า Moving Average Period ซึ่งถูกตั้งค่าเริ่มต้นไว้ที่ 14 คุณสามารถปรับเปลี่ยนค่านี้ได้ รวมถึงสามารถเปลี่ยนวิธีการคำนวณได้ด้วย (เช่น เปลี่ยนจาก SMA เป็น EMA)
ปรับแต่งคุณสมบัติของเส้น (Adjust Line Properties): ไปที่แท็บ Colors ในหน้าต่างตั้งค่าอินดิเคเตอร์ จากตรงนี้คุณสามารถเปลี่ยนสี ขนาดความหนา และรูปแบบของเส้น (เส้นทึบ, เส้นประ, เส้นจุด) ได้โดยตรง โดยไม่จำเป็นต้องกลับไปแก้ไขซอร์สโค้ดอีกครับ
