สวัสดีครับเพื่อนๆ นักเทรดทุกคน วันนี้เรามาคุยกันเรื่องตัวบ่งชี้ระดับ (Level Indicator) ที่สามารถใช้ใน MetaTrader 4 กันนะครับ ตัวบ่งชี้นี้จะช่วยให้เราสามารถติดตามระดับราคาที่เราสนใจได้อย่างง่ายดาย
เมื่อระดับtrigLv ที่กำหนดในการตั้งค่า ถูกข้ามผ่านภายในdeviation ตัวบ่งชี้นี้จะส่งการแจ้งเตือนไปยังอุปกรณ์มือถือของเรา ถ้าหากเราตั้งค่าการแจ้งเตือนnotification ไว้เป็นเปิด และจะมีเสียงเตือนถ้าหากเราตั้งค่าการแจ้งเตือนalert ไว้เป็นเปิดเช่นกัน โดยระดับการทำงานtrigLv และขอบเขตของdeviation จะถูกเน้นด้วยเส้นขนาน ซึ่งสามารถตั้งค่าสไตล์ สี และความหนาได้ตามต้องการในการตั้งค่าของตัวบ่งชี้
เราสามารถเพิ่มตัวบ่งชี้แบบหลายอันที่มีระดับต่างๆ ลงในกราฟได้ และรับสัญญาณจากการตัดกันของระดับต่างๆ เหล่านี้
ระดับtrigLv จะทำงานเพียงครั้งเดียวต่อแท่งเทียนหนึ่งแท่ง และจะสามารถทำงานต่อได้อีกครั้งหลังจากเปิดแท่งเทียนถัดไป เพื่อป้องกันการกระตุ้นที่เกิดขึ้นบ่อยเกินไปในแต่ละทิก

//+------------------------------------------------------------------+ //| LevelIndicator.mq4 | //| Copyright 2022, © Cyberdev | //| https://www.mql5.com/en/users/cyberdev/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, © Cyberdev" #property link "https://www.mql5.com/en/users/cyberdev/seller" #property version "1.00" #property strict #property indicator_chart_window #property indicator_plots 0 #include <ChartObjects\ChartObjectsLines.mqh> input bool alert = true; // ใช้เสียงเตือน input bool notification = true; // ใช้การแจ้งเตือน input double trigLv = 0.0; // ระดับการทำงาน input int deviation = 30; // การเบี่ยงเบนจาก trigLv ในจุด input int lineWidth = 1; // ความหนาของเส้น input ENUM_LINE_STYLE lineStyle = STYLE_SOLID; // สไตล์เส้น input color lineColor = clrMediumSpringGreen; // สีของเส้น input color inactivityColor = clrLightGray; // สีขณะไม่มีการทำงาน CChartObjectHLine lv, dvH, dvL; bool equal(double _v1, double _v2, double _epsilon) { return fabs(_v1 - _v2) <= fabs(_epsilon); } //+------------------------------------------------------------------+ //| ฟังก์ชันเริ่มต้นตัวบ่งชี้ | //+------------------------------------------------------------------+ int OnInit() { string name; double dv; color color_; name = "alert.lv-"; dv = deviation * SymbolInfoDouble(NULL, SYMBOL_POINT); color_ = (alert || notification) ? lineColor : inactivityColor; for (int n = 0; n <= INT_MAX && !IsStopped(); n++) { if (ObjectFind(0, name + (string)n) != 0) { if (!lv.Create(0, name + (string)n, 0, trigLv)) return INIT_FAILED; lv.Width(lineWidth); lv.Style(lineStyle); lv.Color(color_); dvH.Create(0, "alert.dvH-" + (string)n, 0, trigLv + dv); dvH.Width(1); dvH.Style(STYLE_DOT); dvH.Color(color_); dvL.Create(0, "alert.dvL-" + (string)n, 0, trigLv - dv); dvL.Width(1); dvL.Style(STYLE_DOT); dvL.Color(color_); break; } } if (!alert && !notification) Print("Level Indicator. Level ", lv.Price(0), " is inactive!"); if (trigLv == 0.0) Alert("Level Indicator. Set parameter \"trigLv\" to the desired value!"); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { //lv.Delete(); //dvH.Delete(); //dvL.Delete(); } //+------------------------------------------------------------------+ //| ฟังก์ชันการคำนวณตัวบ่งชี้ | //+------------------------------------------------------------------+ 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[] ) { static bool triggered = false; static datetime time_ = 0; if (!alert && !notification) return rates_total; if (equal(lv.Price(0), close[0], deviation * SymbolInfoDouble(NULL, SYMBOL_POINT))) { if (time_ != time[0]) time_ = time[0]; else return rates_total; if (!triggered) { if (alert) Alert("Level Indicator. Level ", NormalizeDouble(lv.Price(0), (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)), " triggered!"); if (notification) SendNotification("Level Indicator. Level " + (string)NormalizeDouble(lv.Price(0), (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)) + " triggered!"); } triggered = true; } else triggered = false; return(rates_total); } //+------------------------------------------------------------------+
โพสต์ที่เกี่ยวข้อง
- เครื่องมือ Open Range Breakout สำหรับ MetaTrader 5
- ID Lite Info MA – ตัวช่วยวิเคราะห์ Moving Average สำหรับ MetaTrader 5
- เครื่องมือ Master Tools - อินดิเคเตอร์สำหรับ MetaTrader 4
- เครื่องมือ MetaCOT 2 CFTC ToolBox - ชุดตัวชี้วัดสำหรับการวิเคราะห์ใน MetaTrader 4
- FX Multi-Meter II: เครื่องมือช่วยเทรดที่ครบครันสำหรับนักลงทุน