web-dev-qa-db-fra.com

comment dessiner des lignes dans le script Pine (Tradingview)?

L'éditeur de pin n'a toujours pas de fonctions intégrées pour tracer les lignes (telles que les lignes de support, les lignes de tendance). Je n'ai trouvé aucune méthode directe ou indirecte pour tracer des lignes. Je veux créer une fonction qui ressemble à ci-dessous (par exemple uniquement)

draw_line(price1, time1,price2, time2)

des idées ou des suggestions?

6
Ibrahim

Malheureusement, je ne pense pas que ce soit quelque chose qu'ils souhaitent offrir. Remarquant plusieurs messages prometteurs d'il y a 4 ans qui n'ont jamais été publiés. La seule autre façon, semble impliquer certains calculs, en rapprochant votre ligne avec certains tracés de ligne, où vous cachez les parties non pertinentes.

Pour exemple :

...
c = close >= open ? Lime : red
plot(close, color = c)

produirait quelque chose comme ceci:

enter image description here

Ensuite, vous pouvez essayer de remplacer red par na pour obtenir uniquement les parties vertes.

Exemple 2

J'ai fait quelques expériences supplémentaires. Apparemment, Pine est tellement paralysé que vous ne pouvez même pas mettre un tracé en fonction, donc la seule façon semble être d'utiliser la formule de pente de point pour une ligne, comme ceci:

//@version=3
study(title="Simple Line", shorttitle='AB', overlay=true)

P1x = input(5744)
P1y = input(1.2727)
P2x = input(5774)
P2y = input(1.2628)
plot(n, color=na, style=line)   // hidden plot to show the bar number in indicator

// point slope
m = - (P2y - P1y) / (P2x - P1x)

// plot range
AB = n < P1x or n > P2x ? na : P1y - m*(n - P1x)
LA = (n == P1x) ? P1y : na
LB = (n == P2x) ? P2y : na

plot(AB, title="AB", color=#ff00ff, linewidth=1, style=line, transp=0)
plotshape(LA, title='A', location=location.absolute, color=silver, transp=0, text='A', textcolor=black, style=shape.labeldown)
plotshape(LB, title='B', location=location.absolute, color=silver, transp=0, text='B', textcolor=black, style=shape.labelup )

Le résultat est assez sympa, mais trop gênant à utiliser. enter image description here


MISE À JOUR: 2019-10-01

Apparemment, ils ont ajouté de nouvelles fonctionnalités de ligne à Pinescript4.0+. Voici un exemple d'utilisation de la nouvelle fonction vline():

//@version=4
study("vline() Function for Pine Script v4.0+", overlay=true)

vline(BarIndex, Color, LineStyle, LineWidth) => // Verticle Line, 54 lines maximum allowable per indicator
    return = line.new(BarIndex, -1000, BarIndex, 1000, xloc.bar_index, extend.both, Color, LineStyle, LineWidth)

if(bar_index%10==0.0)
    vline(bar_index, #FF8000ff, line.style_solid, 1) // Variable assignment not required

Quant à l'autre "nouvelle" fonction ligne, je ne l'ai pas encore testée.

9
not2qubit

Ceci est désormais possible dans Pine Script v4 :

Preview

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

Code plus compact pour les lignes de dessin:

//@version=3
study("Draw line", overlay=true)

plot(n, color=na, style=line)
AB(x1,x2,y1,y2) => n < x1 or n > x2 ? na : y1 + (y2 - y1) / (x2 - x1) * (n - x1)

plot(AB(10065,10136,3819,3893), color=#ff00ff, linewidth=1, style=line, 
transp=0)
plot(AB(10091,10136,3966.5,3931), color=#ff00ff, linewidth=1, style=line, 
transp=0)
1
Andrey