ฉันเห็นข้อความแจ้งข้อผิดพลาด 'Pine ไม่สามารถกำหนดความยาวอ้างอิงของซีรีส์ได้ ลองใช้ max_bars_back'

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

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

ปัญหามักเกิดขึ้นในกิ่งก้านของคำสั่งเงื่อนไข (if, iff หรือ?) เมื่อการอ้างอิงถึงตัวแปรหรือฟังก์ชันที่ผ่านมาภายในคำสั่งเงื่อนไขถูกเรียกใช้งานครั้งแรกเมื่อผ่านแถบที่ 244 ไปแล้ว ในกรณีเช่นนี้ Pine จะไม่สามารถกำหนดขนาดบัฟเฟอร์ที่เหมาะสมสำหรับฟังก์ชันนั้นได้และจะใช้ขนาดบัฟเฟอร์เริ่มต้น ดูโค้ดด้านล่าง มันจะส่งคืนข้อผิดพลาดดังกล่าวเนื่องจาก:

  • ไม่ทราบค่าตัวแปร var1 ในขณะคอมไพล์
  • ตัวแปร test ไม่ขอข้อมูลที่ผ่านมาใน 244 แท่งแรกของแผนภูมิ

ด้วยเหตุนี้ตัวแปร test จึงได้รับการกำหนดบัฟเฟอร์เริ่มต้น 300 บาร์ เมื่อสคริปต์ร้องขอค่าของแถบ 301st ในอดีตซึ่งอยู่นอกบัฟเฟอร์ของตัวแปรจะเกิดข้อผิดพลาด

//@version=4
study("max_bars_back var",overlay=true)
var1 = input(301)
test = 0.0
//max_bars_back(test, 301)
if bar_index > 244
    test := test[var1]
plot(test)
Java

The max_bars_back parameter and the max_bars_back() function exist to work around this. They allow you to specify the correct buffer size for variables and functions when the default buffer doesn’t suffice. Uncomment the max_bars_back() function call in the code above. A buffer of 301 will be assigned to the test variable and as a result, the script will calculate properly.

Here is an example of a function call to which the default one-bar buffer size is attributed because it is not invoked in the first 244 bars. While no explicit reference to past values using the [] operator is used, the function nonetheless requires the past 20 values to calculate. The script will thus return the max_bars_back error:

พารามิเตอร์ max_bars_back และฟังก์ชัน max_bars_back() มีอยู่เพื่อแก้ไขปัญหานี้ ช่วยให้คุณระบุขนาดบัฟเฟอร์ที่ถูกต้องสำหรับตัวแปรและฟังก์ชันเมื่อบัฟเฟอร์เริ่มต้นไม่เพียงพอ ยกเลิกการใส่คำสั่งฟังก์ชัน max_bars_back() ในโค้ดด้านบน บัฟเฟอร์ 301 จะถูกกำหนดให้กับตัวแปรทดสอบและด้วยเหตุนี้สคริปต์จะคำนวณอย่างถูกต้อง

นี่คือตัวอย่างของการเรียกใช้ฟังก์ชันซึ่งมีการระบุแหล่งที่มาของขนาดบัฟเฟอร์แท่งเดียวที่เป็นค่าเริ่มต้นเนื่องจากไม่ได้เรียกใช้ใน 244 แท่งแรก แม้ว่าจะไม่มีการใช้การอ้างอิงอย่างชัดเจนถึงค่าในอดีตโดยใช้ตัวดำเนินการ [] แต่ฟังก์ชันนี้ต้องการค่า 20 ที่ผ่านมาในการคำนวณ สคริปต์จะส่งคืนข้อผิดพลาด max_bars_back:

//@version=4
study("Requires max_bars_back")
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)
Java

ไม่สามารถใช้ฟังก์ชัน max_bars_back() เพื่อกำหนดขนาดบัฟเฟอร์เฉพาะให้กับฟังก์ชัน เมื่อคุณจำเป็นต้องทำเช่นนั้นหรือเมื่อคุณต้องการกำหนดขนาดบัฟเฟอร์เริ่มต้นสำหรับตัวแปรและฟังก์ชันทั้งหมดในสคริปต์ให้เพิ่มพารามิเตอร์ max_bars_back ในคำสั่งการศึกษาหรือการประกาศกลยุทธ์ของสคริปต์ โปรดทราบว่าการใช้พารามิเตอร์จะเพิ่มการใช้ทรัพยากรของสคริปต์ดังนั้นจึงควรใช้วิธีนี้เมื่อจำเป็นเท่านั้น:

//@version=4
study("Requires max_bars_back", max_bars_back=20)
test = 0.0
if bar_index > 1000
    test := vwma(close, 20)
plot(test)
Java

คุณยังสามารถแก้ไขปัญหาได้โดยนำ expression ที่มีปัญหาออกจากเงื่อนไขซึ่งในกรณีนี้ไม่จำเป็นต้องใช้พารามิเตอร์ max_bars_back:

//@version=4
study("Requires max_bars_back")
test = 0.0
vwma20 = vwma(close, 20)
if bar_index > 1000
    test := vwma20
plot(test)
Java

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ max_bars_back และข้อผิดพลาดที่เกี่ยวข้องได้ใน คู่มือผู้ใช้ของเรา

หน้าแรก ตัวช่วยคัดกรองหุ้น ตัวคัดกรองฟอเร็กซ์ ตัวคัดกรองคริปโต ปฏิทินเศรษฐกิจ มันทำงานได้อย่างไร ฟีเจอร์ของชาร์ต อัตราค่าบริการ แนะนำเพื่อน กฎระเบียบการใช้งาน ศูนย์ช่วยเหลือ โซลูชั่นสำหรับเว็บไซต์ & โบรกเกอร์ วิดเจ็ต ชาร์ตโซลูชั่น Lightweight ชาร์ตไลบรารี บล็อก & ข่าว Twitter
โปรไฟล์ ตั้งค่าโปรไฟล์ บัญชีและการเรียกเก็บเงิน เพื่อนที่ชวนมา เหรียญ ตั๋วการขอความสนับสนุนของฉัน ศูนย์ช่วยเหลือ ข้อความส่วนตัว แชท ออกจากระบบ