表格 (Table) 物件,可用於放置資訊在腳本視覺空間中的特定和固定的位置。與在 Pine 中繪製的所有其他圖或物件相反,表格不錨定到特定的K線:它們浮在腳本的空間中,無論是在疊加還是窗格模式下、在研究或策略中、與正在查看的圖表K線或使用的縮放因子無關。
這一新功能使您能夠以前所未有的方式呈現數據。您可以建立一個自動生成的顯示面板,其中包含當前商品的相關數據並將其固定到螢幕的一側,或建立動態熱圖,或提供對 Pine 中任何可用資訊的快速訪問 — 具有無限的可能性。不用說,表格可以與所有其他 PineScript 功能結合使用,以進一步改進您現有的指標。
到 Pine用戶手冊的表格頁面,直接進入並開始建立表格。
此績效表格的靈感來自我們側邊欄的“績效(Performance)”部分,可幫助您追踪圖表交易品種的績效:

//@version=4
study("Performance", overlay=true)
var table perfTable = table.new(position.top_right, 3, 2, border_width = 3)
LIGHTTRANSP = 90
AVGTRANSP = 80
HEAVYTRANSP = 70
i_posColor = input(color.rgb(38, 166, 154), title="Positive Color")
i_negColor = input(color.rgb(240, 83, 80), title="Negative Color")
f_rateOfreturn(_v1, _v2) => (_v1 - _v2) * 100 / abs(_v2)
f_performance(_barsBack) =>
_performance = security(syminfo.tickerid, "1D", f_rateOfreturn(close, close[_barsBack]))
_performance
lastYearClose = security(syminfo.tickerid, "12M", close[1], lookahead=barmerge.lookahead_on)
f_fillCell(_table, _column, _row, _value, _timeframe) =>
_c_color = _value >= 0 ? i_posColor : i_negColor
_transp = abs(_value) > 10 ? HEAVYTRANSP : abs(_value) > 5 ? AVGTRANSP : LIGHTTRANSP
_cellText = tostring(_value, "#.##") + "%\n" + _timeframe
table.cell(_table, _column, _row, _cellText, bgcolor = color.new(_c_color, _transp), text_color = _c_color, width = 6)
if barstate.islast
f_fillCell(perfTable, 0, 0, f_performance(5), "1W")
f_fillCell(perfTable, 1, 0, f_performance(21), "1M")
f_fillCell(perfTable, 2, 0, f_performance(63), "3M")
f_fillCell(perfTable, 0, 1, f_performance(126), "6M")
f_fillCell(perfTable, 1, 1, f_rateOfreturn(close, lastYearClose), "YTD")
f_fillCell(perfTable, 2, 1, f_performance(251), "1Y")
以下示例顯示在腳本裡使用表格,示例由幫助我們測試 Pine 新功能的 PineCoders 提供:
Indicator Panel by LonesomeTheBlue

TA Information Panel by RicardoSantos:

Correlation Matrix Heatmap by RicardoSantos:

還有,如果您想在交易中休息一下,您可以使用 Pine 表格與您的朋友下棋:

//@version=4
study("Chess", overlay=true)
// Coordinate conversion system
var a_xString = array.from(na, "a", "b", "c", "d", "e", "f", "g", "h")
var a_yString = array.from(na, "8", "7", "6", "5", "4", "3", "2", "1")
// Creating base table
f_even(_num) =>
_isEven = true
if _num % 2 == 0
_isEven := false
_isEven
f_cellColor(_column, _row) =>
color _cellColor = color.white
if f_even(_column)
if not f_even(_row)
_cellColor := color.gray
else
if f_even(_row)
_cellColor := color.gray
_cellColor
PADDING = "◯"
var table chessBoard = table.new(position.middle_right, 10, 10, frame_color = color.black,
border_color = color.black, frame_width = 3, border_width = 1, bgcolor = color.black)
if barstate.isfirst
for _column = 1 to 8
for _row = 1 to 8
table.cell(chessBoard, _column, _row, text = PADDING, bgcolor = f_cellColor(_column, _row), text_size = size.huge, text_color = #00ff0000)
for _row = 1 to 8
table.cell(chessBoard, 0, int(abs(9 - _row)), text = tostring(_row), text_size = size.small, text_color = color.white)
table.cell(chessBoard, 9, int(abs(9 - _row)), text = tostring(_row), text_size = size.small, text_color = color.white)
for _column = 1 to 8
table.cell(chessBoard, _column, 0, text = array.get(a_xString, _column), text_size = size.small, text_color = color.white)
table.cell(chessBoard, _column, 9, text = array.get(a_xString, _column), text_size = size.small, text_color = color.white)
// Two letters before the input signify the piece color/type
// White pieces
var i_whitePawn1 = "wp" + input("a2", "", group="White Pawns", inline="White Pawns #1")
var i_whitePawn2 = "wp" + input("b2", "", group="White Pawns", inline="White Pawns #1")
var i_whitePawn3 = "wp" + input("c2", "", group="White Pawns", inline="White Pawns #1")
var i_whitePawn4 = "wp" + input("d2", "", group="White Pawns", inline="White Pawns #1")
var i_whitePawn5 = "wp" + input("e2", "", group="White Pawns", inline="White Pawns #2")
var i_whitePawn6 = "wp" + input("f2", "", group="White Pawns", inline="White Pawns #2")
var i_whitePawn7 = "wp" + input("g2", "", group="White Pawns", inline="White Pawns #2")
var i_whitePawn8 = "wp" + input("h2", "", group="White Pawns", inline="White Pawns #2")
var i_whiteRook1 = "wr" + input("a1", inline="White Rooks" , group="White Pieces", title="Rooks ")
var i_whiteRook2 = "wr" + input("h1", inline="White Rooks" , group="White Pieces", title="")
var i_whiteKnight1 = "wn" + input("b1", inline="White Knights", group="White Pieces", title="Knights")
var i_whiteKnight2 = "wn" + input("g1", inline="White Knights", group="White Pieces", title="")
var i_whiteBishop1 = "wb" + input("c1", inline="White Bishops", group="White Pieces", title="Bishops")
var i_whiteBishop2 = "wb" + input("f1", inline="White Bishops", group="White Pieces", title="")
var i_whiteQueen = "wq" + input("d1", inline="White Queen" , group="White Pieces", title="Queen ")
var i_whiteKing = "wk" + input("e1", inline="White King" , group="White Pieces", title="King ")
var a_whitePieces = array.from(i_whitePawn1, i_whitePawn2, i_whitePawn3, i_whitePawn4, i_whitePawn5, i_whitePawn6, i_whitePawn7, i_whitePawn8,
i_whiteRook1, i_whiteRook2, i_whiteKnight1, i_whiteKnight2, i_whiteBishop1, i_whiteBishop2, i_whiteQueen, i_whiteKing)
// Black pieces
var i_blackPawn1 = "bp" + input("a7", "", group="Black Pawns", inline="Black Pawns #1")
var i_blackPawn2 = "bp" + input("b7", "", group="Black Pawns", inline="Black Pawns #1")
var i_blackPawn3 = "bp" + input("c7", "", group="Black Pawns", inline="Black Pawns #1")
var i_blackPawn4 = "bp" + input("d7", "", group="Black Pawns", inline="Black Pawns #1")
var i_blackPawn5 = "bp" + input("e7", "", group="Black Pawns", inline="Black Pawns #2")
var i_blackPawn6 = "bp" + input("f7", "", group="Black Pawns", inline="Black Pawns #2")
var i_blackPawn7 = "bp" + input("g7", "", group="Black Pawns", inline="Black Pawns #2")
var i_blackPawn8 = "bp" + input("h7", "", group="Black Pawns", inline="Black Pawns #2")
var i_blackRook1 = "br" + input("a8", inline="Black Rooks" , group="Black Pieces", title="Rooks ")
var i_blackRook2 = "br" + input("h8", inline="Black Rooks" , group="Black Pieces", title="")
var i_blackKnight1 = "bn" + input("b8", inline="Black Knights", group="Black Pieces", title="Knights")
var i_blackKnight2 = "bn" + input("g8", inline="Black Knights", group="Black Pieces", title="")
var i_blackBishop1 = "bb" + input("c8", inline="Black Bishops", group="Black Pieces", title="Bishops")
var i_blackBishop2 = "bb" + input("f8", inline="Black Bishops", group="Black Pieces", title="")
var i_blackQueen = "bq" + input("d8", inline="Black Queen" , group="Black Pieces", title="Queen ")
var i_blackKing = "bk" + input("e8", inline="Black King" , group="Black Pieces", title="King ")
var a_blackPieces = array.from(i_blackPawn1, i_blackPawn2, i_blackPawn3, i_blackPawn4,
i_blackPawn5, i_blackPawn6, i_blackPawn7, i_blackPawn8, i_blackRook1, i_blackRook2,
i_blackKnight1, i_blackKnight2, i_blackBishop1, i_blackBishop2, i_blackQueen, i_blackKing)
f_getIcon(_str) =>
var _pieces = array.from( "k", "♔", "♚",
"q", "♕", "♛",
"r", "♖", "♜",
"b", "♗", "♝",
"n", "♘", "♞",
"p", "♙", "♟")
_split = str.split(_str, "")
if array.size(_split) == 4
_color = array.get(_split, 0)
_piece = array.get(_split, 1)
_piece_offset = _color == "w" ? 1 : _color == "b" ? 2 : na
array.get(_pieces, array.indexof(_pieces, _piece) + _piece_offset)
f_placePiece(_piece_input) =>
_split = str.split(_piece_input, "")
if array.size(_split) == 4
_icon = f_getIcon(_piece_input)
_x = array.indexof(a_xString, array.get(_split, 2))
_y = array.indexof(a_yString, array.get(_split, 3))
table.cell_set_text(chessBoard, _x, _y, _icon)
table.cell_set_text_color(chessBoard, _x, _y, color.black)
if barstate.islast
for i = 0 to array.size(a_whitePieces) - 1
f_placePiece(array.get(a_whitePieces, i))
for i = 0 to array.size(a_blackPieces) - 1
f_placePiece(array.get(a_blackPieces, i))
我們希望您要求的這項新功能有用,請繼續向我們發送改進建議。我們為您打造 TradingView,並喜歡收到您的反饋。