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

ZigZag มืออาชีพ - ตัวชี้วัดที่คุณต้องมีใน MetaTrader 5

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

สวัสดีครับทุกคน! ตัวชี้วัด ZigZag นี้ได้ถูกพัฒนาขึ้นจาก โค้ด ZigZag และได้รับอนุญาตจากผู้เขียน PPC. ผมได้ทดสอบเวอร์ชันนี้และแก้ไขข้อผิดพลาดในอัลกอริธึมแล้วครับ

โค้ดนี้เป็นเวอร์ชัน MQL5 ของ ตัวชี้วัด ZigZag สำหรับ MetaTrader 4 ครับ

โปรดทราบ! ไลบรารี AlexSTAL_OutsideBar.mqh ควรอยู่ใน  ..\MQL5\Include โฟลเดอร์ของ MetaTrader 5 ครับ

แค่นี้เหรอ?

สำหรับผมแล้ว ZigZag เป็นเหมือนการบีบอัดกราฟราคา ตัวชี้วัด ZigZag สามารถคำนวณได้จากราคาบาร์ (เช่น ราคาปิด) หรือราคาสูง/ต่ำของบาร์ (วิธีที่นิยมใช้มากที่สุด)

ในขณะที่ทำงานกับ ZigZag มาตรฐานที่เสนอโดย MetaQuotes ผมพบข้อผิดพลาดบางประการ ปัญหาหลักคือ ZigZag มาตรฐานไม่สามารถจัดการกับกรณี outside bar ได้

ในปี 2007 Rashid Umarov (Rosh) ได้เผยแพร่ โค้ด Zigzag2 R ที่มีการจัดการ outside bar (DRAW_ZIGZAG แทนที่จะเป็น DRAW_SECTION).

มาดูกันว่าฟีเจอร์ของการใช้งาน ZigZag ที่ "ถูกต้อง" ควรเป็นอย่างไร:

  • Highs และ Lows ต้องสลับกันอย่างเคร่งครัด;
  • High ต้องสูงกว่า (หรือเท่ากับ) บาร์ทั้งหมดทางด้านขวาจนกว่าจะถึง Low (ที่ตรงกัน);
  • Low ต้องต่ำกว่า (หรือเท่ากับ) บาร์ทั้งหมดทางด้านซ้ายจนกว่าจะถึง High (ที่ตรงกัน).

ลองมาดูตัวอย่าง (EURUSD, H1, 2006, 8-13 ธันวาคม) กันดูนะครับ ที่นี่เรามีสองกรณีกับ outside bar ZigZag ปกติไม่สามารถสร้างภาพ "ถูกต้อง" ได้

รูปที่ 1 ZigZag ปกติกับพารามิเตอร์ [12;5;3] และ [12;0;0]

รูปที่ 1. ZigZag ปกติ ด้วยพารามิเตอร์ [12;5;3] และ [12;0;0]

รูปที่ 2 Zigzag2 R ด้วยพารามิเตอร์ [12;5;3]

รูปที่ 2. Zigzag2 R ด้วยพารามิเตอร์ [12;5;3]


รูปที่ 3 Zigzag2 R ด้วยพารามิเตอร์ [12;0;0]

รูปที่ 3. Zigzag2 R ด้วยพารามิเตอร์ [12;0;0]

จากมุมมองแรก การสร้างที่ถูกต้องจะปรากฏใน  รูปที่ 3 แต่มีข้อควรพิจารณาบางประการ:

  1. ในกรณีนี้มันถูกสร้างขึ้นอย่างถูกต้องเพราะพารามิเตอร์นำเข้า แต่โดยทั่วไปอัลกอริธึมควรทำงานกับพารามิเตอร์ใดๆ
  2. Outside bar ทางด้านซ้ายไม่ถูกต้อง เนื่องจากลำดับของการสร้าง High/Low ของบาร์:


เซกเมนต์ ZigZag ต้องถูกสร้างขึ้นเช่นนี้

ผมได้ทดสอบหลายกรณีของอัลกอริธึม ZigZag ต่อไปนี้: ZigZag MT3, ZigZag, Zigzag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZ, ZigzagFr_v1, NonLagZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Товаровед, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. แต่ไม่มีตัวใดที่สามารถแก้ปัญหาได้อย่างถูกต้อง.


มาดูภาพเหล่านี้กับตัวชี้วัดนี้:

รูปที่ 4 ZigZag มืออาชีพ ด้วยพารามิเตอร์ [12;0]

รูปที่ 4. ZigZag มืออาชีพ ด้วยพารามิเตอร์ [12;0]

รูปที่ 5 ZigZag มืออาชีพ ด้วยพารามิเตอร์ [23;0]

รูปที่ 5. ZigZag มืออาชีพ ด้วยพารามิเตอร์ [23;0]


ฟีเจอร์บางอย่างของเวอร์ชันนี้:

  • อัลกอริธึมแบบ one-pass
  • มันจะคำนวณและวาดใหม่เฉพาะเซกเมนต์สุดท้าย (เซกเมนต์ไม่สามารถถูกยกเลิกได้ นอกจากการอัปเดตประวัติ)
  • มีอัลกอริธึมการปรับแต่งสำหรับการคำนวณภายในบาร์ (มันไม่ใช้การคำนวณใหม่ตาม tick ถ้าราคาได้เปลี่ยนภายในบาร์ 0 (ที่ยังไม่เสร็จ) หรือการเปลี่ยนแปลงราคาต่ำกว่าค่ากำหนดที่กำหนดโดยพารามิเตอร์ MinMotion)
  • มีสองอัลกอริธึมสำหรับการจัดเรียงการสร้าง High/Low: ใช้ประเภทบาร์ (รวดเร็วแต่ไม่แม่นยำ) ใช้ข้อมูลจากกรอบเวลาต่ำกว่า (ต้องมีประวัติ ต้องตรวจสอบความถูกต้องหรือคุณต้องปรับแต่งไลบรารี OutsideBar)
เวอร์ชัน ProExtra ยังไม่ถูกเผยแพร่ เพราะความถูกต้องของข้อมูลใน MetaTrader 5 ยังไม่ได้รับการตรวจสอบ.


มาดูตัวอย่างเพิ่มเติมเกี่ยวกับการสร้าง ZigZag ที่ไม่ถูกต้อง:

รูปที่ 6 EURUSD, H1, 29 พฤศจิกายน - 7 ธันวาคม (เส้นแดง: ZigZag ด้วยพารามิเตอร์ [7;0;0]. เส้นสีน้ำเงิน: Zigzag2 R ด้วยพารามิเตอร์ [7;0;0].)

รูปที่ 6. EURUSD, H1, 29 พฤศจิกายน - 7 ธันวาคม (เส้นแดง: ZigZag ด้วยพารามิเตอร์ [7;0;0]. เส้นสีน้ำเงิน: Zigzag2 R ด้วยพารามิเตอร์ [7;0;0].)

รูปที่ 7 EURUSD, H1, 2010, 29 พฤศจิกายน - 7 ธันวาคม การสร้าง ZigZag ที่ถูกต้อง

รูปที่ 7. EURUSD, H1, 2010, 29 พฤศจิกายน - 7 ธันวาคม การสร้าง ZigZag ที่ถูกต้อง.


สรุป

น่าเสียดายที่เวอร์ชันนี้ยังไม่สมบูรณ์แบบ แต่ผมกำลังทำงานต่อไป

เนื่องจากอัลกอริธึมช่อง (iHighest/iLowest) บางครั้งมันจะข้าม highs.

โปรดแจ้งให้ผมทราบเกี่ยวกับข้อบกพร่องและฟีเจอร์ของตัวชี้วัดนี้ครับ.

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

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