June 25, 2019

Memperkenalkan Skrip Pine v4!

Temui versi baru bahasa pengaturcaraan Skrip Pine v4! Ia termasuk beberapa ciri baru. Kami telah menambahbaikkan stukrur bahasa ini dan membaiki beberapa isu. Namun, ciri yang paling penting dan dinanti-nantikan ialah sokongan untuk melukis objek-objek.

Kami akan menjelaskan ciri-ciri baru ini dalam blog post ini. Sila baca dokumentasi dan manual rujukan jika anda ingin mempelajari lebih lanjut.

Label Drawing Object Label Objek Lukisan

Fungsi label.new membolehkan anda melukis label pada carta termasuk teks arbitrary. Berikut ialah sampel skrip yang melukiskan label yang mengandungi penutupan daripada bar terakhir:

//@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])

Anda mengedit dan menghapuskan label objek selepas menciptakannnya menggunakan keluarga fungsi label.* . Berikut ialah contoh skrip yang lebih rumit menggunakan label — Pivot Points High/Low.

Line Drawing Object

Fungsi line.new membolehkan anda melukiskan garisan pada carta. Berikut ialah contoh skrip mudah yang melukiskan garis an yang menyambung tinggi bar semasa dengan rendah bar sejarah yang ke-10:

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

Objek garisan boleh diedit dan dihapuskan menggunakan fungsi keluarga line.*  yang sewajarnya. Berikut ialah contoh skrip lebih rumit yang menggunakan objek garisan — Zig Zag.

Harap maklum bahawa, buat masa ini kami hanya boleh memaparkan sebanyak 50-55 lukisan yang sama jenis (label atau garisan) untuk setiap skrip pada carta. Tujuan pengehadan  adalah untuk mengelakkan daripada penggunaan pelayan yang berlebihan.

Jenis data garisan dan label yang baru ini meningkatkan kebolehan Skrip Pine dengan membolehkan anda melaksanakan logik rumit untuk petunjuk popular dalam skrip pengguna. Contoh-contoh terdapat dalam dokumentasi..

Rentetan Bersiri

Kami kini menyokong pemboleh ubah jenis data rentetan bersiri(series string). Berikut ialah contoh penggunaan rentetan bersiri dalam label:

//@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)

 

Kata kunci Var

Sesuatu pemboleh ubah yang disytiharkan dengan kaedah biasa dimulakan pada setiap pengiraan skrip. Skrip ini diperlukan untuk merambat nilai sebelum pemboleh ubah secara langsung.  Kata kunci var mengisytiharkan sesuatu pemboleh ubah dan mengasalkannya sekali sahaja. Ini membolehkan nilai pembolehubah disimpan secara automatik antara bar daripada masa pengasalan atau tugasan terakhir. Berikut ialah conoth skrip yang mengira bilangan bar hijau pada carta.

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

Setiap kali syarat close >= open dipenuhi, nilai pemboleh ubah s meningkat dengan satu. Nilai pengasalan boleh berasal daripada mana-mana ungkapan aritmetik.

Sintaksis untuk pengisytiharan pemboleh ubah dengan kata kunci var boleh mengelakkan penggunaan kod berikut: s := nz(s[1], s). Pengisytiharan dengan pengubah suai var  sangat berguna semasa bekerja dengan lulisan.

Penamaan semula Pemalar, Pemboleh Ubah dan Fungsi Terbina

Dalam Skrip Pine v4, pemalar, pemboleh ubah dan fungsi terbina telah dinamakan semula:

  1. Pemalar warna (e.g red) telah dipindahkan kepada ruang nama color.*(e.g. color.red).
  2. Fungsi warna telah dinamakan semula sebagai color.new.
  3. Pemalar untuk jenis input (e.g. integer) telah dipindahkan ke ruang nama input.*(e.g.  input.integer).
  4. Pemalar gaya plot telah dipindahkan kepada ruang nama plot.style_* (e.g. plot.style_histogram).
  5. Pemalar gaya untuk fungsi hline (e.g. the dottedstyle) telah dipindahkan ke ruang nama hline.style_* (e.g. hline.style_dotted).
  6. Pemalar untuk hari dalam minggu (e.g. sunday) telah dipindahkan ke ruang nama dayofweek.*(e.g. timeframe.periodtimeframe.isintraday).
  7. Pemboleh ubah rangka masa carta semasa (e.g. periodisintraday) telah dipindahkan kepada ruang nama timeframe.*(e.g.  dayofweek.sunday).
  8. Pemboleh ubah selang masa telah dinamakan sebagai multiplier.
  9. Pemboleh ubah tickerdan tickerid telah dinamakan semula.
  10. Pemboleh ubah n mengandungi nilai indeks bar yang telah dinamakan sebagai bar_index.

Faktor utama penamaan semula dilakukan adalah untuk menyusun semula struktur peralatan bahasa dan juga memudahkan penggunaan kod. Nama baru dikategorikan mengikut umpukan di bawah awalan umum. Contohnya, anda akan dapat melihat senarai yang mengandungi semua pemalar warna yang tersedia jika anda menaipkan ‘color’ dalam editor dan menekan Ctrl + Space.

Explicit Variable Type Declaration Jenis Pemboleh ubah Eksplisit

Dalam Skrip Pine v4, tidak lagi boleh mencipta pemboleh ubah dengan jenis data yang tidak diketahui semasa pengasalan ( lihat na value). Ini bertujuan untuk mengelakkan beberapa isu yang muncul apabila jenis pemboleh ubah bertukar selepas pengasalan dengan nilai na. Mulai sekarang, anda hanya perlu menentukan secara eksplisit jenis yang menggunakan kata kunci atau fungsi jenis( contohnya, float) semasa mengisytiharkan pemboleh ubah dengan nilai na:

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

Cubalah Skrip Pine v4 ini! Beberapa pengguna telah mencuba ciri-ciri baru dengan menciptakan skrip menggunakan lukisan.

Contohnya, Ricardo Santos telah menulis beberapa skrip seperti di bawah:

Joris Duyck menulis skrip Trendlines , untuk menunjukkan kebolehan melukis garisan.

Kami berharap contoh-contoh ini dapatkan mengalakkan anda! Anda boleh bertanya soalan, berbincang isu-isu atau berkongsi maklum balam dalam obilik sembang kami. Kami ingin mengucapkan terima kasih kepada komuniti Pinescripters  yang menyertai ujian beta kami ! Anda juga boleh bertanya soalan berkaitan kod dalam halaman Stack Overflow  kami.