มิถุนายน 25, 2019

ขอแนะนำไพน์สคริปต์ เวอร์ชั่น 4!

พบกับเวอร์ชั่นใหม่ของ ไพน์สคริปต์เวอร์ชั่น 4! ที่รวบรวมฟีเจอร์ใหม่มากมาย เราปรับปรุงโครงสร้างของภาษาและแก้ไขปัญหาหลายประการ แต่อย่างไรก็ตาม ฟีเจอร์ที่สำคัญและมีการรอคอยมาอย่างยาวนานนั้นคือ การสนับสนุนการใช้งานด้านการวาดภาพ วัตถุ

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

ป้ายชื่อ

ฟังก์ชัน label.new ทำให้คุณสามารถเขียนป้ายชื่อลงบนชาร์ตได้ที่รวมถึงอันที่ประกอบไปด้วยข้อความแบบ arbitrary นี่เป็นตัวอย่างของสคริปต์ที่ทำการเขียนป้ายชื่อที่ประกอบไปด้วยราคาปิดของแท่งกราฟแท่งสุดท้าย

//@version=4
study("Last Bar Price", overlay=true)

l = label.new(bar_index, na, 'last price is '+tostring(close), 
  color=close >= open ? color.green : color.red, 
  textcolor=color.white,
  style=label.style_labeldown, yloc=yloc.abovebar)

label.delete(l[1])

คุณสามารถ แก้ไข หรือ ลบ วัตถุป้ายชื่อได้หลังขากที่สร้างมันขึ้นมาโดยใช้ ฟังก์ชันในตระกูล label.* นี่เป็นตัวอย่างสคริปต์ที่ซับซ้อนมากขึ้นในการใช้ป้ายชื่อ — Pivot Points High/Low

เส้นตรง

ฟังก์ชัน line.new ทำให้คุณสามารถลากเส้นตรงลงบนชาร์ตได้ นี่เป็นตัวอย่างของสคริปต์ที่ทำการลากเส้นตรงที่เชื่อมระหว่างจุดสูงสุดของแท่งกราฟปัจจุบันและจุดต่ำสุดของแท่งกราฟในอดีตย้อนหลังไป 10 แท่ง 

//@version=4
study("Line", overlay=true)
l = line.new(bar_index, high, bar_index[10], low[10], width = 4)
line.delete(l[1])

เส้นตรงสามารถ แก้ไข หรือ ลบ ได้โดยใช้ฟังก์ชันที่เกี่ยวข้องเหมาะสมในตระกูล line.* นี่เป็นตัวอย่างสคริปต์ที่ซับซ้อนมากขึ้นในการใช้งานเส้นตรง — Zig Zag

โปรดทราบว่าปัจจุบันนี้เราสามารถแสดงผลวัตถุต่าง ๆ ได้ประมาณ 50 – 55 อันบนชาร์ตของวัตถุประเภทเดียวกัน (ป้ายชื่อ หรือ เส้นตรง) ต่อหนึ่งสคริปต์ นี่เป็นการออกแบบให้ มีข้อจำกัดอย่างจงใจ เพื่อป้องกันการใช้งานเซิร์ฟเวอร์อย่างเกินความจำเป็น

ประเภทข้อมูลใหม่แบบเส้นตรงและป้ายชื่อเสริมความสามารถและความเป็นไปได้ของไพน์สคริปต์เป็นอย่างยิ่ง ที่ทำให้คุณพัฒนาเงื่อนไขที่สลับซับซ้อนภายใต้อินดิเคเตอร์ที่เป็นที่นิยมในสคริปต์ของผู้ใช้งาน ตัวอย่างนั้นสามารถดูได้ที่ เอกสาร

ชุดข้อความ

ตอนนี้เราสนับสนนการใช้งานตัวแปรของประเภทข้อมูลแบบ ชุดข้อความ นี่เป็นตัวอย่างของการใช้งานชุดข้อความในป้ายชื่อ

//@version=4
study("Series string", overlay = true)
draw_label(title) =>
    label.new(bar_index, high, text=title)
t = close >= open ? "green" : "red"
draw_label(t)

Var คีย์เวิร์ด

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

//@version=4
study("My Script")
var s = 0.0
if close >= open
    s := s + 1
plot(s)

ในแต่ละครั้งเมื่อเงื่อนไข close >= open  เป็นจริง ค่าของตัวแปร s จะเพิ่มทีละ 1 ค่าของการกำหนดค่าเริ่มต้นใหม่สามารถเป็น expression ทางคณิตศาสตร์อะไรก็ได้

Syntax ของการประกาศตัวแปรด้วย คีย์เวิร์ด var หลีกเลี่ยงการใช้งานโค้ดเหล่านี้ : s := nz(s[1], s) การประกาศตัวแปรด้วย var modifier จะเป็นประโยชน์อย่างยิ่งเมื่อใช้งานกับภาพวาด drawing ใดๆ

การเปลี่ยนชื่อของ ค่าคงที่ ตัวแปร และฟังก์ชัน บิวท์-อิน

ในไพน์สคริปต์เวอร์ชั่น 4 ค่าคงที่ ตัวแปร และฟังก์ชันบิวท์อินต่อไปนี้ถูกเปลี่ยนชื่อ:

  1. ค่าคงที่ Color (ตัวอย่าง red) ถูกเปลี่ยนไปเป็น color.* namespace (ตัวอย่างเช่น color.red)
  2. ฟังก์ชัน colorได้เปลี่ยนชื่อเป็น color.new
  3. ค่าคงที่สำหรับประเภทของ input (ตัวอย่าง integer) ถูกเปลี่ยนไปเป็น input.*namespace (ตัวอย่างเช่น input.integer)
  4. ค่าคงที่ สไตล์การพล็อต (ตัวอย่าง histogram) ถูกเปลี่ยนไปเป็น plot.style_*namespace (ตัวอย่างเช่น plot.style_histogram)
  5. ค่าคงที่สไตล์สำหรับฟังก์ชัน hline(ตัวอย่าง dotted สไตล์) ถูกเปลี่ยนไปเป็น hline.style_* namespace (ตัวอย่างเช่น hline.style_dotted)
  6. ค่าคงที่วันของสัปดาห์ (ตัวอย่าง sunday) ถูกเปลี่ยนไปเป็น dayofweek.* namespace (ตัวอย่างเช่น dayofweek.sunday)
  7. ตัวแปรของกรอบเวลาของชาร์ตปัจจุบัน (ตัวอย่าง periodisintraday) ถูกเปลี่ยนไปเป็น timeframe.*namespace (ตัวอย่างเช่น timeframe.periodtimeframe.isintraday)
  8. ตัวแปร intervalถูกเปลี่ยนไปเป็น timeframe.multiplier
  9. ตัวแปร tickerและ tickerid ถูกเปลี่ยนไปเป็น syminfo.ticker และ syminfo.tickerid ตามลำดับ
  10. ตัวแปร n ที่ประกอบไปด้วยค่าดัชนีของแท่งกราฟ ถูกเปลี่ยนไปเป็น bar_index

สาเหตุเบื้องหลังการเปลี่ยนชื่อของรายการด้านบนนั้นเพื่อปรับโครงสร้างภาษาให้เข้ากับเครื่องมือภาษาโปรแกรมมาตรฐานและทำให้การทำงานกับโค๊ดนั้นง่ายขึ้นกว่าเดิม ชื่อใหม่ถูกรวมกันตามคำนำหน้าร่วมอันเดียวกัน ตัวอย่างเช่น คุณจะเห็นรายการของค่าคงที่ของสีทั้งหมด ถ้าคุณพิมพ์คำว่า ‘color’ ในช่องการเขียนโค๊ดและกดปุ่ม Ctrl + Space

การประกาศประเภทของตัวแปรอย่างชัดเจน

ในไพน์สคริปต์เวอร์ชั่น 4 นั้นคุณจะไม่สามารถสร้างตัวแปรที่เป็นประเภทแบบ unknown ณ. เวลาที่ทำการประกาศตัวแปรได้อีกต่อไป (ดู na value) ทั้งนี้เพื่อหลีกเลี่ยงปัญหานานัปการที่จะเกิดขึ้นเมื่อประเภทตัวแปรมีการเปลี่ยนแปลงในตอนที่มีการเริ่มต้นค่าใหม่ด้วยค่า na จากนี้ไป คุณจำเป็นต้องระบุประเภทตัวแปรอย่างเฉพาะเจาะจงเมื่อใช้คีย์เวิร์ดหรือฟังก์ชัน type (ตัวอย่างเช่น float) เมื่อประกาศตัวแปรด้วยค่า na

//@version=4
study("NA", overlay=true)
float a = na
a := if close >= open
    high
else
    low
plot(a)

ลองใช้งานไพน์สคริปต์ใหม่เวอร์ชั่น 4! ผู้ใช้งานของเราบางท่านได้ทดสอบฟีเจอร์ใหม่แล้วและได้เขียนความประทับใจในการใช้งานสคริปต์การวาดภาพ

ตัวอย่างเช่น Ricardo Santos ได้เขียนสคริปต์หลาย ๆ อันที่คุณสามารถดูได้ด้านล่างนี้

Joris Duyck ได้เขียนสคริปต์ เส้นแนวโน้ม แสดงความน่าจะเป็นของวัตถุเส้นตรง

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

ไม่พลาดข่าวสารอัพเดท ไอเดียเด็ด ติดตามเทรดดิ้งวิวประเทศไทย ได้ที่ Line ID: @tradingview_th
คลิ๊กลิ้งค์ 👉 https://line.me/R/ti/p/@tradingview_th

และทวิตเตอร์ (Twitter) ค้นหา “TradingView Thailand” หรือ “@th_tradingview”