สวัสดีครับเพื่อนนักเทรดทุกคน! วันนี้เราจะมาพูดถึงตัวช่วยใหม่ที่ชื่อว่า UltraAbsolutelyNoLagLwma ซึ่งเป็น Indicator ที่พัฒนาขึ้นบนพื้นฐานของ AbsolutelyNoLagLwma โดยใช้การวิเคราะห์จากสัญญาณหลายเส้นนะครับ
วิธีการคำนวณสัญญาณใน Indicator ตัวนี้จะใช้สูตรทางคณิตศาสตร์ที่เรียกว่า Arithmetic Progression. ซึ่งจะคำนวณค่าต่าง ๆ ดังนี้:
SignalPeriod(Number) = StartLength + Number * Step
โดยที่ค่าตัวแปร Number จะมีค่าตั้งแต่ศูนย์จนถึง StepsTotal. ค่าที่ได้จะถูกเก็บไว้ในอาร์เรย์และใช้ในแต่ละจังหวะของ Indicator เพื่อดึงค่าที่เรียบเรียงออกมา จากนั้นจะคำนวณทิศทางของแนวโน้มปัจจุบันสำหรับการเรียบเรียงแต่ละครั้ง และนับจำนวนแนวโน้มที่เป็นบวกและลบจากค่าที่เรียบเรียงของ AbsolutelyNoLagLwma ทั้งหมด
สรุปค่าของแนวโน้มทั้งสองจะถูกเรียบเรียงอีกครั้งและใช้เป็นเส้น Indicator ที่สร้างกราฟ Histogram มีสีสันที่แสดงถึงทิศทางแนวโน้ม โดยใช้รูปแบบ DRAW_COLOR_HISTOGRAM2. ทิศทางของแนวโน้มใน Indicator นี้จะถูกกำหนดจากสีของ Histogram ขณะที่ความแข็งแกร่งจะขึ้นอยู่กับความกว้างของ Histogram ครับ
ในการแสดงแนวโน้ม ตัว Indicator จะใช้สีสี่สีสำหรับแต่ละทิศทาง: ถ้าค่าของ Histogram ไม่เข้าไปในโซนที่ซื้อเกิน/ขายเกิน สีของ Indicator จะเข้มขึ้น แต่ถ้าผ่านระดับเหล่านี้ไปได้ สีจะอ่อนลงครับ
ค่าตั้งต้นของ Indicator มีดังนี้
//+----------------------------------------------+ //| ค่าพารามิเตอร์ของ Indicator | //+----------------------------------------------+ input uint FLength=7; // ความลึกในการเรียบเรียง input Applied_price_ IPC=PRICE_CLOSE_; // ราคาคงที่ //---- input Smooth_Method W_Method=MODE_JJMA; // วิธีการเรียบเรียง input int StartLength=3; // ระยะเวลาในการเรียบเรียงเริ่มต้น input int WPhase=100; // พารามิเตอร์การเรียบเรียง //---- input uint Step=5; // ขั้นตอนการเปลี่ยนระยะเวลา input uint StepsTotal=10; // จำนวนการเปลี่ยนแปลงในระยะเวลา //---- input Smooth_Method SmoothMethod=MODE_JJMA; // วิธีการเรียบเรียง input int SmoothLength=3; // ความลึกในการเรียบเรียง input int SmoothPhase=100; // พารามิเตอร์การเรียบเรียง //---- input uint UpLevel=80; // ระดับซื้อเกินใน %% input uint DnLevel=20; // ระดับขายเกินใน %% input color UpLevelsColor=Blue; // สีระดับซื้อเกิน input color DnLevelsColor=Blue; // สีระดับขายเกิน input STYLE Levelstyle=DASH_; // สไตล์ระดับ input WIDTH LevelsWidth=Width_1; // ความหนาของระดับ
ในส่วนของอัลกอริธึมการเรียบเรียง เราสามารถเลือกได้จากสิบแบบที่แตกต่างกัน:
- SMA - Simple Moving Average;
- EMA - Exponential Moving Average;
- SMMA - Smoothed Moving Average;
- LWMA - Linear Weighted Moving Average;
- JJMA - Adaptive Averaging JMA;
- JurX - Ultralinear Averaging;
- ParMA - Parabolic Smoothing;
- T3 - Tillson's Multiple Exponential Smoothing;
- VIDYA - Smoothing with Tushar Chande Algorithm;
- AMA - Smoothing using Perry Kaufman's Algorithm.
อีกอย่างที่ควรทราบคือ พารามิเตอร์ประเภท Phase สำหรับอัลกอริธึมการเรียบเรียงที่แตกต่างกันมีความหมายต่างกันโดยสิ้นเชิง สำหรับ JMA จะเป็นตัวแปร Phase ที่เปลี่ยนจาก -100 ถึง +100. สำหรับ T3 จะเป็นอัตราส่วนการเรียบเรียงที่คูณด้วย 100 เพื่อให้เห็นภาพชัดขึ้น ส่วน VIDYA จะใช้ระยะเวลา CMO Oscillator และสำหรับ AMA จะใช้ระยะเวลา EMA ช้า ในอัลกอริธึมอื่น ๆ พารามิเตอร์เหล่านี้จะไม่ส่งผลต่อการเฉลี่ยครับ
สุดท้ายนี้ Indicator ตัวนี้ใช้คลาสจาก SmoothAlgorithms.mqh (ให้คัดลอกไปยัง <terminal_data_folder>\MQL5\Include). การใช้งานคลาสนี้ได้ถูกอธิบายไว้ในบทความ "Averaging Price Series for Intermediate Calculations Without Using Additional Buffers".

Fig 1. Inicator UltraAbsolutelyNoLagLwma