예스스탁
예스스탁 답변
2025-09-29 09:00:35.0
안녕하세요
예스스탁입니다.
input : lb(10);
input : maType(1);#1:SMA, 2:EMA, 3:HMA", 4:McG, 5:WMA", 6:Tenkan, 7:DEMA, 8:TEMA", 9:Smoothed, 10:SuperSmoothed
var : maH(0),maL(0),maM(0);
var : hema(0),Lema(0),Mema(0);
var : hsma(0),Lsma(0),Msma(0);
var : a1(0),b1(0),c1(0),c2(0),c3(0);
if matype == 1 Then
{
maH = ma(high,Lb);
maL = ma(low,Lb);
maM = ma(close,Lb);
}
if matype == 2 Then
{
maH = ema(high,Lb);
maL = ema(low,Lb);
maM = ema(close,Lb);
}
if matype == 3 Then
{
maH = wma(2 * wma(high, round(lb / 2,0)) - wma(high, lb), round(sqrt(lb),0));
maL = wma(2 * wma(low, round(lb / 2,0)) - wma(low, lb), round(sqrt(lb),0));
maM = wma(2 * wma(close, round(lb / 2,0)) - wma(close, lb), round(sqrt(lb),0));
}
if matype == 4 Then
{
hema = ema(high, lb);
maH = iff(IsNan(maH[1])==true, hema , maH[1] + (high - maH[1]) / (lb * pow(high / maH[1], 4)));
lema = ema(low, lb);
maL = iff(IsNan(maL[1])==true, lema , maL[1] + (low - maL[1]) / (lb * pow(Low / maL[1], 4)));
Mema = ema(close, lb);
maM = iff(IsNan(maM[1])==true, Mema , maM[1] + (close - maM[1]) / (lb * pow(Low / maM[1], 4)));
}
if matype == 5 Then
{
maH = wma(high,Lb);
maL = wma(low,Lb);
maM = wma(close,Lb);
}
if matype == 6 Then
{
maH = 0.5 * (highest(high, lb) + lowest(high, lb));
maL = 0.5 * (highest(low, lb) + lowest(low, lb));
maM = 0.5 * (highest(close, lb) + lowest(close, lb));
}
if matype == 7 Then
{
maH = 2 * ema(high, lb) - ema(ema(high, lb), lb);
maL = 2 * ema(low, lb) - ema(ema(low, lb), lb);
maM = 2 * ema(close, lb) - ema(ema(close, lb), lb);
}
if matype == 8 Then
{
maH = 3 * (ema(high, lb) - ema(ema(high, lb), lb)) + ema(ema(ema(high, lb), lb), lb);
maL = 3 * (ema(low, lb) - ema(ema(low, lb), lb)) + ema(ema(ema(low, lb), lb), lb);
maM = 3 * (ema(close, lb) - ema(ema(close, lb), lb)) + ema(ema(ema(close, lb), lb), lb);
}
if matype == 9 Then
{
Hsma = ma(high, lb);
maH = iff(isnan(maH[1])==true,Hsma, (maH[1] * (lb - 1) + high) / lb);
Lsma = ma(low, lb);
maL = iff(isnan(maL[1])==true,Lsma, (maL[1] * (lb - 1) + low) / lb);
Msma = ma(close, lb);
maM = iff(isnan(maM[1])==true,Msma, (maM[1] * (lb - 1) + close) / lb);
}
if matype == 10 Then
{
a1 = exp(-1.414 * 3.14159 / lb);
b1 = 2 * a1 * cos(1.414 * 3.14159 / lb);
c2 = b1;
c3 = -a1 * a1;
c1 = 1 - c2 - c3;
maH = c1 * (high + iff(IsNan(high[1])== true,0,high[1])) / 2 + c2 * iff(IsNan(maH[1])== true,0,maH[1]) + c3 * iff(IsNan(maH[2])== true,0,maH[2]);
maL = c1 * (low + iff(IsNan(low[1])== true,0,low[1])) / 2 + c2 * iff(IsNan(maL[1])== true,0,maL[1]) + c3 * iff(IsNan(maL[2])== true,0,maL[2]);
maM = c1 * (close + iff(IsNan(close[1])== true,0,close[1])) / 2 + c2 * iff(IsNan(maM[1])== true,0,maM[1]) + c3 * iff(IsNan(maM[2])== true,0,maM[2]);
}
var : bbb(nan),inChannel(False),belowChannel(False);
var : up(0),dn(0);
inChannel = close < mah and close > mal;
belowChannel = close < mah and close < mal;
bbb = iff(inChannel , bbb[1] , iff(belowChannel , -1 , 1));
up = iff(bbb == 1 , mal , mah);
dn = iff(bbb == 1 , mah , mal);
plot1(maM, "Baseline MA", Pink);
plot2(up, "High MA", lime);
plot3(dn, "Low MA", orange);
즐거운 하루되세요
> 파생돌이 님이 쓴 글입니다.
> 제목 : 부탁드립니다
> 수고하십니다
예스로 부탁드립니다
//@version=4
study("Generalized SSL by Vts", shorttitle="GSSL", overlay=true)
// Generalized SSL:
// This is the very first time the SSL indicator, whose acronym I ignore, is on Tradingview.
// It is based on moving averages of the highs and lows.
// Similar channel indicators can be found, whereas
// this one implements the persistency inside the channel, which is rather tricky.
// The green line is the base line which decides entries and exits, possibly with trailing stops.
// With respect to the original version, here one can play with different moving averages.
// The default settings are (10,SMA)
//
// Vitelot/Yanez/Vts March 2019
//
// April 2019: added colored cloud (red=bearish, green=bullish)
//
// September 2019: increased number of MA available; converted to Pine V4
lb = input(10, title="Lb", minval=1)
maType = input(type=input.string, defval="SMA", title="Baseline Type", options=["SMA", "EMA", "HMA", "McG", "WMA", "Tenkan", "DEMA", "TEMA", "Smoothed", "SuperSmoothed"])
// MA definitions
hma(sig, n) => // Hull moving average definition
wma(2 * wma(sig, round(n / 2)) - wma(sig, n), round(sqrt(n)))
mcg(sig, length) => // Mc Ginley MA definition
mg = 0.0
ema_1 = ema(sig, length)
mg := na(mg[1]) ? ema_1 : mg[1] + (sig - mg[1]) / (length * pow(sig / mg[1], 4))
mg
tenkan(sig, len) =>
0.5 * (highest(sig, len) + lowest(sig, len))
// SuperSmoother filter
// © 2013 John F. Ehlers
ssma(src, len) =>
a1 = exp(-1.414 * 3.14159 / len)
b1 = 2 * a1 * cos(1.414 * 3.14159 / len)
c2 = b1
c3 = -a1 * a1
c1 = 1 - c2 - c3
v = 0.0
v := c1 * (src + nz(src[1])) / 2 + c2 * nz(v[1]) + c3 * nz(v[2])
v
// smoothed MA
smma(src, len) =>
v = 0.0
sma_1 = sma(src, len)
v := na(v[1]) ? sma_1 : (v[1] * (len - 1) + src) / len
v
// double ema == zero lag ma
dema(src, len) =>
v1 = ema(src, len)
v = 2 * v1 - ema(v1, len)
v
// triple ema
tema(src, len) =>
v2 = ema(src, len)
v = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) // Triple Exponential
v
ma(t, sig, len) =>
sss = float(na)
if t == "SMA"
sss := sma(sig, len)
if t == "EMA"
sss := ema(sig, len)
if t == "HMA"
sss := hma(sig, len)
if t == "McG"
sss := mcg(sig, len) // Mc Ginley
if t == "Tenkan"
sss := tenkan(sig, len)
if t == "WMA"
sss := wma(sig, len)
if t == "TEMA"
sss := tema(sig, len)
if t == "DEMA"
sss := dema(sig, len)
if t == "Smoothed"
sss := smma(sig, len)
if t == "SuperSmoothed"
sss := ssma(sig, len)
sss
base(mah, mal) =>
bbb = int(na)
inChannel = close < mah and close > mal
belowChannel = close < mah and close < mal
bbb := inChannel ? bbb[1] : belowChannel ? -1 : 1
uuu = bbb == 1 ? mal : mah
ddd = bbb == 1 ? mah : mal
[uuu, ddd]
maH = ma(maType, high, lb)
maL = ma(maType, low, lb)
maM = ma(maType, close, lb)
[up, dn] = base(maH, maL)
plot(maM, title="Baseline MA", color=#FFFF00FF, linewidth=2)
pu = plot(up, title="High MA", color=color.lime, linewidth=3)
pd = plot(dn, title="Low MA", color=color.orange, linewidth=3)
fill(pu, pd, color=up > dn ? color.red : color.green, title="Cloud", transp=65)
///////////////////