ในบทความนี้เราจะมาพูดถึงแนวคิดเกี่ยวกับการใช้ New Bar Event Handler ที่ช่วยให้เราสามารถคำนวณค่าใหม่ได้เฉพาะเมื่อแท่งเทียนใหม่ปรากฏขึ้นเท่านั้น ซึ่งเป็นทางเลือกที่สะดวกสบายกว่าในการใช้ฟังก์ชัน OnCalculate() ตรงๆ ครับ
ตัวอย่างที่เรานำมาให้ดูในวันนี้คือ Indicator ง่ายๆ ที่จะแสดงเส้นเมื่อมีแท่งเทียนใหม่เกิดขึ้น:
//+------------------------------------------------------------------+//| OnNewBarCalculate.mq5 |//| Copyright 2010, Lizar |//| Lizar@mail.ru |//+------------------------------------------------------------------+#property copyright "Copyright 2010, Lizar"#property link "Lizar@mail.ru"#property version "1.00"#property indicator_chart_window#include <OnNewBarCalculate.mqh> // นี่คือความลับในการเรียกใช้ฟังก์ชัน OnNewBarCalculate()//+------------------------------------------------------------------+//| New bar event handler for the indicator |//+------------------------------------------------------------------+int OnNewBarCalculate(constint rates_total, constint prev_calculated, constdatetime& time[], constdouble& open[], constdouble& high[], constdouble& low[], constdouble& close[], constlong& tick_volume[], constlong& volume[], constint& spread[]) { //--- ที่นี่คุณสามารถเขียนโค้ดได้คล้ายกับ OnCalculate();//--- แต่ฟังก์ชันนี้จะถูกเรียกใช้เฉพาะเมื่อแท่งเทียนใหม่เกิดขึ้น (ไม่ทุกที) PrintFormat("New bar: %s",TimeToString(TimeCurrent(),TIME_SECONDS)); //--- คืนค่าของ prev_calculated สำหรับการเรียกครั้งถัดไป return(rates_total); }

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