Condition Scanner (cs)
ไอเดียเบื้องหลังโค้ดที่แนบมานี้คือ คุณจะต้องคิดค้นเงื่อนไข (ชุดเงื่อนไข) ที่คุณต้องการ จากนั้นเขียนโค้ดเพื่อตรวจสอบเงื่อนไขเหล่านั้น และนำโค้ดของคุณมาใส่ในชุดโค้ดเหล่านี้ พร้อมทั้งทำการปรับแต่งเล็กน้อย
ในที่สุด คุณจะได้เครื่องมือวิเคราะห์ 2 ตัว ตัวแรกจะแสดงให้เห็นบนกราฟว่ามีเงื่อนไขของคุณเกิดขึ้นที่ไหนบ้างในอดีต ขณะที่อีกตัวจะแสดงในแผงข้อมูลว่าตอนนี้มีเงื่อนไขที่คุณสนใจเกิดขึ้นหรือไม่บนเครื่องมือและกรอบเวลาที่คุณสนใจ ซึ่งจะช่วยประหยัดเวลาจากการต้องดูคู่สกุลและกรอบเวลาต่างๆ ด้วยตัวเอง
วิธีติดตั้ง:
ให้คุณคัดลอกเนื้อหาของโฟลเดอร์ทั้งสี่ (Indicators, Include, Templates, Profiles) ไปยังโฟลเดอร์ที่เทียบเท่าของการติดตั้งของคุณ ไม่มีอะไรที่จะทำให้คุณเสียหาย - มีเพียงเครื่องมือวิเคราะห์ต่างๆ เท่านั้น
หลังจากนั้นให้ปิดโปรแกรม MetaQuotes แล้วเปิดใหม่อีกครั้ง
ตัวอย่างความสามารถของเครื่องมือวิเคราะห์:
ตัวอย่างนี้อิงจาก Power Pro (setup identifier = "PP") ที่ Russ Horn ได้แนะนำ เป็นกลยุทธ์การ Break-out ของแบนด์ โดยมีขีดบนเป็น EMA ของจุดสูงสุดและขีดล่างเป็น EMA ของจุดต่ำสุด ต้องขอแจ้งว่าไม่มีการรับรองกลยุทธ์เหล่านี้จากฉัน - นี่เป็นเพียงตัวอย่างของสิ่งที่คุณสามารถพัฒนาได้
ในระบบของคุณให้เปลี่ยนไปที่โปรไฟล์ cspp อาจใช้เวลาเล็กน้อยในการแสดงผลครั้งแรก แต่หลังจากนั้นจะไม่ใช้ทรัพยากรคอมพิวเตอร์มากนัก
คุณควรเห็นหน้าจอที่คล้ายกับนี้:

ตัวอย่างด้านบนประกอบด้วย:
- เครื่องมือวิเคราะห์บนกราฟที่มี 4 แพลตฟอร์ม
- เครื่องมือวิเคราะห์ในหน้าต่างแยกแสดง EMA ของ RSI
- เครื่องมือวิเคราะห์ในหน้าต่างแยกแสดงที่ที่มีเงื่อนไขแนะนำการซื้อหรือขายในอดีต
- แผงแสดงผลที่แสดงที่ที่เงื่อนไขเดียวกันเกิดขึ้นในขณะนี้ในกลุ่มคู่สกุลและกรอบเวลา
โค้ดทั่วไปสำหรับการวิเคราะห์ทั้งหมด:
Utils.mqh มีฟังก์ชันช่วยเหลือที่สามารถใช้ได้ในทุกเครื่องมือวิเคราะห์, expert adviser เป็นต้น
cs_Chart.mqh มีโค้ดเกือบทั้งหมดที่เข้าไปในเครื่องมือวิเคราะห์กราฟปัจจุบัน
cs_Panel.mqh มีโค้ดเกือบทั้งหมดที่เข้าไปในเครื่องมือวิเคราะห์แผงแสดงผล
โค้ดเฉพาะสำหรับกลยุทธ์ PP (Power Pro):
csPP_0.mq4 แสดงเครื่องมือวิเคราะห์ที่เกี่ยวข้องใน "chart-window"
csPP_1.mq4 แสดงเครื่องมือวิเคราะห์ที่เกี่ยวข้องใน "separate-window"
csPP_Chart.mq4 เป็นเครื่องมือวิเคราะห์ที่แสดงสิ่งที่เกิดขึ้นในอดีตบนกราฟปัจจุบัน
csPP_Panel.mq4 เป็นเครื่องมือวิเคราะห์ที่แสดงสถานการณ์ปัจจุบันในทุกคู่และกรอบเวลาที่คุณสนใจ
csPP_GetBarFlag.mqh เป็นโค้ดที่ "รวม" ในทั้งเครื่องมือวิเคราะห์กราฟและแผง มันเป็นส่วนที่ตัดสินใจว่าในบาร์ใดบาร์หนึ่งมีเงื่อนไขที่น่าสนใจเกิดขึ้นหรือไม่
โค้ดที่เฉพาะเจาะจงสำหรับกลยุทธ์ MAX (moving average crossover):
csMAX_0.mq4 เป็นเครื่องมือวิเคราะห์ที่กำหนดเองซึ่งแสดงค่า moving averages สองตัว มันเป็นเครื่องมือที่สมบูรณ์
ไม่มี csMAX_1 เนื่องจาก ไม่มีความจำเป็นสำหรับการแสดงในหน้าต่างแยกเหมือน PP
csMAX_Chart.mq4, csMAX_Panel.mq4 และ csMAX_GetBarFlag.mqh ทำงานในแบบเดียวกันกับกลยุทธ์ PP ข้างต้น
การพัฒนาเงื่อนไขใหม่:
ฉันจะตัดสินใจเกี่ยวกับกลยุทธ์ตัวระบุ (เช่น PB สำหรับ pinbars)
ตั้งค่าหน้าต่างของฉันตามที่แสดงไว้ใน "เพื่อแสดงว่าเครื่องมือวิเคราะห์ทำอะไร" โดยการลบเครื่องมือวิเคราะห์ที่มีอยู่
ถ้าเงื่อนไขใหม่ของฉันต้องพึ่งพาเครื่องมือวิเคราะห์บนกราฟ ฉันจะสร้างมันขึ้นมาโดยใช้ csXXXX_0.mq4 เป็นแบบอย่าง จำไว้ว่าต้อง "บันทึกเป็น..." csPB_0.mq4 และนำเครื่องมือวิเคราะห์ที่กำหนดเองไปใช้ในกราฟด้านซ้าย
หากฉันต้องการเครื่องมือวิเคราะห์ในหน้าต่างแยก ฉันจะสร้างมันขึ้นมาด้วยเช่นกัน จำไว้ว่าต้อง "บันทึกเป็น..." csPB_1.mq4 และนำเครื่องมือวิเคราะห์ไปใช้ในกราฟด้านซ้าย
ฉันจะสร้างเครื่องมือวิเคราะห์ที่กำหนดเองแทนการใช้เครื่องมือวิเคราะห์มาตรฐาน เพื่อที่ฉันจะสามารถอ้างอิงถึงมันในที่อื่นได้โดยใช้ฟังก์ชัน iCustom หากฉันเปลี่ยนใจเกี่ยวกับพารามิเตอร์พื้นฐานของกลยุทธ์ของฉัน (เช่น วิธีการเคลื่อนที่เฉลี่ย) ฉันจะต้องเปลี่ยนเครื่องมือวิเคราะห์ที่กำหนดเองเท่านั้น
สมัครเป็นสมาชิก csXXXX_Chart.mq4, แทนที่ตัวอักษร 'XXXX' ด้วยตัวระบุกลยุทธ์ของฉัน 'PB' และบันทึกเป็น csPB_Chart.mq4 โค้ดยังไม่สามารถคอมไพล์ได้เพราะยังมีโค้ด "include" ที่ต้องเขียนเพิ่มเติม
ตอนนี้ก็ต้องให้โค้ด "include"
หากเงื่อนไขที่ต้องการทดสอบนั้นง่ายมาก ฉันจะใช้ไฟล์ "include" csXXXX_GetBarFlag.mqh เขียนสิ่งที่ต้องการและ "บันทึกเป็น..." csPB_GetBarFlag.mqh แต่ถ้าการเขียนโค้ดยาก ฉันจะกลับไปที่ csPB_Chart.mq4 ที่ฉันสร้างไว้ก่อนหน้านี้ และคอมเมนต์บรรทัดของโค้ดที่อ่านว่า "#include <csPB_GetBarFlag.mqh>" และเขียนโค้ดที่ต้องการโดยตรงภายในไฟล์ csPB_Chart.mq4 เมื่อตรวจสอบเรียบร้อยแล้ว ฉันจะย้ายโค้ดการค้นหาเงื่อนไขไปที่ไฟล์ "include" 'csPB_GetBarFlag.mqh' และยกเลิกการคอมเมนต์ในบรรทัด #include ในไฟล์ 'csPB_Chart.mq4'
ตอนนี้ไฟล์ 'csPB_Chart.mq4' สามารถคอมไพล์และนำไปใช้ในกราฟด้านซ้ายได้แล้ว
ในจุดนี้ ฉันจะบันทึกเทมเพลตสำหรับกราฟด้านซ้ายเป็น csPB-CHART.tpl ซึ่งรวมเครื่องมือวิเคราะห์ที่กำหนดเอง, แสดงผลในหน้าต่างแยก และการแสดงผลของผลลัพธ์ที่เกี่ยวข้องกับกราฟปัจจุบัน
ฉันจะโหลดไฟล์ 'csXXXX_Panel.mq4', แทนที่ตัวอักษร "XXXX" ด้วย "PB" และ "บันทึกเป็น..." "csPB_Panel.mq4" ไฟล์สุดท้ายนี้จะถูกคอมไพล์และนำไปใช้ในกราฟด้านขวา อาจช้ากว่าในการทำงานเมื่อถูกนำไปใช้ครั้งแรก แต่จะไม่ใช้ทรัพยากรเมื่อทำงานอยู่
ฉันจะบันทึก csPB_panel.tpl เป็นเทมเพลตสำหรับกราฟด้านขวา
โดยปกติแล้วฉันจะเก็บ csPB เป็นโปรไฟล์
หมายเหตุ: เมื่อสร้างเครื่องมือวิเคราะห์ที่กำหนดเองและอ้างถึงมันด้วยฟังก์ชัน iCustom ต้องแน่ใจว่าชื่อถูกต้อง หากมีการเรียกไปยังเครื่องมือวิเคราะห์ที่ไม่มีอยู่จะไม่มีการแจ้งเตือน
หมายเหตุ: อาจมีข้อบกพร่องที่เมื่อโหลดแผงเครื่องมือวิเคราะห์เป็นครั้งแรก จะให้ผลลัพธ์ที่ไม่สอดคล้องกับกราฟที่แสดงอยู่ ฉันพบว่าหากเปลี่ยนช่วงเวลาในหน้าต่างแผง (ทำให้เกิดการคำนวณใหม่) ทุกอย่างจะถูกต้อง แต่ฉันยินดีหากใครสามารถช่วยแก้ปัญหานี้ได้
หมายเหตุ: ในโค้ด ...GetBarFlag.mqh ที่คุณพัฒนาขึ้นเอง คุณสามารถส่งคืนค่าใดๆ เป็นจำนวนเต็มให้กับโปรแกรมที่เรียกใช้เพื่อแสดงได้ ขณะนี้ค่าเป็นศูนย์หมายถึง 'ไม่มีผลลัพธ์' และทำให้แสดงกราฟสีเทาที่แสดงถึงบาร์ที่ถูกทดสอบ หากส่งกลับเป็นจำนวนเต็มลบจะทำให้แสดงเป็นสีแดง ขณะที่จำนวนเต็มบวกจะแสดงเป็นสีเขียว
บางแง่มุมของซอฟต์แวร์:
โค้ดถูกเขียนเป็นเครื่องมือวิเคราะห์ เพื่อให้เมื่อแผงแสดงผลและคุณต้องการดูคู่สกุลและกรอบเวลาเฉพาะ คุณสามารถเลือกคู่จากหน้าต่าง Market Watch แล้วลากและวางลงในพื้นที่กราฟปัจจุบันและเปลี่ยนกรอบเวลาให้เหมาะสม เทมเพลตจะดูแลที่เหลือ
เพื่อพยายามลดภาระของคอมพิวเตอร์ ฉันได้ทำสองสิ่ง
ประการแรก เมื่อจัดการกับอาร์เรย์ข้อมูลเวลา ฉันมักจะย้อนกลับไปเพียง 200 บาร์
ประการที่สอง ซอฟต์แวร์แสดงผลในแผงไม่ทดสอบเงื่อนไขของผู้ใช้ในทุกๆ tick มันใช้กลไกตั้งเวลา โดยการทดสอบจะใช้กับ bar[0] เฉพาะเมื่อ bar[0] ได้รับการสร้างขึ้น 90% เท่านั้น หากไม่ใช่การทดสอบจะใช้กับ bar[1] หาก bar[1] อยู่ในโฟกัส (หมายความว่า bar[0] น้อยกว่า 90% ถูกสร้าง) จะถูกทดสอบเพียงครั้งเดียวและการเปลี่ยนไปยังเวลา bar[0] จะถูกคำนวณ สำหรับทุกๆ tick ถัดไปที่เข้ามาจนกว่าจะถึงเวลาเปลี่ยน ไม่มีอะไรเกิดขึ้น ฉันไม่แน่ใจว่าฉันทำการเขียนโค้ดนี้ได้ถูกต้องหรือไม่ แต่ดูเหมือนว่ามันทำงานได้ดี
นอกจากนี้ บรรทัดด้านบนของแผงจะแสดงวันที่และเวลาที่เหตุการณ์การทดสอบเงื่อนไขล่าสุดเกิดขึ้น ในตัวอย่างที่จัดเตรียมไว้ที่นี่ กราฟสีเทาจะโชว์ศูนย์หาก bar[0] อยู่ในโฟกัสและ '1' หาก bar[1] อยู่ในโฟกัส
โพสต์ที่เกี่ยวข้อง
- เครื่องมือ Open Range Breakout สำหรับ MetaTrader 5
- เครื่องมือ Master Tools - อินดิเคเตอร์สำหรับ MetaTrader 4
- Volume Profile + Range v6.0: เครื่องมือวิเคราะห์การซื้อขายใน MetaTrader 5
- เครื่องมือติดตาม Drawdown EquiPeak สำหรับ MetaTrader 5 ที่คุณไม่ควรพลาด
- สัญญาณข้ามค่าเฉลี่ยเคลื่อนที่ครั้งเดียว - เครื่องมือช่วยเทรดใน MetaTrader 4