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
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)
Dengan semangat TradingView yang sesungguhnya, penulis skrip ini telah menerbitkannya sebagai sumber terbuka, sehingga para trader dapat memahami dan memverifikasinya. Hormat untuk penulisnya! Anda dapat menggunakannya secara gratis, namun penggunaan kembali kode ini dalam publikasi diatur oleh Tata Tertib. Anda dapat memfavoritkannya untuk digunakan pada chart
Informasi dan publikasi tidak dimaksudkan untuk menjadi, dan bukan merupakan saran keuangan, investasi, perdagangan, atau rekomendasi lainnya yang diberikan atau didukung oleh TradingView. Baca selengkapnya di Persyaratan Penggunaan.