예스스탁
예스스탁 답변
2023-04-24 17:10:26
안녕하세요
예스스탁입니다.
해당언어에 능숙하지 않아 올려주신 내용은 변환을 해드릴수 없습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 나고수야 님이 쓴 글입니다.
> 제목 : 지표변환부탁드립니다
> // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
//@version = 4
//Copyright LuxAlgo
study("Volume Profile [LUX]","Volume Profile [LuxAlgo]",true,max_bars_back=1000,max_lines_count=500)
length = input(500,'Lookback',minval=1,maxval=1000,group='Basic'
,tooltip='Number of most recent bars to use for the calculation of the volume profile')
row = input(200,'Row Size',minval=1,maxval=500,group='Basic'
,tooltip='Determines the number of rows used for the calculation of the volume profile')
show_rpoc = input(false,'Show Rolling POC',group='Basic'
,tooltip='Determines whether to display the rolling POC of the volume profile')
width = input(50,'Width (% of the box)',minval=1,maxval=100,group='Style'
,tooltip='Determines the length of the bars relative to the Lookback value')
bar_width = input(2,'Bar Width',group='Style'
,tooltip='Width of each bar')
flip = input(false,'Flip Histogram',group='Style'
,tooltip='Flip the histogram, when enabled, the histogram base will be located at the most recent candle')
grad = input(true,'Gradient',group='Style'
,tooltip='Allows to color the volume profile bars with a gradient, with a color intensity determined by the length of each bar')
solid = input(#2157f3,'Rows Solid Color',group='Style'
,tooltip='Color of each bar when "Gradient" is disabled')
poc_color = input(#ff5d00,'POC Solid Color',group='Style'
,tooltip='Color of the POC when "Gradient" is disabled')
//-----------------------------------------------------------------------------------------
var vol_css = array.new_color(na)
var a = array.new_line()
var b = array.new_line()
if barstate.isfirst
array.push(vol_css,#1E152A), array.push(vol_css,#1E162B), array.push(vol_css,#1F182C), array.push(vol_css,#1F192E), array.push(vol_css,#201B2F), array.push(vol_css,#211C31), array.push(vol_css,#211E32), array.push(vol_css,#222034), array.push(vol_css,#222135), array.push(vol_css,#232337), array.push(vol_css,#242438), array.push(vol_css,#24263A), array.push(vol_css,#25273B), array.push(vol_css,#25293D), array.push(vol_css,#262B3E), array.push(vol_css,#272C3F), array.push(vol_css,#272E41), array.push(vol_css,#282F42), array.push(vol_css,#283144), array.push(vol_css,#293245), array.push(vol_css,#2A3447), array.push(vol_css,#2A3648), array.push(vol_css,#2B374A), array.push(vol_css,#2B394B), array.push(vol_css,#2C3A4D), array.push(vol_css,#2D3C4E), array.push(vol_css,#2D3D50), array.push(vol_css,#2E3F51), array.push(vol_css,#2E4153), array.push(vol_css,#2F4254), array.push(vol_css,#304455), array.push(vol_css,#304557), array.push(vol_css,#314758), array.push(vol_css,#32495A), array.push(vol_css,#324A5B), array.push(vol_css,#334C5D), array.push(vol_css,#334D5E), array.push(vol_css,#344F60), array.push(vol_css,#355061), array.push(vol_css,#355263), array.push(vol_css,#365464), array.push(vol_css,#365566), array.push(vol_css,#375767), array.push(vol_css,#385868), array.push(vol_css,#385A6A), array.push(vol_css,#395B6B), array.push(vol_css,#395D6D), array.push(vol_css,#3A5F6E), array.push(vol_css,#3B6070), array.push(vol_css,#3B6271), array.push(vol_css,#3C6373), array.push(vol_css,#3C6574), array.push(vol_css,#3D6676), array.push(vol_css,#3E6877), array.push(vol_css,#3E6A79), array.push(vol_css,#3F6B7A), array.push(vol_css,#3F6D7C), array.push(vol_css,#406E7D), array.push(vol_css,#41707E), array.push(vol_css,#417180), array.push(vol_css,#427381), array.push(vol_css,#427583), array.push(vol_css,#437684), array.push(vol_css,#447886), array.push(vol_css,#447987), array.push(vol_css,#457B89), array.push(vol_css,#467D8A), array.push(vol_css,#467E8C), array.push(vol_css,#47808D), array.push(vol_css,#47818F), array.push(vol_css,#488390), array.push(vol_css,#498491), array.push(vol_css,#498693), array.push(vol_css,#4A8894), array.push(vol_css,#4A8996), array.push(vol_css,#4B8B97), array.push(vol_css,#4C8C99), array.push(vol_css,#4C8E9A), array.push(vol_css,#4D8F9C), array.push(vol_css,#4D919D), array.push(vol_css,#4E939F), array.push(vol_css,#4F94A0), array.push(vol_css,#4F96A2), array.push(vol_css,#5097A3), array.push(vol_css,#5099A5), array.push(vol_css,#519AA6), array.push(vol_css,#529CA7), array.push(vol_css,#529EA9), array.push(vol_css,#539FAA), array.push(vol_css,#53A1AC), array.push(vol_css,#54A2AD), array.push(vol_css,#55A4AF), array.push(vol_css,#55A5B0), array.push(vol_css,#56A7B2), array.push(vol_css,#56A9B3), array.push(vol_css,#57AAB5), array.push(vol_css,#58ACB6), array.push(vol_css,#58ADB8), array.push(vol_css,#59AFB9), array.push(vol_css,#5AB1BB)
for i = 0 to row-1
array.push(a,line.new(na,na,na,na,width=2))
array.push(b,line.new(na,na,na,na,width=2))
//-----------------------------------------------------------------------------------------
n = bar_index
src = close
v = volume
//-----------------------------------------------------------------------------------------
var Alvl = 0.
var Blvl = 0.
var current_num_conf = 0
var current_num_cont = 0
highest = highest(length)
lowest = lowest(length)
//----
line l = na
line poc = na
levels = array.new_float(0)
sumv = array.new_float(0)
//----
condition = show_rpoc ? true : barstate.islast
if condition
for i = 0 to row
array.push(levels,lowest + i/row*(highest-lowest))
for j = 0 to row-1
sum = 0.
for k = 0 to length-1
sum := high[k] > array.get(levels,j) and low[k] < array.get(levels,j+1) ?
sum + v[k] : sum
array.push(sumv,sum)
for j = 0 to row-1
mult = array.get(sumv,j)/array.max(sumv)
l := array.get(a,j)
get = array.get(levels,j)
if flip
line.set_xy1(l,n,get)
line.set_xy2(l,n-round(length*width/100*mult),array.get(levels,j))
else
line.set_xy1(l,n-length+1,get)
line.set_xy2(l,n-length+round(length*width/100*mult),array.get(levels,j))
line.set_color(l,grad ? array.get(vol_css,round(mult*99)) : solid)
line.set_width(l,bar_width)
if mult == 1
poc := array.get(b,0)
avg = avg(get,array.get(levels,j+1))
if flip
line.set_xy1(poc,n,avg)
line.set_xy2(poc,n-length+1,avg)
else
line.set_xy1(poc,n-length+1,avg)
line.set_xy2(poc,n,avg)
line.set_color(poc,grad ? #5AB1BB : poc_color)
line.set_style(poc,line.style_dotted)
line.set_width(poc,bar_width)
if show_rpoc
Alvl := array.get(levels,array.indexof(sumv,array.max(sumv)))
Blvl := array.get(levels,array.indexof(sumv,array.max(sumv))+1)
plot(show_rpoc ? avg(Alvl,Blvl) : na,'Rolling POC',color=#ff1100)
//----------------------------------------------------------------------------------------]