เหตุการณ์แท่งเทียน
นักพัฒนาอัลกอริทึมมักจำเป็นต้องอ้างอิงถึงเหตุการณ์แท่งเทียนเพื่อดำเนินกลยุทธ์การเทรดให้ทันเวลาตอบสนองต่อราคาที่อัปเดต API มีเหตุการณ์ BarOpened และ BarClosed สำหรับผู้สร้างอัลกอริทึมเพื่อปรับแต่ง cBot และคว้าโอกาสในจุดต่าง ๆ ของวงจรแท่งเทียน
หมายเหตุ
เหตุการณ์แท่งเทียนสามารถจัดการได้เฉพาะเมื่อเขียนโค้ด cBot เท่านั้น อินดิเคเตอร์แทนที่จะมีเมธอด Calculate() ที่ถูกเรียกในทุก tick
ในคู่มือนี้ เราอธิบายความแตกต่างระหว่างเมธอด OnBar() และ OnBarClosed() และให้กรณีการใช้งานหลายกรณี
เหตุการณ์แท่งในหนึ่งนาที!
- เมธอด
OnBar()จะถูกเรียกทุกครั้งที่มีการวาดแท่งใหม่บนกราฟที่มีการเพิ่มอินสแตนซ์ มันจะถูกเรียกสำหรับแท่งที่เพิ่งสร้างขึ้นใหม่ - ตัวจัดการเหตุการณ์
OnBarClosed()ก็จะถูกเรียกในทุกแท่งใหม่เช่นกัน อย่างไรก็ตาม มันจะถูกเรียกสำหรับแท่งสุดท้ายที่ปิด (นั่นคือ แท่งก่อนหน้าแท่งปัจจุบัน) - การอ้างอิงถึงเหตุการณ์แท่งที่ถูกต้อง จะช่วยเพิ่มความแม่นยำในการวิเคราะห์ทางเทคนิคของคุณและเลือกจังหวะเวลาที่เหมาะสมสำหรับการดำเนินการของอัลกอริทึม
- ประเภทกราฟที่รองรับสำหรับ
BarOpenedและBarClosedได้แก่ กราฟแท่งเวลา, แท่งเทียน, tick, Renko, ช่วง และ Heikin Ashi
ใช้เมธอด OnBar()
การเกิดขึ้นของเหตุการณ์ BarOpened ขึ้นอยู่กับตารางของสัญลักษณ์และความถี่ของราคาที่เข้ามา โดยปกติ ผู้ใช้แพลตฟอร์มสามารถปรับการเกิดขึ้นของ BarClosed ด้วยการตั้งค่ากรอบเวลาของกราฟ
หมายเหตุ
เมธอด OnBar() สามารถถูกเรียกได้บ่อยเท่าที่การตั้งค่ากรอบเวลาของกราฟอนุญาต เมื่อแท่งปิด OnBar() จะไม่ถูกเรียกจนกว่า tick ถัดไปจะมาถึง ซึ่งตามหลักการแล้วจะทำให้เกิดการสร้างแท่งใหม่
เมธอด OnBar() จะถูกเรียกพร้อมกันกับทุกแท่งใหม่ที่วาดบนกราฟที่มีการแนบอัลกอริทึม ดังนั้น ตัวจัดการ OnBar() จึงเป็นที่ที่เหมาะสมในการกำหนดตรรกะการเทรดแบบกำหนดเองที่ cBot ของคุณควรทำซ้ำเป็นประจำ
ในตัวแก้ไขโค้ด คุณสามารถระบุตัวจัดการ OnBar() ได้ดังนี้:
override void OnBar()
ใช้เมธอด OnBarClosed()
Algo API ยังอนุญาตให้ดำเนินการตรรกะสำหรับแท่งสุดท้ายที่ปิด ซึ่งขึ้นอยู่กับกลยุทธ์ที่คุณต้องการใช้ อาจเป็นทางเลือกที่สะดวกและแม่นยำกว่าในการจัดการเหตุการณ์ BarOpened เมื่อแท่งเปิด แท่งใหม่จะปรากฏเป็น (แท่งเทียน doji) และไม่มีข้อมูลที่สมบูรณ์สำหรับการวิเคราะห์ทางเทคนิค
เหตุการณ์ BarClosed เป็นนามแฝงของเหตุการณ์ BarOpened ซึ่งหมายความว่ามันจะเกิดขึ้นเฉพาะในกรณีที่เหตุการณ์ BarOpened เกิดขึ้น ตัวอย่างเช่น เหตุการณ์ BarClosed สำหรับแท่งสุดท้ายในวันศุกร์จะเกิดขึ้นพร้อมกับแท่งแรกที่เปิดในวันจันทร์ หากสัญลักษณ์นั้นไม่มีการเทรดในช่วงสุดสัปดาห์
หมายเหตุ
เมธอด OnBarClosed() จะไม่ถูกเรียกจนกว่า tick จะมาถึงเพื่อสร้างแท่งใหม่
ตัวจัดการเหตุการณ์ OnBarClosed() สามารถประกาศได้ดังนี้:
override void OnBarClosed()
ในส่วนของเมธอด OnBarClosed() คุณสามารถกำหนดการกระทำที่เชื่อมโยงกันซึ่ง cBot ของคุณจะดำเนินการเมื่อเหตุการณ์ BarClosed ถูกเรียก (เช่น ดำเนินการคำสั่ง, ร่างรูปแบบ, วาดภาพการวิเคราะห์ทางเทคนิค เป็นต้น)
เมื่อเข้าถึงในตัวจัดการเหตุการณ์นี้ คอลเลกชัน Bars จะไม่มีแท่งปัจจุบันที่มีชีวิต ในขณะที่คอลเลกชันอื่น ๆ (เช่น Positions, Symbols ฯลฯ) จะมีข้อมูลจริง
ตัวจัดการเหตุการณ์ OnBar() และ OnBarClosed() ทำงานตามที่ตั้งใจในการทดสอบย้อนหลังและการปรับให้เหมาะสม ทั้งสองเมธอดสามารถใช้ได้กับประเภทกราฟต่าง ๆ รวมถึงกราฟแท่งเวลา, แท่งเทียน, tick, Renko, ช่วง และ Heikin Ashi
สร้าง cBot ตัวอย่าง
ตัวอย่าง cBot ต่อไปนี้จะวางคำสั่ง Market เมื่อทุกแท่งที่สามบนกราฟ EURCHF เปิด
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
เนื่องจาก cBot ถูกเปิดใช้งานบนกราฟ m1 ช่วงเวลาโดยประมาณระหว่างคำสั่ง Market ที่ดำเนินการคือสามนาที

ด้านล่างนี้เป็นตัวอย่าง cBot ที่มีอินดิเคเตอร์ Directional Movement System (DMS) ฝังอยู่ ซึ่งจะพิมพ์ (Uptrend!) หากค่า DI+ (เส้นสีเขียว) เกินค่า DI- (เส้นสีแดง)

เมื่อ DI- มากกว่า DI+ จะพิมพ์ (Downtrend!) ในเหตุการณ์ BarClosed

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
สรุป
ความหลากหลายของเหตุการณ์แท่งที่มีอยู่ใน Algo API ช่วยให้นักพัฒนาอัลกอริทึมสามารถเลือกจังหวะเวลาที่แม่นยำสำหรับเมธอดที่เรียก เมธอด OnBar() สามารถถูกเรียกด้วยความถี่ที่แตกต่างกันขึ้นอยู่กับตารางของสัญลักษณ์และการตั้งค่ากรอบเวลาของกราฟ ซึ่งยังเพิ่มฟังก์ชันการทำงานให้กับ cBot เมธอด OnBarClosed() เป็นนามแฝงที่สะดวกของ OnBar() สำหรับการทำงานกับอินดิเคเตอร์