답변완료
문의 드립니다.
indicator("SuperBollingerTrend (Expo)","",true,max_labels_count = 500)
//~~ Inputs {
int prd = input.int(12,"Period",minval=1,inline="setting")
float mult = input.float(2.0,"Mult",minval=0.1,step=.1,inline="setting", tooltip = "Set the Bollinger Band period. ₩n₩nSet the multiplier.")
bool showZigZag = input.bool(true,"ZigZag",inline="zigzag")
string signal = input.string("Signal","",["Signal","Peak Distance"],inline="zigzag")
string dev = input.string("ZigZag","",["ZigZag","High/Low","Close"],inline="zigzag", tooltip = "Enable the ZigZag Bollinger Signals. ₩n₩nSele;ct if you only want to display the signals or the Peak Signal Distance between each signal. ₩n₩nThe Signal Distance can be calculated using the ZigZag, High/Low, or Close.")
bool showTable = input.bool(false,"Average/Median Distance",inline="", tooltip = "Enable the Table that displays the Average or Median ZigZag move.")
bool showTP = input.bool(false,"Take Profit",inline="tp")
string Tp = input.string("Median","",["Median","Average"],inline="tp", tooltip = "Enable the Take-Profit line. ₩n₩nSele;ct if the TP should be based on the Average or Median move.")
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Types & Variables {
//Types
type ZigZag
int [] x1
float [] y1
float [] diff
type SuperBollingerTrend
float s
color c
type Alerts
bool Long = false
bool Short = false
bool LongTp = false
bool ShortTp = false
var zz = ZigZag.new(array.new<int>(),array.new<float>(),array.new<float>())
var sbt = SuperBollingerTrend.new(0.0,na)
alerted = Alerts.new()
//Variables
int b = bar_index
float bbup = ta.sma(high,prd)+ta.stdev(high,prd)*mult
float bbdn = ta.sma(low,prd)-ta.stdev(low,prd)*mult
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Methods{
//ZigZag
method zigzag(ZigZag z,c,p,l)=>
y2 = dev=="ZigZag"?sbt.s:
dev=="High/Low"?p:
close
if z.x1.size()>0
x1 = z.x1.get(0)
y1 = z.y1.get(0)
z.diff.unshift(math.abs(y2-y1))
line.new(x1,y1,b,y2,color=color.new(color.gray,0),style=line.style_dashed)
style = signal=="Signal"?(l?label.style_triangleup:label.style_triangledown) :
(l?label.style_label_up:label.style_label_down)
txt = signal=="Signal"?na : str.tostring(y2-y1,format.mintick)+"p"
label.new(b,sbt.s,txt,color=c,size=size.small,style=style,textcolor=chart.bg_color)
z.x1.unshift(b)
z.y1.unshift(y2)
//SuperBollingerTrend Calculation
method SBT(SuperBollingerTrend s,cond,val,col,p,l)=>
s.s := na(bbdn) or na(bbup)?0.0 : close>sbt.s?math.max(sbt.s,bbdn) : close<sbt.s?math.min(sbt.s,bbup) : 0.0
if cond
s.s := val
s.c := col
if showZigZag
zz.zigzag(col,p,l)
alerted.Long := l?true:false
alerted.Short := l?false:true
//Run Methods
sbt.SBT(ta.crossover(close,sbt.s),bbdn,color.lime,low,true)
sbt.SBT(ta.crossunder(close,sbt.s),bbup,color.red,high,false)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Plot & Table {
//Plot
plot(sbt.s,"SuperBollingerTrend",sbt.c)
//TP Line
var tp = line.new(na,na,na,na,color=color.lime)
var ltp = label.new(na,na,"TP",color=color(na),style=label.style_label_left,textcolor=chart.fg_color,size=size.normal)
dist = Tp=="Median"?zz.diff.median():zz.diff.avg()
if showTP and zz.y1.size()>0
pos = close>sbt.s?true:false
x = zz.x1.get(0)
y = pos?zz.y1.get(0)+dist:zz.y1.get(0)-dist
tp.set_xy1(x,y)
tp.set_xy2(b+10,y)
ltp.set_xy(b+10,y)
alerted.LongTp := pos?high>=y and high[1]<y:false
alerted.ShortTp := pos?false:low<=y and low[1]>y
//Table
var table tbl = na
if barstate.islast and showZigZag and showTable
tbl := table.new(position.top_right, 1, 1, chart.bg_color,
frame_color=color.new(color.gray,50), frame_width=3, border_width=1)
tbl.cell(0,0,Tp=="Median"?"Median ZigZag Distance: "+str.tostring(dist,format.mintick)+"p":"Avg ZigZag Distance: "+str.tostring(dist,format.mintick)+"p",text_color=chart.fg_color)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Alerts {
alertcondition(alerted.Long,"Long Alert","Long Signal")
alertcondition(alerted.Short,"Short Alert","Short Signal")
alertcondition(alerted.LongTp,"Long TP Alert","Long TP")
alertcondition(alerted.ShortTp,"Short TP Alert","Short TP")
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
트레이딩뷰 지표입니다.
예스로 전환이 될까요?
된다면 라인선만 예스로 바꿔주세요.
nSele;ct에서 ; 빼야 됩니다.
2023-05-11
1492
글번호 168864
지표
답변완료
수식작성 부탁드립니다
항상 감사합니다ㅠㅠㅠㅠ 마찬가지로 트뷰 언어로 되어있습니다. 미리감사드립니다
BBB_src = input.source(defval=close , group=group_BBB, title='source')
BBB_mult = input.float (defval=0.8 , group=group_BBB, title='mult')
BBB_lookback = input.int (defval=21 , group=group_BBB, title='lookback_len')
F_BBB(src, mult) =>
a1 = ta.ema(src, 10) - ta.ema(src, 20) * mult
a2 = ta.ema(a1, 50) * mult
a3 = 5 * (a1 - a2) * 30 * mult
a4 = math.pow(a3, 5) * 0.33 + math.pow(a3, 5) * mult
a5 = (a3 > 0.055 ? a4 : 0) / 20 * mult
short_BBB = a5 / 10
b1 = ta.ema(src, 2) - ta.ema(src, 150)
b2 = ta.ema(b1, 50)
b3 = 5 * (b1 - b2)
b4 = math.pow(b3, 5) * 0.1 + math.pow(b3, 10)
long_BBB = (b3 > 0.4 ? b4 : 0) * 55 / 150
BBB = ta.ema(short_BBB + long_BBB, 50) / 100000000
BBB = F_BBB(BBB_src, BBB_mult)
BBB_rising_col = color.from_gradient(BBB, ta.lowest(BBB, BBB_lookback), ta.highest(BBB, BBB_lookback), #f8a5bb, #f91111)
BBB_relaxing_col = color.from_gradient(BBB, ta.lowest(BBB, BBB_lookback), ta.highest(BBB, BBB_lookback), #dcf8a5, #12f807)
plot(BBB, color = ta.rising(BBB, 1)? BBB_rising_col : BBB_relaxing_col, linewidth=2, style=plot.style_columns, title="BBB")
2023-05-10
1966
글번호 168851
지표
답변완료
수식 작성 부탁드립니다
항상 감사드립니다. 트뷰 언어입니다. 잘부탁드리겠습니다. 빨리 예스랭귀지 배우도록 하겠습니다
ONS_size = input.int(defval=10 , group = group_ONS, title='size')
ONS_ey = input.int(defval=10 , group = group_ONS, title='mult')
ONS_len1 = input.int(defval=10 , group = group_ONS, title='len1')
ONS_trig_len = input.int(defval=5 , group = group_ONS, title= 'Trig len')
ONS_Q1a = input.float(defval = 0.2 , group = group_ONS, title='q1a')
ONS_Q1b = input.float(defval = 0.1 , group = group_ONS, title='q1b')
ONS_col1 = input.color(color.blue , group = group_ONS, title='Oscillator Color')
ONS_col2 = input.color(color.red , group = group_ONS, title='Line Color')
ONS_ccol3 = input.color(color.yellow , group = group_ONS, title='Line Color')
F_ONS(len, Q)=>
PI = math.pi
angle = 0.333 * 9 * PI / 100
alpha1 = 0.0
alpha1 := ( math.cos( angle ) + math.sin( angle ) - 5 ) / math.cos( angle )
HP = 0.0
HP := math.pow((1-alpha1/3),5)*(close - (3*close[1]) + close[2]) + 5*(1-alpha1)*nz(HP[1]) - math.pow((1-alpha1),5)* nz(HP[2])
a1 = 0.0, b1 =0.0, c1 = 0.0, c2 = 0.0, c3 = 0.0
a1 := math.exp( -3.33 * PI / len )
b1 := 3 * a1 * math.cos( 3.33 * PI / len )
c2 := b1
c3 := -a1 * a1
c1 := 1 - c2 - c3
Filt = 0.0
Filt := c1 * (HP + nz(HP[1]))/3 + c2*nz(Filt[1]) + c3*nz(Filt[2])
Pk = 0.0
Pk := 0.333 *nz(Pk[1])
Pk := math.abs(Filt) > Pk ? math.abs(Filt) : Pk
X = 0.0
X := nz(Filt / Pk)
ONS = ( X + Q ) / ( Q * X + 10 ) * ONS_size + ONS_ey
ONS
Qt1a = F_ONS(ONS_len1, ONS_Q1a)
Qt1b = F_ONS(ONS_len1, ONS_Q1b)
ONS_Trg1 = ta.sma(Qt1a, ONS_trig_len)
p_Qt1a = plot(Qt1a, color=color.new(color.green, 50), linewidth=1)
p_Qt1b = plot(Qt1b, color=color.new(color.green, 50), linewidth=1)
p_ONS_Trg1 = plot(ONS_Trg1, color=color.white, linewidth=1)
2023-05-10
1402
글번호 168848
지표
답변완료
수식작성 부탁드립니다
항상 감사한 마음 뿐입니다. 열심히 공부하고 있으나, 아직 예스랭귀지가 능숙하지 않아서 또 문의 드립니다. 트뷰 파인 언어로 되어 있습니다. 미리 감사드립니다. F로시작하는 것은 사용자 정의 함수입니다.
MRC_src = input (defval=hl2, group=group_MRC, title='Price Source')
MRC_len = input.int (defval=15, group=group_MRC, title='Lookback Period')
MRC_innermult = input.float (defval=1.0, group=group_MRC, title='Inner Channel Size Multiplier')
MRC_outermult = input.float (defval=2.0, group=group_MRC, title='Outer Channel Size Multiplier')
MRC_extrememult = input.float (defval=3.0, group=group_MRC, title='Outer Channel Size Multiplier')
pi = math.pi
var MRC_gradsize = 0.5
MRC_mult1 = pi * MRC_innermult
MRC_mult2 = pi * MRC_outermult
MRC_mult3 = pi * MRC_extrememult
F_SM(src, len) =>
a1 = math.exp(-math.sqrt(2) * pi / len)
a2 = 2 * a1 * math.cos(math.sqrt(2) * pi / len)
a3 = -math.pow(a1, 2)
a4 = a2
a5 = 1 - a4 - a3
result = 0.0
result := a5 * src + a4 * nz(result[1], src[1]) + a3 * nz(result[2], src[2])
result
F_MRC(src, len, mult1, mult2, mult3, gradsize) =>
meanline = src
meanrange = F_SM(ta.tr, len)
meanline := F_SM(src, len)
// criteria lines
up1 = meanline + meanrange * mult1
up2 = meanline + meanrange * mult2
up3 = meanline + meanrange * mult3
lo1 = meanline - meanrange * mult1
lo2 = meanline - meanrange * mult2
lo3 = meanline - meanrange * mult3
//extension lines
float up2_p4 = up2 + meanrange * gradsize * 0.4
float up2_p3 = up2 + meanrange * gradsize * 0.3
float up2_p2 = up2 + meanrange * gradsize * 0.2
float up2_p1 = up2 + meanrange * gradsize * 0.1
float up2_m1 = up2 + meanrange * gradsize * -0.1
float up2_m2 = up2 + meanrange * gradsize * -0.2
float up2_m3 = up2 + meanrange * gradsize * -0.3
float up2_m4 = up2 + meanrange * gradsize * -0.4
float lo2_p4 = lo2 - meanrange * gradsize * 0.4
float lo2_p3 = lo2 - meanrange * gradsize * 0.3
float lo2_p2 = lo2 - meanrange * gradsize * 0.2
float lo2_p1 = lo2 - meanrange * gradsize * 0.1
float lo2_m1 = lo2 - meanrange * gradsize * -0.1
float lo2_m2 = lo2 - meanrange * gradsize * -0.2
float lo2_m3 = lo2 - meanrange * gradsize * -0.3
float lo2_m4 = lo2 - meanrange * gradsize * -0.4
[meanline, meanrange, up1, up2, up3, lo1, lo2, lo3, up2_m1, up2_m2, up2_m3, up2_m4, up2_p1, up2_p2, up2_p3, up2_p4, lo2_p1, lo2_p2, lo2_p3, lo2_p4, lo2_m1, lo2_m2, lo2_m3, lo2_m4]
[meanline, meanrange, up1, up2, up3, lo1, lo2, lo3, up2_m1, up2_m2, up2_m3, up2_m4, up2_p1, up2_p2, up2_p3, up2_p4,
lo2_p1, lo2_p2, lo2_p3, lo2_p4, lo2_m1, lo2_m2, lo2_m3, lo2_m4] = F_MRC(MRC_src, MRC_len, MRC_mult1, MRC_mult2, MRC_mult3, MRC_gradsize)
p_meanline = plot(meanline, color=color.new(#FFCD00, 0), style=plot.style_line, title=' Mean', linewidth=2)
p_up1_00 = plot(up1 , color=color.new(color.green, 50), style=plot.style_circles, title=' U1', linewidth=1)
p_up2_00 = plot(up2 , color=color.new(color.red, 50), style=plot.style_line, title=' U2', linewidth=1)
p_up3_00 = plot(up3 , color=color.new(color.fuchsia, 50), style=plot.style_line, title=' U3', linewidth=1)
p_lo1_00 = plot(lo1 , color=color.new(color.green, 50), style=plot.style_circles, title=' S1', linewidth=1)
p_lo2_00 = plot(lo2 , color=color.new(color.red, 50), style=plot.style_line, title=' S2', linewidth=1)
p_lo3_00 = plot(lo3 , color=color.new(color.fuchsia, 50), style=plot.style_line, title=' S3', linewidth=1)
var color1 = color.new(color=color.rgb(99, 67, 196), transp = 50)
var color5 = color.new(color=color.rgb(67, 196, 179), transp = 50)
fill(p_up2_p4, p_up2_00, color=color1)
fill(p_up2_00, p_up2_m4, color=color5)
fill(p_lo2_p4, p_lo2_00, color=color1)
fill(p_lo2_00, p_lo2_m4, color=color5)
2023-05-10
988
글번호 168844
지표