예스스탁
예스스탁 답변
2024-01-23 12:32:32
안녕하세요
예스스탁입니다.
input : length(20);
input : mult1(0.5);
var : src(0),basis(0),upper1(0),lower1(0);
var : Buycond(False),Sellcond(False),TX1(0);
src = close;
basis = ma(src, length);
upper1 = basis + mult1 * std(src, length);
lower1 = basis - mult1 * std(src, length);
plot1(basis, "Basis");
plot2(upper1, "Upper1");
plot3(lower1, "Lower1");
// INPUTS //
input : st_mult(3),st_period (7);
var : up_lev(0),dn_lev(0),up_trend(0),down_trend(0),trend(0),st_line(0);
up_lev = upper1 - st_mult * atr(st_period);
dn_lev = lower1 + st_mult * atr(st_period);
up_trend = 0.0;
up_trend = iff(close > up_trend , max(up_lev, up_trend) , up_lev);
down_trend = 0.0;
down_trend = iff(close < down_trend , min(dn_lev, down_trend) , dn_lev);
// Calculate trend var
trend = 0;
trend = iff(close > down_trend , 1 , iff(close < up_trend , -1 , IFf(IsNaN(trend)==true, 1,trend)));
// Calculate SuperTrend Line
st_line = iff(trend == 1 , up_trend , down_trend);
// Plotting
//plot(st_line[1], color=trend == 1 ? color.green : color.red, style=plot.style_cross, linewidth=2, title='SuperTrend')
Buycond = CrossUp(close, st_line) ;
Sellcond = CrossDown(close, st_line);
//plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny)
//plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny)
//plotshape(buy, title='buy', text='Buy', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon
if Sellcond Then
{
tx1 = text_new(sDate,sTime,H,"SELL");
Text_SetColor(tx1,Red);
}
//
input : multiplier(2),len5(150);
var :src5(0),cnt(0),val(0),per(0),sumX(0),sumY(0),sumXsqr(0),SumXY(0);
var : s(0),a(0),i(0);
var : offset(0),vwap1(0),sdev(0),dev(0),top(0),bott(0);
var : z1(0),x1(0),low1(False),high1(False),tx2(0);
src5 = close;
offset = 0;
sumX = 0.0;
sumY = 0.0;
sumXSqr = 0.0;
sumXY = 0.0;
for cnt = 1 to len5
{
val = src5[len5 - cnt];
per = cnt + 1.0;
sumX = sumX+per;
sumY = sumY+val;
sumXSqr = sumXSqr+per * per;
sumXY = sumXY+val * per;
}
s = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX);
a = sumY / len5;
i = a - s * sumX / len5 + s;
vwap1 = i + s * (len5 - offset);
sdev = std(close, len5);
dev = multiplier * sdev;
top = vwap1 + dev;
bott = vwap1 - dev;
//
z1 = vwap1 + dev;
x1 = vwap1 - dev;
low1 = CrossUp(close, x1);
high1 = CrossDown(close, z1);
if low1 Then
{
tx2 = text_new(sDate,sTime,L,"BUY");
Text_SetColor(tx2,Green);
}
#plotshape(low1, title='b', text='BUY', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon
//plotshape(high1, title='high', text='HIGH', color=color.new(color.green, 0), style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.new(color.white, 0)) //plot for sell icon
즐거운 하루되세요
> 이큐 님이 쓴 글입니다.
> 제목 : 수식 도움 요청드립니다
> 수고에 늘 감사드립니다.
아래 수식을 예스랭귀지로 변환하고자 도움을 요청 드립니다.
매번 수고에 거듭 감사드립니다.
//@version=5
indicator(title='Super trend B', overlay=true)
length = input.int(20, minval=1)
src = close
mult1 = input.float(0.5, minval=0.001, maxval=50, title=" multiflier")
basis = ta.sma(src, length)
upper1 = basis + mult1 * ta.stdev(src, length)
lower1 = basis - mult1 * ta.stdev(src, length)
plot(basis, "Basis", color=#FF6D00)
plot(upper1, "Upper 1", color=#2962FF)
plot(lower1, "Lower 1", color=#2962FF)
// INPUTS //
st_mult = input.float(3, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01)
st_period = input.int(7, title='SuperTrend Period', minval=1)
// CALCULATIONS //
up_lev = upper1 - st_mult * ta.atr(st_period)
dn_lev = lower1 + st_mult * ta.atr(st_period)
up_trend = 0.0
up_trend := close > up_trend ? math.max(up_lev, up_trend) : up_lev
down_trend = 0.0
down_trend := close < down_trend ? math.min(dn_lev, down_trend) : dn_lev
// Calculate trend var
trend = 0
trend := close > down_trend ? 1 : close < up_trend ? -1 : nz(trend, 1)
// Calculate SuperTrend Line
st_line = trend == 1 ? up_trend : down_trend
// Plotting
//plot(st_line[1], color=trend == 1 ? color.green : color.red, style=plot.style_cross, linewidth=2, title='SuperTrend')
buy = ta.crossover(close, st_line)
sell = ta.crossunder(close, st_line)
//plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny)
//plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny)
//plotshape(buy, title='buy', text='Buy', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon
plotshape(sell, title='sell', text='Sell', color=color.new(color.red, 0), style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.new(color.white, 0)) //plot for sell icon
//
multiplier = input.float(title='DEV', defval=2, minval=1)
src5 = close
len5 = input.int(title='Linear length', defval=150, minval=1)
offset = 0
calcSlope(src5, len5) =>
sumX = 0.0
sumY = 0.0
sumXSqr = 0.0
sumXY = 0.0
for i = 1 to len5 by 1
val = src5[len5 - i]
per = i + 1.0
sumX += per
sumY += val
sumXSqr += per * per
sumXY += val * per
sumXY
slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX)
average = sumY / len5
intercept = average - slope * sumX / len5 + slope
[slope, average, intercept]
var float tmp = na
[s, a, i] = calcSlope(src5, len5)
vwap1 = i + s * (len5 - offset)
sdev = ta.stdev(close, len5)
dev = multiplier * sdev
top = vwap1 + dev
bott = vwap1 - dev
//
z1 = vwap1 + dev
x1 = vwap1 - dev
low1 = ta.crossover(close, x1)
high1 = ta.crossunder(close, z1)
plotshape(low1, title='b', text='BUY', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon
//plotshape(high1, title='high', text='HIGH', color=color.new(color.green, 0), style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.new(color.white, 0)) //plot for sell icon
/////// Alerts /////
//alertcondition(buy, title='buy')
alertcondition(sell, title='sell')
alertcondition(low1, title='buy')
//alertcondition(high1, title='buy tp')