การอธิบายอินดิเคเตอ...
 
การแจ้งเตือน
ลบทั้งหมด

การอธิบายอินดิเคเตอร์ Damiani Volatmeter v3.2 Alerts อย่างละเอียด: การวิเคราะห์โค้ดและการใช้งาน

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

อินดิเคเตอร์ Damiani Volatmeter v3.2 Alerts เป็นตัวบ่งชี้ความผันผวนที่ได้รับการออกแบบมาเพื่อระบุว่าสภาวะตลาดเหมาะสมสำหรับการเทรดหรือไม่ โดยใช้อัตราส่วนของค่าเฉลี่ยเคลื่อนที่ของค่า ATR (Average True Range) และค่าเบี่ยงเบนมาตรฐาน (Standard Deviation) เพื่อสร้างเกณฑ์ในการกำหนดเงื่อนไข "TRADE" หรือ "DO NOT TRADE"

โครงสร้างของโค้ดและการอธิบายส่วนต่าง ๆ

  1. ส่วนหัวของโค้ด

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

//|                                 Damiani Volatmeter v3.2 Alerts.mq4 |

//| this is the alerts version of   Damiani_volatmeter.mq4 v3.2 |

//|                 Copyright ฉ 2006,2007 Luis Guilherme Damiani |

//|                                          http://www.damianifx.com.br |

//|                                                                                      |

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

 

อธิบาย:

  • เป็นส่วนหัวของโค้ดที่ระบุถึงเวอร์ชัน, ผู้พัฒนา และ URL ที่เกี่ยวข้อง
  • มีการระบุวันที่และการแก้ไขล่าสุดที่เพิ่มฟังก์ชันแจ้งเตือน (Alerts)
  1. การกำหนดคุณสมบัติของอินดิเคเตอร์

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 clrLime

#property indicator_color2 clrRed

อธิบาย:

  • #property indicator_separate_window → อินดิเคเตอร์จะถูกแสดงในหน้าต่างแยกต่างหากจากกราฟราคา
  • #property indicator_buffers 2 → มีการใช้บัฟเฟอร์ (Buffer) จำนวน 2 ชุดเพื่อเก็บค่าอินดิเคเตอร์
  • #property indicator_color1 clrLime → สีของเส้นสัญญาณสีเขียว
  • #property indicator_color2 clrRed → สีของเส้นสัญญาณสีแดง
  1. การกำหนดค่าพารามิเตอร์เริ่มต้น

         extern int       Vis_atr=13;

         extern int       Vis_std=20;

         extern int       Sed_atr=40;

         extern int       Sed_std=100;

          extern double    Threshold_level=1.4;

          extern bool      lag_supressor=true;

          extern double    lag_s_K=0.5;

          extern int max_bars=2000;

 

อธิบาย:

  • Vis_atr และ Sed_atr → กำหนดค่า ATR สำหรับระยะเวลาสั้นและยาว
  • Vis_std และ Sed_std → กำหนดค่า Standard Deviation
  • Threshold_level → ค่าที่ใช้เป็นเกณฑ์ตัดสินว่าเป็นสภาวะเทรดได้หรือไม่
  • lag_supressor → ใช้เพื่อลดความล่าช้าของสัญญาณ
  • max_bars → กำหนดจำนวนแท่งเทียนสูงสุดที่อินดิเคเตอร์จะประมวลผล
  •  
  1. ฟังก์ชันการแจ้งเตือน

extern bool   PopupAlerts            = true;

extern bool   EmailAlerts            = false;

extern bool   PushNotificationAlerts = false;

extern bool   SoundAlerts            = false;

extern string SoundFileTradeAllowed  = "alert.wav";

extern string SoundFileDoNotTrade    = "alert2.wav";

อธิบาย:

  • ตัวเลือกการแจ้งเตือนเมื่อเงื่อนไขตรงตาม:
    • PopupAlerts → แจ้งเตือนด้วยหน้าต่างป๊อปอัป
    • EmailAlerts → แจ้งเตือนทางอีเมล
    • PushNotificationAlerts → แจ้งเตือนผ่านแอป MT4/MT5
    • SoundAlerts → เล่นเสียงเมื่อถึงเงื่อนไข
  1. การกำหนด Buffer สำหรับเก็บค่าอินดิเคเตอร์

double thresholdBuffer[], Lower[];

double vol_m[];

double vol_t[];

double SignalBuffer[];

อธิบาย:

  • thresholdBuffer[] → ใช้เก็บค่าที่เกี่ยวข้องกับระดับความผันผวน
  • Lower[] → ใช้เก็บค่าที่ต่ำกว่าเกณฑ์ที่กำหนด
  • vol_m[] และ vol_t[] → เก็บค่าที่เกี่ยวกับ ATR
  • SignalBuffer[] → ใช้บันทึกค่าผลลัพธ์ที่อินดิเคเตอร์ต้องการส่งออก
  1. ฟังก์ชัน init() (เริ่มต้นอินดิเคเตอร์)

int init()

{

    IndicatorBuffers(2);

    SetIndexBuffer(0,thresholdBuffer);

    SetIndexBuffer(1,Lower);

    SetIndexBuffer(2,vol_t);

    SetIndexBuffer(3,SignalBuffer);

    SetIndexEmptyValue(3,EMPTY_VALUE);

    return(0);

}

อธิบาย:

  • ตั้งค่าบัฟเฟอร์และกำหนดรูปแบบการแสดงผล เช่น DRAW_HISTOGRAM
  • กำหนดค่าที่ไม่ใช้งานให้เป็น EMPTY_VALUE
  1. ฟังก์ชัน start() (การทำงานหลักของอินดิเคเตอร์)

int start()

{

    for(int i=loop_size; i>=0; i--)

    {

        double sa = iATR(NULL,0,Vis_atr,i);

        double atr = NormalizeDouble(sa,Digits);

        double vol = sa / iATR(NULL,0,Sed_atr,i);

       

        double anti_thres = iStdDev(NULL,0,Vis_std,0,MODE_LWMA,PRICE_TYPICAL,i);

        anti_thres /= iStdDev(NULL,0,Sed_std,0,MODE_LWMA,PRICE_TYPICAL,i);

 

        if (vol > Threshold_level) {

            SignalBuffer[0] = 1.0;

        } else {

            SignalBuffer[0] = 2.0;

        }

    }

    return(0);

}

อธิบาย:

  • วนลูปคำนวณ ATR และ Standard Deviation
  • กำหนดสถานะสัญญาณการเทรด (TRADE OK = 1.0 หรือ DO NOT TRADE = 2.0)
  1. ฟังก์ชัน doAlerts() สำหรับการแจ้งเตือน

void doAlerts(string msg, string SoundFile)

{

    if (PopupAlerts) Alert(msg);

    if (EmailAlerts) SendMail("MT4 Alert", msg);

    if (SoundAlerts) PlaySound(SoundFile);

}

อธิบาย:

  • แจ้งเตือนผู้ใช้ด้วยการแสดงข้อความ, อีเมล, หรือเสียง

ตัวอย่างการใช้งานอินดิเคเตอร์กับ EA

double volatmeter = iCustom(Symbol(),0,"Damiani Volatmeter v3.2 Alerts",13,20,40,100,1.4,true,0.5,2000,"",3,0);

if (volatmeter == 1.0) {

    Print("TRADE OK");

} else {

    Print("DO NOT TRADE");

}

อธิบาย:

  • เรียกใช้อินดิเคเตอร์ผ่าน iCustom() และตรวจสอบสัญญาณการเทรด

หากต้องการใช้งานในกลยุทธ์จริง ควรนำไปปรับใช้ร่วมกับอินดิเคเตอร์แนวโน้มอื่นเพื่อเพิ่มความแม่นยำ.

 

Download Source Code :

https://www.forexfactory.com/attachment/file/2090111?d=1480839286


   
อ้างอิง

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

ชื่อผู้แต่ง

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

ตำแหน่ง *

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 ครั้ง บันทึกแล้ว
แบ่งปัน: