예스스탁
예스스탁 답변
2024-09-30 13:47:24
안녕하세요
예스스탁입니다.
단순이평으로 ATR을 계산해도 13번째 봉부터 출력되는 것은 아닙니다.
truerage계산에 필요한 봉수가 있고 supertrend에 요구되는 봉이 있어
AtrPeriod을 13으로 지정하셔도 15번째봉부터 출력되게 됩니다.
input : AtrPeriod(13),factor(3);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0);
var : Color(0);
if CurrentBar > 1 Then
{
src = (H+L)/2;
alpha = 1 / AtrPeriod ;
source = max(high - low, abs(high - close[1]), abs(low - close[1]));
//ATrV = alpha * source + (1 - alpha) * ATrV[1]; //지수가중이평방식
ATrV = ATR(AtrPeriod); //단순이평방식
upperBand = src + factor * AtrV;
lowerBand = src - factor * AtrV;
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];
if lowerBand > prevLowerBand or close[1] < prevLowerBand Then
lowerBand = lowerBand;
Else
lowerBand = prevLowerBand;
if upperBand < prevUpperBand or close[1] > prevUpperBand Then
upperBand = upperBand;
Else
upperBand = prevUpperBand;
if C > UpperBand Then
{
direction = 1;
Color = Red;
}
if C < LowerBand Then
{
direction = -1;
Color = Blue;
}
if direction == 1 Then
supertrend = lowerband;
Else
supertrend = upperband;
Plot1(supertrend, "SuperTrend", Color, DEF, 1);
}
즐거운 하루되세요
> 투자 님이 쓴 글입니다.
> 제목 : SuperTrend 시작위치 질문입니다.
>
주식 종목에 아래 SuperTrend 수식을 적용해보면,
시작 위치가 4번째 봉부터 표시 됩니다.
AtrPeriod로 지정된 위치부터 표시되도록 수정 부탁 드립니다.
input : AtrPeriod(13),factor(3);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0);
var : Color(0);
if CurrentBar > 1 Then
{
src = (H+L)/2;
alpha = 1 / AtrPeriod ;
source = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV = alpha * source + (1 - alpha) * ATrV[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand = src + factor * AtrV;
lowerBand = src - factor * AtrV;
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];
if lowerBand > prevLowerBand or close[1] < prevLowerBand Then
lowerBand = lowerBand;
Else
lowerBand = prevLowerBand;
if upperBand < prevUpperBand or close[1] > prevUpperBand Then
upperBand = upperBand;
Else
upperBand = prevUpperBand;
if C > UpperBand Then
{
direction = 1;
Color = Red;
}
if C < LowerBand Then
{
direction = -1;
Color = Blue;
}
if direction == 1 Then
supertrend = lowerband;
Else
supertrend = upperband;
Plot1(supertrend, "SuperTrend", Color, DEF, 1);
}