예스스탁
예스스탁 답변
2020-03-25 15:13:26
안녕하세요
예스스탁입니다.
inputs: ATRLength(14), ATRMult(1), Strength(9);
var : STrend(0),ATRv(0), avgv(0), dnv(0), upv(0), trend(1), flag(0), flagh(0), ST(0),hl(0);
var : idx(0),hh(0),ll(0),EP1(0),EP2(0);
var : ema1(0),ema2(0),ema3(0),h1(0),l1(0);
Ep1 = 2/(ATRLength+1);
Ep2 = 2/(Strength+1);
if bdate != bdate[1] Then
{
idx = 0;
trend = 0;
}
idx = idx+1;
if idx < ATRLength Then
{
hh = DayHigh;
ll = daylow;
}
Else
{
hh = Highest(High, ATRLength);
ll = Lowest(Low, ATRLength);
}
if idx < Strength Then
{
h1 = DayHigh;
l1 = daylow;
}
Else
{
h1 = Highest(High, Strength);
l1 = Lowest(Low, Strength);
}
hl = hh-ll;
if idx == 1 Then
{
ema1 = hl;
ema2 = h;
ema3 = l;
}
Else
{
ema1 = hl * EP1 + ema1 * (1-EP1);
ema2 = h * EP2 + ema2 * (1-EP2);
ema3 = l * EP2 + ema3 * (1-EP2);
}
atrv = ema1;
avgv = (ema2+ema3)/2;
upv = avgv + ATRv;
dnv = avgv - ATRv;
if idx >= 2 then
{
if c > upv[1] and c > h1[1] then trend = 1;
else if c < dnv[1] and c < l1[1] then trend = -1;
if trend < 0 and trend[1] > 0 then flag=1; else flag=0;
if trend > 0 and trend[1] < 0 then flagh = 1; else flagh = 0;
if trend > 0 and dnv < dnv[1] then dnv=dnv[1];
if trend < 0 and upv > upv[1] then upv=upv[1];
if flag == 1 then upv = avgv + ATRv;
if flagh == 1 then dnv = avgv - ATRv;
if trend == 1 then ST = dnv; else ST = upv;
STrend = trend;
}
Plot1(st,"Up");
Plot2(st,"Down");
Plot3(st,"SuperTrend",iff(strend == 1,red,blue));
즐거운 하루되세요
> 오이도인 님이 쓴 글입니다.
> 제목 : 수식 수정 요청드립니다
> 수고하십니다.
아래 2번 지표식을 1분봉에서 사용하는 경우,
전일 가격에 영향받지 않고 당일 시가 이후의 가격에 의해서만 그려지게
수식을 수정해 주시면 고맙겠습니다.
수고하세요..
///////////
안녕하세요
예스스탁입니다.
1. 함수명 : SuperTrend
inputs: ATRLength(NumericSimple), ATRMult(NumericSimple), Strength(NumericSimple), STrend(NumericRef);
vars: ATR(0), avg(0), dn(0), up(0), trend(1), flag(0), flagh(0), ST(0),hl(0);
hl = Highest(High, ATRLength) - Lowest(Low, ATRLength);
ATR = ema(hl, ATRLength);
avg = (ema(high, Strength) + ema(low, Strength))/2;
up = avg + ATR;
dn = avg - ATR;
if c > up[1] and c > Highest(High, Strength)[1] then trend = 1;
else if c < dn[1] and c < Lowest(Low, Strength)[1] then trend = -1;
if trend < 0 and trend[1] > 0 then flag=1; else flag=0;
if trend > 0 and trend[1] < 0 then flagh = 1; else flagh = 0;
if trend > 0 and dn < dn[1] then dn=dn[1];
if trend < 0 and up > up[1] then up=up[1];
if flag = 1 then up = avg + ATR;
if flagh = 1 then dn = avg - ATR; if trend = 1 then ST = dn; else ST = up;
SuperTrend = ST;
STrend = trend;
2, 지표
inputs: ATRLength(14), ATRMult(1), Strength(9);
vars: strend(0),st(0);
st = SuperTrend(ATRLength, ATRMult, Strength, strend);
Plot1(st,"Up");
Plot2(st,"Down");
Plot3(st,"SuperTrend",iff(strend == 1,red,blue));