TradingView
RagingRocketBull
Jul 2, 2019 2:55 PM

Pinescript v3 Compatibility Framework (v4 Migration Tool) 

Bitcoin / United States DollarCoinbase

Description

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)

Comments
lkg9073
Thanks alot. Very helpful for some starting to develop his own scripts.
tomchen73
Very nice tool indeed and demo use of v4! Thanks for the Rocket!
RagingRocketBull
@tomchen73, you can also convert v3 scripts to v4 from Pine Editor now by clicking the convert button. And as PineCoders told me, arrays will be deployed soon in the upcoming Pinescript update.
manojm4
@RagingRocketBull, I tried but convert button is not available
hardikmiru
Hey buddy, Can you guide me how to convert version 2 to version 4 or version 5. On tradingview i try to do it but its showing 100s of error..
Siyeon
Thanks for sharing! :)
AltJams
Thanks for sharing!
RagingRocketBull
screen for reference:
More