OPEN-SOURCE SCRIPT

Pinescript v3 Compatibility Framework (v4 Migration Tool)

Pinescript v3 Compatibility Framework (v4 Migration Tool)

This code makes most v3 scripts work in v4 with only a few minor changes below. Place the framework code before the first input statement.
You can totally delete all comments.

Pros:
- to port to v4 you only need to make a few simple changes, not affecting the core v3 code functionality
Cons:
- without #include - large redundant code block, but can be reduced as needed
- no proper syntax highlighting, intellisence for substitute constant names

Make the following changes in v3 script:

1. standard types can't be var names, color_transp can't be in a function, rename in v3 script:
color() => color.new()
bool => bool_
integer => integer_
float => float_
string => string_

2. init na requires explicit type declaration
float a = na
color col = na

3. persistent var init (optional):
s = na
s := nz(s[1], s) // or s := na(s[1]) ? 0 : s[1]
// can be replaced with var s
var s = 0
s := s + 1

___________________________________________________________

Key features of Pinescript v4 (FYI):

1. optional explicit type declaration/conversion (you still can't cast series to int)
float s

2. persistent var modifier
var s
var float s

3. string series - persistent strings now can be used in cond and output to screen dynamically

4. label and line objects
- can be dynamically created, deleted, modified using get/set functions, moved before/after the current bar
- can be in if or a function unlike plot
- max limit: 50-55 label, and 50-55 line drawing objects in addition to already existing plots - both not affected by max plot outputs 64
- can only be used in the main chart
- can serve as the only output function - at least one is required: plot, barcolor, line, label etc.
- dynamic var values (including strings) can be output to screen as text using label.new and to_string

str = close >= open ? "up" : "down"
label.new(bar_index, high, text=str)

col = close >= open ? color.green : color.red
label.new(bar_index, na, "close = " + tostring(close), color=col, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)

// create new objects, delete old ones
l = line.new(bar_index, high, bar_index[10], low[10], width=4)
line.delete(l[1])

// free object buffer by deleting old objects first, then create new ones
var l = na
line.delete(l)
l = line.new(bar_index, high, bar_index[10], low[10], width=4)

DEMOExponential Moving Average (EMA)exampleframeworkpinescriptpinescriptersSimple Moving Average (SMA)toolv3v4

Script open-source

In pieno spirito TradingView, l'autore di questo script lo ha pubblicato open-source, in modo che i trader possano comprenderlo e verificarlo. Un saluto all'autore! È possibile utilizzarlo gratuitamente, ma il riutilizzo di questo codice in una pubblicazione è regolato dal nostro Regolamento. Per aggiungerlo al grafico, mettilo tra i preferiti.

Vuoi usare questo script sui tuoi grafici?

Declinazione di responsabilità