답변완료
부탁드립니다
수고하십니다
예스로 부탁드립니다
//@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)
///////////////////
답변완료
도움을 요청합니다.
안녕하세요
아래 수식을 수정하고자 합니다.
즉 2일선(전일 종가와 당일시가/2)과 당일 시가라인까지 채우기를 하고자합니다.
도와주세요
미리 감사드리면서 좋은 주말 보내세요
=======================================================
input : p(2),pt1(1.25),pt2(1.5);
input : 굵기1(5),R1(255),G1(0),B1(0);
input : 굵기2(5),R2(200),G2(100),B2(100);
input : 굵기3(5),R3(100),G3(100),B3(200);
input : 굵기4(5),R4(0),G4(0),B4(255);
var : cnt(0),sum(0),mav(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0);
var : box1(0),box2(0),box3(0),box4(0);
sum = DayOpen(0);
if P >= 2 Then
{
For cnt = 1 to P-1
{
sum = sum + DayClose(cnt);
}
}
mav = sum/P;
if Index == 0 or (sTime >= 152000 and sTime[1] < 152000) Then
{
var1 = sDate;
Var2 = stime;
}
if Bdate != Bdate[1] Then
{
if var1 > 0 and Var2 > 0 Then
{
#mav+pt2 ~ mav+pt1
box1 = box_new(var1,Var2,mav+pt2,sDate,sTime,mav+pt1);
box4 = box_new(var1,Var2,mav-pt2,sDate,sTime,mav-pt1);
box_SetColor(box1,RGB(R1,G1,B1));
box_SetColor(box4,RGB(R4,G4,B4));
box_SetSize(box1, 굵기1);
box_SetSize(box4, 굵기4);
Box_SetFill(box1,true,15);#채우기 투명도 15
Box_SetFill(box4,true,15);#채우기 투명도 15
}
}
Else
{
if sTime < 150000 Then
{
box_SetBegin(box1,var1,Var2,mav+pt2);
box_SetEnd(box1,sDate,sTime,mav+pt1);
box_SetBegin(box4,var1,Var2,mav-pt1);
box_SetEnd(box4,sDate,sTime,mav-pt2);
}
}