답변완료
지표 변환 부탁드립니다.
// 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/
// © LuxAlgo
//@version=5
indicator("FVG Trailing Stop [LuxAlgo]", shorttitle = "LuxAlgo - FVG Trailing Stop", overlay = true)
//---------------------------------------------------------------------------------------------------------------------}
//User Inputs
//---------------------------------------------------------------------------------------------------------------------{
fvgLen = input.int(5, minval = 1, title = "Unmitigated FVG Lookback")
smoothLen = input.int(9, minval = 1, title = "Smoothing Length")
ts2Tog = input.bool(false, title = "Reset on Cross")
bullColor = input.color(#089981, title = " Bullish Color", inline = "bull", group = "Style")
bearColor = input.color(#f23645, title = "Bearish Color", inline = "bear", group = "Style")
bullFillColor = input.color(color.new(#089981, 80), title = "", inline = "bull", group = "Style")
bearFillColor = input.color(color.new(#f23645, 80), title = "", inline = "bear", group = "Style")
//---------------------------------------------------------------------------------------------------------------------}
//Functions
//---------------------------------------------------------------------------------------------------------------------{
fz(_val,_standin) => _val > 0 ? _val : _standin
//---------------------------------------------------------------------------------------------------------------------}
//FVG Level Arrays
//---------------------------------------------------------------------------------------------------------------------{
var bull_lvls = array.new<float>(0)
var bear_lvls = array.new<float>(0)
//---------------------------------------------------------------------------------------------------------------------}
//Calculations
//---------------------------------------------------------------------------------------------------------------------{
//FVG Detection
if low > high[2] and close[1] > high[2]
bull_lvls.push(high[2])
if high < low[2] and close[1] < low[2]
bear_lvls.push(low[2])
//Array Size Management
if bull_lvls.size() > fvgLen
bull_lvls.shift()
if bear_lvls.size() > fvgLen
bear_lvls.shift()
//FVG Mitigation Detection
if bull_lvls.size() > 0
for i = bull_lvls.size()-1 to 0
if close < bull_lvls.get(i)
bull_lvls.remove(i)
if bear_lvls.size() > 0
for i = bear_lvls.size()-1 to 0
if close > bear_lvls.get(i)
bear_lvls.remove(i)
//Bars to calc SMAs
bull_bs = fz(ta.barssince(not na(bull_lvls.avg())),1)
bear_bs = fz(ta.barssince(not na(bear_lvls.avg())),1)
//Progressive SMAs
csum = ta.cum(close)
//Calc starts at 1 when FVG array is empty and Maxes out at Smoothing Length
bull_sma = (csum - csum[math.min(bull_bs,smoothLen)]) / math.min(bull_bs,smoothLen)
bear_sma = (csum - csum[math.min(bear_bs,smoothLen)]) / math.min(bear_bs,smoothLen)
//Displayed Extreme Values
bull_disp = ta.sma(nz(bull_lvls.avg(),bull_sma),smoothLen)
bear_disp = ta.sma(nz(bear_lvls.avg(),bear_sma),smoothLen)
var int dir = 0
if close > bear_disp
dir := -1
if close < bull_disp
dir := 1
//Actual TS
var int os = na
var float ts = na
float sr_crossings = na
os := close > bear_disp ? 1 : close < bull_disp ? -1 : os
ts := os > os[1] ? bull_disp : os < os[1] ? bear_disp : os == 1 ? math.max(bull_disp, ts) : math.min(bear_disp, ts)
if ts2Tog
if os == 1
if close < ts
sr_crossings := ts, ts := na
else if close > bear_disp and na(ts)
ts := bull_disp
else if os == -1
if close > ts
sr_crossings := ts, ts := na
else if close < bull_disp and na(ts)
ts := bear_disp
//---------------------------------------------------------------------------------------------------------------------}
//Display
//---------------------------------------------------------------------------------------------------------------------{
ts_color = os != os[1] ? na : os == 1 ? bullColor : bearColor
plot_upper = plot((not na(ts) or not na(ts[1])) and os == -1 ? bear_disp : na, 'Upper'
, color.new(bearColor, 50)
, style = plot.style_linebr)
plot_lower = plot((not na(ts) or not na(ts[1])) and os == 1 ? bull_disp : na, 'Lower'
, color.new(bullColor, 50)
, style = plot.style_linebr)
plot_upper_ts = plot((not na(ts) or not na(ts[1])) and os == -1 ? nz(ts,ts[1]) : na, 'Upper Trailing Stop'
, color = bearColor
, style = plot.style_linebr)
plot_lower_ts = plot((not na(ts) or not na(ts[1])) and os == 1 ? nz(ts,ts[1]) : na, 'Lower Trailing Stop'
, color = bullColor
, style = plot.style_linebr)
plot(os != os[1] ? ts : na, 'Trend Changes'
, color = os == 1 ? bullColor : bearColor
, style = plot.style_circles
, linewidth = 1)
plot(sr_crossings, 'Crossings'
, color = ts_color
, style = plot.style_circles
, linewidth = 3)
fill(plot_lower_ts, plot_lower
, (not na(ts) or not na(ts[1])) and os == 1 ? nz(ts,ts[1]) : na
, bull_disp
, bullFillColor
, color.new(chart.bg_color, 100))
fill(plot_upper, plot_upper_ts
, bear_disp
, (not na(ts) or not na(ts[1])) and os == -1 ? nz(ts,ts[1]) : na
, color.new(chart.bg_color, 100)
, bearFillColor)
//---------------------------------------------------------------------------------------------------------------------}
2025-06-24
227
글번호 192052
지표
답변완료
부탁드립니다.
아래 지표에서 signal 70통과시 분홍색 30통과시 파랑색으로 70과 30사이는 그냥 하얀바탕으로 강세약세 지표 부탁드립니다.
input : length(14);
input : smoType1(3); #1:EMA, 2:SMA, 3:RMA, 4TMA
input : arsiCss(silver);
input : autoCss(true);
//Signal Line
input : smooth(14);
input : smoType2(1);#1EMA, 2SMA, 3RMA, 4TMA
input : signalCss(Orange);
//OB/OS Style
input : obValue(75);
input : obCss(Green);
input : obAreaCss(LightGreen);
input : osValue(25);
input : osCss(Red);
input : osAreaCss(LightRed);
var : src(0);
var : upper(0),lower(0),r(0);
var : d(0),diff(0),alpha(0),num(0),den(0),arsi(0),signal(0),a(0),tx(0);
src = close;
upper = highest(src, length);
lower = lowest(src, length);
r = upper - lower;
d = src - src[1];
diff = iff(upper > upper[1] , r , iff(lower < lower[1] , -r , d));
if smoType1 == 1 Then
{
num = ema(diff, length);
den = ema(abs(diff), length);
}
if smoType1 == 2 Then
{
num = ma(diff, length);
den = ma(abs(diff), length);
}
if smoType1 == 3 Then
{
alpha = 1/length;
num = iff(isnan(num[1]) == true, ma(diff, length) , alpha * diff + (1 - alpha) * iff(isnan(num[1])==true,0,num[1]));
den = iff(isnan(den[1]) == true, ma(abs(diff), length) , alpha * abs(diff) + (1 - alpha) * iff(isnan(den[1])==true,0,den[1]));
}
if smoType1 == 4 Then
{
num = ma(ma(diff, length),length);
den = ma(ma(abs(diff), length), length);
}
arsi = num / den * 50 + 50;
if smoType2 == 1 Then
{
signal = ema(arsi, smooth);
}
if smoType2 == 2 Then
{
signal = ma(arsi, smooth);
}
if smoType2 == 3 Then
{
a = 1/smooth;
signal = iff(isnan(signal[1]) == true, ma(arsi, length) , a * arsi + (1 - a) * iff(isnan(signal[1])==true,0,signal[1]));
}
if smoType2 == 4 Then
{
signal = ma(arsi, smooth);
}
plot1(arsi, "Ultimate RSI",IFf(arsi > obValue , obCss , IFF(arsi < osValue , osCss ,IFf( autoCss , Black , arsiCss))));
plot2(signal, "Signal Line", signalCss);
PlotBaseLine1(obValue, "Overbought");
PlotBaseLine2(50, "Midline");
PlotBaseLine3(osValue, "Oversold");
PlotBaseLine4(25, "25",Gray);
PlotBaseLine5(30, "30",Gray);
PlotBaseLine6(35, "35",Gray);
PlotBaseLine7(40, "40",Gray);
PlotBaseLine8(45, "45",Gray);
PlotBaseLine9(55, "55",Gray);
PlotBaseLine10(60, "60",Gray);
PlotBaseLine11(65, "65",Gray);
PlotBaseLine12(70, "70",Gray);
PlotBaseLine13(75, "75",Gray);
var : tx1(0),tx2(0);
var : tl1(0),tl2(0),box1(0);
var : tl3(0),tl4(0),box2(0);
if CrossUp(signal,50) Then
{
tx1 = Text_New(sDate,sTime,L,"●");
Text_SetColor(tx1,rgb(255, 0, 127));
Text_SetStyle(tx1,2,0);
Text_SetSize(tx1,30);
tx2 = Text_New_Self(sDate,sTime,50,"●");
Text_SetColor(tx2,rgb(255, 0, 127));
Text_SetStyle(tx2,2,0);
Text_SetSize(tx2,16);
TL_Delete(tl1);
TL_Delete(tl2);
var1 = l;
var2 = c;
tl1 = TL_New(sDate,sTime,var1,NextBarSdate,NextBarStime,var1);
tl2 = TL_New(sDate,sTime,var2,NextBarSdate,NextBarStime,var2);
TL_SetColor(tl1,LightGray);
TL_SetColor(tl2,LightGray);
Box_Delete(box1);
box1 = Box_new(sDate,sTime,var1,NextBarSdate,NextBarStime,var2);
Box_SetColor(box1,Red);
Box_SetFill(box1,true);
}
Else
{
TL_SetEnd(tl1,NextBarSdate,NextBarStime,var1);
TL_SetEnd(tl2,NextBarSdate,NextBarStime,var2);
box_SetEnd(box1,NextBarSdate,NextBarStime,var2);
}
if CrossDown(signal,50) Then
{
tx1 = Text_New(sDate,sTime,H,"●");
Text_SetColor(tx1,rgb(0, 145, 255));
Text_SetStyle(tx1,2,1);
Text_SetSize(tx1,30);
tx2 = Text_New_Self(sDate,sTime,50,"●");
Text_SetColor(tx2,rgb(0, 145, 255));
Text_SetStyle(tx2,2,1);
Text_SetSize(tx2,16);
TL_Delete(tl3);
TL_Delete(tl4);
var3 = h;
var4 = c;
tl3 = TL_New(sDate,sTime,var3,NextBarSdate,NextBarStime,var3);
tl4 = TL_New(sDate,sTime,var4,NextBarSdate,NextBarStime,var4);
TL_SetColor(tl3,LightGray);
TL_SetColor(tl4,LightGray);
Box_Delete(box2);
box2 = Box_new(sDate,sTime,var3,NextBarSdate,NextBarStime,var4);
Box_SetColor(box2,rgb(0, 255, 255));
Box_SetFill(box2,true);
}
Else
{
TL_SetEnd(tl3,NextBarSdate,NextBarStime,var3);
TL_SetEnd(tl4,NextBarSdate,NextBarStime,var4);
box_SetEnd(box2,NextBarSdate,NextBarStime,var4);
}
if CrossUp(signal,75) Then
{
tx1 = Text_New(sDate,sTime,L,"◈");
Text_SetColor(tx1,Red);
Text_SetStyle(tx1,2,0);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Red);
Text_SetStyle(tx2,2,0);
Text_SetSize(tx2,20);
}
if CrossDown(signal,25) Then
{
tx1 = Text_New(sDate,sTime,H,"◈");
Text_SetColor(tx1,rgb(34, 0, 204));
Text_SetStyle(tx1,2,1);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Blue);
Text_SetStyle(tx2,2,1);
Text_SetSize(tx2,20);
}
if CrossUp(signal,70) Then
{
tx1 = Text_New(sDate,sTime,L,"◈");
Text_SetColor(tx1,Red);
Text_SetStyle(tx1,2,0);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Red);
Text_SetStyle(tx2,2,0);
Text_SetSize(tx2,20);
}
if CrossDown(signal,30) Then
{
tx1 = Text_New(sDate,sTime,H,"◈");
Text_SetColor(tx1,rgb(34, 0, 204));
Text_SetStyle(tx1,2,1);
Text_SetSize(tx1,25);
tx2 = Text_New_Self(sDate,sTime,50,"◈");
Text_SetColor(tx2,Blue);
Text_SetStyle(tx2,2,1);
Text_SetSize(tx2,20);
}
var : slv(0),sld(0),slt(0),slv1(0),sld1(0),slt1(0);
var : plv(0),pld(0),plt(0),plv1(0),pld1(0),plt1(0);
var : dtl1(0),dtl2(0);
if CrossDown(signal,20) Then
{
slv = signal;
sld = sDate;
slt = sTime;
slv1 = slv[1];
sld1 = sld[1];
slt1 = slt[1];
plv = l;
pld = sDate;
plt = sTime;
plv1 = plv[1];
pld1 = pld[1];
plt1 = plt[1];
}
0선 기준으로 통과시 화살표 표시 ↑ ↓ 부탁드립니다.
input : short(10),long(100);
var : macdv(0),tx(0);
macdv = macd(short,long);
Plot1(macdv);
PlotBaseLine1(0);
if CrossUp(macdv,0) Then
{
tx = Text_New(sDate,sTime,macdv,"▲");
Text_SetColor(tx,Red);
Text_SetSize(tx,20);
}
2025-06-24
267
글번호 192049
지표
답변완료
검토부탁드립니다.
1분봉에서 종가상승통계를 보는데
마지막 최고값과 최저값이 나오지 않고 0 으로 표시됩니다.
최고값과 최저값을 나올수 있도록 검토부탁드립니다.
감사합니다.
var : 종가상승통계(0); 종가상승통계= CountIF(c>c[1], 20); plot1(종가상승통계, "종가상승통계", red);
var : 종가상승통계2(0); 종가상승통계2= CountIF(c>c[2], 30); plot2(종가상승통계2, "종가상승통계2", red);
var : 종가상승통계3(0); 종가상승통계3= CountIF(c>c[3], 40); plot3(종가상승통계3, "종가상승통계3", red);
var : 종가상승통계4(0); 종가상승통계4= CountIF(c>c[4], 60); plot4(종가상승통계4, "종가상승통계4", red);
var : 종가상승통계5(0); 종가상승통계5= CountIF(c>c[5], 80); plot5(종가상승통계5, "종가상승통계5", red);
var : 종가상승통계6(0); 종가상승통계6= CountIF(c>c[6], 120); plot6(종가상승통계6, "종가상승통계6", red);
var : 종가상승통계7(0); 종가상승통계7= CountIF(c>c[7], 160); plot7(종가상승통계7, "종가상승통계7", red);
var : 종가상승통계8(0); 종가상승통계8= CountIF(c>c[8], 200); plot8(종가상승통계8, "종가상승통계8", red);
var : 종가상승통계9(0); 종가상승통계9= CountIF(c>c[9], 240); plot9(종가상승통계9, "종가상승통계9", red);
var : 종가상승통계10(0); 종가상승통계10= CountIF(c>c[10], 300); plot10(종가상승통계10, "종가상승통계10", red);
var : 최고값(0);max(종가상승통계,종가상승통계2,종가상승통계3,종가상승통계4,종가상승통계5,종가상승통계6,종가상승통계7,종가상승통계8,종가상승통계9,종가상승통계10); plot11(최고값, "최고값", yellow);
var : 최저값(0);min(종가상승통계,종가상승통계2,종가상승통계3,종가상승통계4,종가상승통계5,종가상승통계6,종가상승통계7,종가상승통계8,종가상승통계9,종가상승통계10); plot12(최저값, "최저값", black);
2025-06-24
202
글번호 192048
지표