การทดสอบย้อนหลังแม่นยำยิ่งขึ้นด้วย Bar Magnifier

May 30, 2022

ผู้ถือบัญชีพรีเมียมสามารถรับออร์เดอร์ที่สมจริงยิ่งขึ้นในการทดสอบย้อนหลังของกลยุทธ์โดยใช้ตัวเลือก The Bar Magnifier เครื่องมือนี้ใช้การตรวจสอบภายในบาร์เพื่อให้ได้รายละเอียดที่ลึกขึ้นเกี่ยวกับการเคลื่อนไหวของราคาภายในบาร์ ซึ่งช่วยให้กรอกคำสั่งได้แม่นยำยิ่งขึ้น เมื่อเลือก โหมด Bar Magnifier จะแทนที่สมมติฐานที่โปรแกรมจำลองโบรกเกอร์ต้องทำในการเคลื่อนไหวของราคาด้วยค่า OHLC เท่านั้นสำหรับแท่งราคาย้อนหลัง

ไทม์เฟรมภายในบาร์ที่ใช้กับ Bar Magnifier จะปรับแบบไดนามิกตามไทม์เฟรมของชาร์ต ตารางนี้แสดงรายการไทม์เฟรมภายในบาร์ที่ใช้สำหรับไทม์เฟรมชาร์ตที่สูงขึ้นเรื่อยๆ:

ไทม์เฟรมชาร์ต,T ไทม์เฟรมภายในที่ถูกใช้
1S < T < 30S 1S
30S <= T < 5 5S
5 <= T < 30 15S
30 <= T < 60 1
60 <= T < 240 5
240 <= T < D 15
D <= T < W 60
W <= T < 2W 120
T >= 2W D

ตารางที่ 1. ไทม์เฟรมภายในบาร์ที่ถูกใช้

ต่อไปนี้คือตัวอย่างกลยุทธ์ที่ใช้คำสั่งหยุดโดยไม่ใช้ตัวเลือก Bar Magnifier:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = false)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

โปรแกรมจำลองโบรกเกอร์วางคำสั่งหยุดที่บาร์#10381 และกรอกคำสั่งซื้อด้วยราคา 157.0 ในแถบถัดไปทันทีที่ตรงตามเงื่อนไข stop = 157.0  โปรแกรมจำลองโบรกเกอร์ประมาณการว่าภายในบาร์ราคาจะเปลี่ยนจาก “ปิด” เป็น “ต่ำ” จากนั้นเป็น “สูง” (ทริกเกอร์รายการ) จากนั้นไปที่ “ปิด” หลังจากผ่านไปสองสามแท่ง (11 วันสำหรับไทม์เฟรมปัจจุบัน) เงื่อนไขสำหรับการออกจากโพสิชั่นด้วย stop price = 156.0 จะถูกเรียกใช้:

เมื่อเปิดใช้งาน Bar magnifier (พารามิเตอร์ use_bar_magnifier = true) ราคาออกและรายการจะไม่เปลี่ยนแปลง อย่างไรก็ตาม การออกจากโพสิชั่นเกิดขึ้นภายในบาร์เดียวกันกับที่เกิดรายการ:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = true)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

หากเราตรวจสอบไทม์เฟรมชาร์ที่ต่ำกว่าสำหรับสัญลักษณ์เดียวกัน (ชาร์ต 60 นาทีตามตารางไทม์เฟรมภายในบาร์) และค้นหาช่วงเวลาที่สอดคล้องกับแท่ง 10382 เราจะเห็นว่าในไทม์เฟรมรายชั่วโมงหลังจากถึง 157.0 และทริกเกอร์ รายการราคาลงไปต่ำกว่า 156.0 ตรงตามเงื่อนไขหยุด = 156.0:

เมื่อเปิด Bar Magnifier โปรแกรมจำลองโบรกเกอร์จะสามารถเข้าถึงการเปลี่ยนแปลงราคาจากไทม์เฟรมที่ต่ำกว่าระหว่างการทดสอบย้อนหลัง ทำให้พฤติกรรมคล้ายกับสิ่งที่จะเกิดขึ้นระหว่างการทดสอบกลยุทธ์ล่วงหน้าในช่วงเวลาเดียวกัน

ต่อไปนี้คือตัวอย่างของกลยุทธ์ที่ใช้ไทม์เฟรมที่ต่ำกว่าเพื่อให้ได้การเติมคำสั่งลิมิตและสต๊อปออร์เดอร์ที่แม่นยำยิ่งขึ้น:

//@version=5
strategy(
 title                  =   "Magnifier On",
 overlay                =   true, 
 calc_on_order_fills    =   true,
 calc_on_every_tick     =   true,
 precision              =   3, 
 default_qty_type       =   strategy.cash, 
 currency               =   currency.USD, 
 default_qty_value      =   1000, 
 initial_capital        =   1000,
 use_bar_magnifier      =   true)

trailPoints = input.int(150, "Trail Points (in ticks)")
trailOffset = input.int(100, "Trail Offset (in ticks)")
stopSize    = input.int(300, "Stop Offset (in ticks)")

longCondition = bar_index % 25 == 0 and not (strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index)

if (longCondition)
    strategy.entry("Long", strategy.long)

strategy.exit("Exit", loss = stopSize, trail_points = trailPoints, trail_offset = trailOffset)

เมื่อเปิดตัวเลือก bar magnifier ผลลัพธ์ของกลยุทธ์จะใกล้เคียงกับสิ่งที่จะเป็นแบบเรียลไทม์มากขึ้น ผลกำไรสำหรับกลยุทธ์การทดสอบของเรานั้นแย่ลง 50% เมื่อเปิดใช้งาน ซึ่งทำให้หมดกำลังใจสำหรับตัวกลยุทธ์เอง แต่แสดงให้เห็นว่าการใช้ข้อมูลไทม์เฟรมที่ต่ำกว่านั้นมีความสำคัญเพียงใดในการรับข้อมูลการทดสอบย้อนหลังที่แม่นยำยิ่งขึ้น:

สามารถเปลี่ยนตัวเลือก Bar magnifierา ได้โดยการสลับอินพุตที่เกี่ยวข้องในหน้าต่าง “การตั้งค่า/คุณสมบัติ” ของกลยุทธ์:

หลังจากปิดตัวเลือกแล้ว กลยุทธ์จะถูกคำนวณใหม่ด้วยตรรกะเดิม โดยแสดงข้อมูลที่ถูกต้องน้อยกว่าเกี่ยวกับพฤติกรรมของกลยุทธ์:

หากต้องการรับทราบข้อมูลฟีเจอร์ใหม่ของ Pine โปรดติดตามบรรณุกรมของคู่มือผู้ใช้ บัญชี PineCoders ยังออกอากาศการอัปเดตจากช่อง Telegram Squawk Box, บัญชี Twitter และจากการแชทสาธารณะ “Pine Script™ Q&A” บน TradingView

เราหวังว่าคุณจะพบว่าการปรับปรุงเหล่านี้มีประโยชน์ โปรดส่งความคิดเห็นของคุณถึงเราต่อไป เราสร้าง TradingView สำหรับผู้ใช้ของเรา และเรายินดีรับฟังความคิดเห็นจากคุณ

Look first Then leap

TradingView is built for you, so make sure you're getting the most of our awesome features
เปิดชาร์ต