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

ขนาดของแท่งเทียน: ตัวชี้วัดที่สำคัญใน MetaTrader 5

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

ตัวชี้วัดนี้จะแสดงขนาดของแท่งเทียน โดยคำนวณจากสูตร "minuend" ลบ "deduction" ซึ่ง "minuend" และ "deduction" สามารถเป็นค่าใดก็ได้จากสี่ค่า (เปิด, สูงสุด, ต่ำสุด หรือ ปิด)

จำนวนแท่งเทียนที่แสดงขนาดจะถูกจำกัดในพารามิเตอร์การตั้งค่า (InpNumberOfBars) จำนวนนี้จะไม่เปลี่ยนแปลงแม้จะมีแท่งเทียนใหม่เปิดขึ้น:


เกี่ยวกับการซิงค์แท่งเทียนและวัตถุกราฟิก

การจัดการวัตถุกราฟิก

ชื่อของวัตถุต่าง ๆ จะถูกเก็บในอาร์เรย์ m_arr_names[] ซึ่งขนาดจะเท่ากับ InpNumberOfBars ที่ตั้งไว้ ทำไมถึงใช้เป็นอาร์เรย์แทนตัวแปรสตริงธรรมดา? นี่เป็นการเตรียมพร้อมสำหรับอนาคต

การตั้งชื่อวัตถุ

ชื่อของวัตถุที่สอดคล้องกับแท่งเทียนที่ 'index' จะถูกสร้างขึ้นจากสูตรต่อไปนี้:

name[index] = m_prefix + ("high_" หรือ "low_") + TimeToString(time[index])

เมื่อคุณต้องการลบวัตถุทั้งหมด

ตัวชี้วัดจะถูกโหลดใหม่ในกรณีต่อไปนี้:

  • การลบตัวชี้วัดออกจากกราฟ;
  • การปิดเทอร์มินัล (หากตัวชี้วัดกำลังทำงานบนกราฟ);
  • การโหลดเทมเพลต หากตัวชี้วัดทำงานอยู่บนกราฟนี้;
  • การปิดกราฟที่ตัวชี้วัดทำงาน;
  • การเปลี่ยนโปรไฟล์ หากตัวชี้วัดทำงานอยู่บนกราฟใดกราฟหนึ่งของโปรไฟล์ก่อนหน้า;
  • การเปลี่ยนสัญลักษณ์และ/หรือช่วงเวลา ของกราฟที่ตัวชี้วัดทำงาน;
  • การเปลี่ยนการตั้งค่าของตัวชี้วัด.

ดังนั้นเราจึงทำการลบวัตถุกราฟิกที่สร้างขึ้นทั้งหมด:

  • ใน OnDeinit()
  • ใน OnInit() (เพื่อป้องกันกรณีที่มีวัตถุที่ยังไม่ได้ลบ)
  • ใน OnCalculate(), เมื่อ prev_calculated==0.

  นอกจากนี้เรายังทำการล้างอาร์เรย์ m_arr_names[]:

  • ใน OnCalculate(), เมื่อ prev_calculated==0 หรือเมื่อ prev_calculated!=rates_total

การรักษาจำนวนวัตถุกราฟิกให้คงที่:

เมื่อแท่งเทียนใหม่ปรากฏขึ้น เงื่อนไข prev_calculated!=rates_total จะถูกกระตุ้น ในกรณีนี้จะทำการลบวัตถุทั้งหมด และอาร์เรย์ m_arr_names[] จะถูกล้าง.


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

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