สคริปต์หรือกลยุทธ์ให้ผลลัพธ์ที่แตกต่างกันหลังจากรีเฟรชหน้าจอใหม่ (รีเพ้นท์ติ้ง)
ข้อมูลในอดีตไม่ได้รวมข้อมูลการเคลื่อนไหวของราคาภายในวันเอาไว้ แต่มีเฉพาะราคาเปิด สูง ต่ำ และปิด (OHLC) เท่านั้น นี่ยังผลให้บางครั้งสคริปต์สามารถทำงานและให้ผลลัพธ์ที่แตกต่างออกไปเมื่อทำงานบนบข้อมูลในอดีตและทำงานบนข้อมูลเรียลไทม์ ในที่ซึ่งเราทราบเฉพาะราคาเปิดเท่านั้น และราคาจะมีการเคลื่อนไหวหลายๆ ครั้งก่อนที่ในที่สุดราคาจะสร้างจุดสูงสุด ราคาต่ำสุด และราคาปิดจะถูกกำหนดหลังจากแท่งเรียลไทม์ได้ปิดลง
หากเราเพิ่มสคริปต์ลงในชาร์ตและรอจนกว่าจะคำนวณในแท่งเรียลไทม์จำนวนหนึ่งแล้วจึงโหลดหน้าเว็บอีกครั้ง บางครั้งเราจะเห็นการพล็อตของสคริปต์เปลี่ยนแปลงเล็กน้อย พฤติกรรมนี้เป็นหนึ่งในพฤติกรรมที่แตกต่างกันสองสามประเภทที่มักเรียกกันว่า อินดิเคเตอร์รีเพ้นท์ติ้ง มันเป็นประเภทของรีเพ้นท์ติ้ง ที่เกี่ยวข้องกับเราที่เราจะอ้างอิงถึงเมื่อใช้คำว่า รีเพ้นท์ติ้ง มันเป็นเพราะความจริงที่ว่าเมื่อมีการใช้ฟีเจอร์บางอย่างในสคริปต์ มันจะคำนวณแตกต่างกันบนแท่งข้อมูลในอดีตและแท่งแบบเรียลไทม์
อีกประเภทหนึ่งของพฤติกรรมที่หมายถึงถึงรีเพ้นท์ติ้งอย่างถูกต้องหรืออาจจะไม่ถูกต้องนั่นคือ การพล็อตโดยใช้การชดเชยเชิงลบลงบนแท่งที่ผ่านมาและใช้ข้อมูลในอนาคตที่ไม่ได้อยู่ผ่านจากการเรียกใช้ฟังก์ชัน security ซึ่งสามารถนำข้อมูลที่ไม่มีอยู่จริงในข้อมูลเรียลไทม์ไปใช้ในการคำนวณ
ไม่ใช่อินดิเคเตอร์ทุกตัวที่ได้รับผลกระทบจากถึงรีเพ้นท์ติ้งประเภทที่เราพูดถึงกันในที่นี้ ในกรณีส่วนใหญ่แล้วมันขึ้นอยู่กับว่าฟังก์ชั่นบางอย่างหรือโครงสร้างภาษาบางอย่างถูกใช้ในการโค้ดดิ้งหรือไม่ โปรดทราบว่าเอฟเฟกต์การถึงรีเพ้นท์ติ้งนี้ไม่ใช่ข้อผิดพลาด มันเป็นผลมาจากความแตกต่างโดยธรรมชาติระหว่างการทำงานของแท่งในอดีตกับข้อมูลแท่งเรียลไทม์บน TradingView
เราจะเห็นการรีเพ้นท์ติ้งในกรณีต่อไปนี้:
1. กลยุทธ์มีการใช้ calc_on_every_tick=true กลยุทธ์ที่มีพารามิเตอร์ calc_on_every_tick=false อาจมีแนวโน้มที่จะมีการรีเพ้นท์ติ้ง แต่ในระดับที่น้อยกว่า
2. การใช้ security สำหรับการร้องขอข้อมูลจากกรอบเวลาที่ใหญ่กว่ากรอบเวลาของสัญลักษณ์หลักของชาร์ต:
// Add this study on 1 minute chart
//@version=4
study("My Script")
c = security(syminfo.tickerid, "5", close)
plot(close)
plot(c, color=color.red)
การศึกษานี้จะคำนวณแตกต่างกันตามข้อมูลเรียลไทม์และข้อมูลในอดีตโดยไม่คำนึงถึงค่าของพารามิเตอร์ lookahead (ดู Understanding lookahead เพิ่มเติม)
3. การใช้ security เพื่อร้องขอข้อมูลจากกรอบเวลาที่เล็กกว่ากรอบเวลาของสัญลักษณ์หลักของชาร์ต (ข้อมูลเพิ่มเติม ที่นี่):
// Add this study on 5 minute chart
//@version=3
study("My Script")
c = security(tickerid, "1", close, lookahead=false)
plot(close)
plot(c, color=red)
หาก lookahead=false การรีเพ้นท์ติ้งจะเกิดขึ้น เมื่อ lookahead=true การรีเพ้นท์ติ้งอาจเป็นไปได้น้อย แต่ทว่ามันอาจจะยังคงเกิดขึ้นเมื่อมีการการอัปเดตระหว่าง 1 นาที และ 5 นาทีซึ่งกันและกัน
4. สคริปต์ทั้งหมดที่คำนวณขึ้นอยู่กับจุดเริ่มต้นของกรอบเวลา ข้อมูลภายในวันจะได้รับการจัดให้ชิดกับจุดเริ่มต้นของสัปดาห์ เดือน หรือปี ขึ้นอยู่กับกรอบเวลา ด้วยเหตุนี้ผลลัพธ์ที่สร้างโดยสคริปต์ดังกล่าวอาจแตกต่างกันเป็นครั้งคราว กรณีเหล่านี้คือกรณีที่สคริปต์จะต้องพึ่งพาจุดเริ่มต้น:
- เมื่อมันมีการใช้ฟังก์ชั่น valuewhen, barssince หรือ ema (เนื่องจากคุณสมบัติที่ผิดปกติในอัลกอริทึม)
- กลยุทธ์การทดสอบย้อนหลังใด ๆ (ไม่ว่าจะกำหนดพารามิเตอร์ calc_on_every_tick ไว้อย่างไร)
มีการอ้างอิงพึ่งพาระหว่างกรอบเวลาและการจัดตำแหน่งของจุดเริ่มต้น:
- 1–14 นาที — จัดชิดกับจุดเริ่มต้นของสัปดาห์
- 15–29 นาที — จัดเรียงกับจุดเริ่มต้นของเดือน
- ตั้งแต่ 30 นาทีขึ้นไป — ปรับให้เข้ากับต้นปี
ข้อจำกัดของความยาวแท่งในอดีตต่อไปนี้ถูกนำมาพิจารณาเมื่อประมวลผลข้อมูล:
- 10,000 แท่งในอดีตสำหรับแผนการใช้งาน Pro ทั้งหมด (Pro, Pro+ และ Premium)
- 5000 แท่งในอดีตสำหรับแผนการใช้งานอื่น ๆ
5. การเปลี่ยนแปลงข้อมูลในอดีต ตัวอย่างเช่นเนื่องจาก การแยกข้อมูล
6. การมีตัวแปรต่อไปนี้ในสคริปต์มักนำไปสู่การรีเพ้นท์ติ้ง: