我正在尝试绘制多个资产的百分比变化。我想让股票代码显示百分比变化。问题是尝试将 ID 与更改匹配,并使 id 随相应更改而移动。这就是我所拥有的
study("My Script", precision=2)
btc = security('ftx:btcperp', timeframe.period, close)
eth = security('ftx:ethperp', timeframe.period, close)
ltc = security('ftx:ltcperp', timeframe.period, close)
doge = security('ftx:dogeperp', timeframe.period, close)
a = (btc - btc[1]) / btc[1] * 100
b = (eth - eth[1]) / eth[1] * 100
c = (ltc - ltc[1]) / ltc[1] * 100
d = (doge - doge[1]) / doge[1] * 100
nsec0(v1,v2,v3,v4) =>
v = array.new_float()
array.push(v,v1),array.push(v,v2),array.push(v,v3),array.push(v,v4)
array.sort(v, order.descending)
array.get(v,3)
nsec1(v1,v2,v3,v4) =>
v = array.new_float()
array.push(v,v1),array.push(v,v2),array.push(v,v3),array.push(v,v4)
array.sort(v, order.descending)
array.get(v,2)
nsec2(v1,v2,v3,v4) =>
v = array.new_float()
array.push(v,v1),array.push(v,v2),array.push(v,v3),array.push(v,v4)
array.sort(v, order.descending)
array.get(v,1)
nsec3(v1,v2,v3,v4) =>
v = array.new_float()
array.push(v,v1),array.push(v,v2),array.push(v,v3),array.push(v,v4)
array.sort(v, order.descending)
array.get(v,0)
plot(nsec0(a,b,c,d),style=plot.style_columns, show_last=1, color=color.blue, offset=0)
plot(nsec1(a,b,c,d),style=plot.style_columns, show_last=1, color=color.white, offset=-1)
plot(nsec2(a,b,c,d),style=plot.style_columns, show_last=1, color=color.yellow, offset=-2)
plot(nsec3(a,b,c,d),style=plot.style_columns, show_last=1, color=color.orange, offset=-3)
lt = tostring(nsec0(a,b,c,d), '#.##')
ln = label.new(x = bar_index, y = na, text=lt, yloc=yloc.price, color=color.white)
label.delete(ln[1])
lt1 = tostring(nsec1(a,b,c,d), '#.##')
ln1 = label.new(x = bar_index - 1, y = na, text=lt1, yloc=yloc.price, color=color.white)
label.delete(ln1[1])
lt2 = tostring(nsec2(a,b,c,d), '#.##')
ln2 = label.new(x = bar_index - 2, y = na, text=lt2, yloc=yloc.price, color=color.white)
label.delete(ln2[1])
lt3 = tostring(nsec3(a,b,c,d), '#.##')
ln3 = label.new(x = bar_index - 3, y = na, text=lt3, yloc=yloc.price, color=color.white)
label.delete(ln3[1])
答案 0 :(得分:0)
怎么样?
//@version=4
study("My Script", precision=2)
var label[] labels = array.new_label()
var float[] v = array.new_float(4,na)
f_label_move(_i) =>
lbl = array.get(labels,_i)
label.set_text(lbl, tostring(array.get(v,_i), '#.##') + '%')
label.set_xy(lbl, bar_index - _i, array.max(v))
f_get_data(_sec) => security(_sec, timeframe.period, close)
f_change(_src) => change(_src) / _src[1] * 100
btc = f_get_data('ftx:btcperp')
eth = f_get_data('ftx:ethperp')
ltc = f_get_data('ftx:ltcperp')
doge = f_get_data('ftx:dogeperp')
a = f_change(btc)
b = f_change(eth)
c = f_change(ltc)
d = f_change(doge)
if barstate.isfirst
for i = 0 to 3
array.push(labels, label.new(na, na, "", color=color.white))
if barstate.islast
v := array.from(a,b,c,d)
array.sort(v, order.descending)
for i = 0 to 3
f_label_move(i)
plot(array.get(v,0), style=plot.style_columns, show_last=1, color=color.blue, offset= 0)
plot(array.get(v,1), style=plot.style_columns, show_last=1, color=color.white, offset=-1)
plot(array.get(v,2), style=plot.style_columns, show_last=1, color=color.yellow, offset=-2)
plot(array.get(v,3), style=plot.style_columns, show_last=1, color=color.orange, offset=-3)
编辑 1 - 这显示了证券的名称。
//@version=4
study("My Script", precision=2)
var string[] label_names = array.new_string(4,na)
var label[] label_values = array.new_label()
var float[] v = array.new_float(4,na)
f_label_move(_i) =>
lbl = array.get(label_values,_i)
label.set_text(lbl, array.get(label_names,_i) + '\n' + tostring(array.get(v,_i), '#.##') + '%')
label.set_xy(lbl, bar_index - _i, array.max(v))
f_get_data(_sec) => security(_sec, timeframe.period, close)
f_change(_src) => change(_src) / _src[1] * 100
btc = f_get_data('ftx:btcperp')
eth = f_get_data('ftx:ethperp')
ltc = f_get_data('ftx:ltcperp')
doge = f_get_data('ftx:dogeperp')
a = f_change(btc)
b = f_change(eth)
c = f_change(ltc)
d = f_change(doge)
if barstate.isfirst
for i = 0 to 3
array.push(label_values, label.new(na, na, "", color=color.white))
if barstate.islast
v := array.from(a,b,c,d)
labels_orig = array.from("btc","eth","ltc","doge")
v_orig = array.copy(v)
array.sort(v, order.descending)
for i = 0 to 3
idx = array.indexof(v_orig, array.get(v,i))
array.set(label_names, i, array.get(labels_orig, idx))
for i = 0 to 3
f_label_move(i)
plot(array.get(v,0), style=plot.style_columns, show_last=1, color=color.blue, offset= 0)
plot(array.get(v,1), style=plot.style_columns, show_last=1, color=color.white, offset=-1)
plot(array.get(v,2), style=plot.style_columns, show_last=1, color=color.yellow, offset=-2)
plot(array.get(v,3), style=plot.style_columns, show_last=1, color=color.orange, offset=-3)