Présentation des tableaux Pine

May 25, 2021

Les tableaux sont des objets qui peuvent être utilisés pour positionner des informations à des endroits spécifiques et fixes dans l’espace visuel d’un script. Contrairement à tous les autres graphiques ou objets dessinés dans Pine, les tableaux ne sont pas ancrés à des barres spécifiques : ils flottent dans l’espace d’un script, que ce soit en mode superposition ou volet, dans des études ou des stratégies, indépendamment des barres du graphique visualisées ou du facteur de zoom utilisé.

Cette nouvelle fonctionnalité vous permet de présenter des données d’une manière qui n’a jamais été possible auparavant. Vous pouvez créer un panneau d’affichage généré automatiquement avec des données pertinentes pour le symbole actuel et l’épingler sur le côté de votre écran, ou créer une carte thermique dynamique, ou fournir un accès rapide à toute information disponible dans Pine – les possibilités sont infinies. Il va sans dire que les tableaux peuvent être utilisés en conjonction avec toutes les autres fonctionnalités de PineScript pour améliorer encore vos indicateurs existants.

Rendez-vous sur la page du manuel de l’utilisateur de Pine consacrée aux tableaux pour vous lancer dans la création de tableaux.

Ce tableau de performance, inspiré de la section « Performance » de notre barre latérale, vous aide à suivre la performance du symbole du graphique :

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

Les exemples suivants montrent des tableaux utilisés dans les scripts par les PineCoders qui nous aident à tester les nouvelles fonctionnalités de Pine :

Indicator Panel par LonesomeTheBlue

TA Information Panel par RicardoSantos:

Correlation Matrix Heatmap par RicardoSantos:

Et si vous souhaitez faire une pause dans votre activité de trader, vous pouvez utiliser les tableaux Pine pour jouer aux échecs avec vos amis :

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

Nous espérons que cette nouvelle fonctionnalité que vous avez demandée vous sera utile. Continuez à nous envoyer vos suggestions d’amélioration. Nous construisons TradingView pour vous et aimons recevoir vos commentaires.

Look first Then leap

TradingView est conçu pour vous, assurez-vous donc de profiter au maximum de nos fonctionnalités exceptionnelles
Ouvrir le graphique