Super Trend 라는 지표 알게 되어 예스 스탁으로 구현해 보려고 하는데
제가 만들어 보니 그냥 직선으로만 나오네요. ㅠㅠ
제대로 나오도록 수정 부탁드립니다.
Inputs : ATR_P(10), Mul(3);
Variables : UpperBand(0), LowerBand(0), SuperTrend(0), Direction(1);
UpperBand = Close + (Mul*ATR(ATR_P));
LowerBand = Close - (Mul*ATR(ATR_P));
If Direction = 1 Then
{
If Close < LowerBand Then
{
Direction = -1;
SuperTrend = UpperBand;
}
Else SuperTrend = Max(LowerBand, SuperTrend);
}
Else
{
If Close > UpperBand Then
{
Direction = 1;
SuperTrend = LowerBand;
}
Else SuperTrend = Min(UpperBand, SuperTrend);
}
If Direction = 1 Then Plot1(SuperTrend, "SuperTrend", Red);
Else Plot1(SuperTrend, "SuperTrend", Blue);
답변 1
예스스탁
예스스탁 답변
2025-01-21 15:17:03
안녕하세요
예스스탁입니다.
input : period(10),multiplier(3);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), direction(0),alpha(0),source(0),SuperTrend(C);
if CurrentBar > 1 Then
{
src = (H+L)/2;
alpha = 1 / period ;
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 + multiplier * AtrV;
lowerBand = src - multiplier * 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;
if C < LowerBand Then
direction = -1;
if direction == 1 Then
SuperTrend = lowerband;
Else
SuperTrend = upperband;
Plot1(SuperTrend,"SuperTrend",IFF(direction==1,Red,Blue));
}
즐거운 하루되세요
> 다니엘87 님이 쓴 글입니다.
> 제목 : Super Trend 구현
> Super Trend 라는 지표 알게 되어 예스 스탁으로 구현해 보려고 하는데
제가 만들어 보니 그냥 직선으로만 나오네요. ㅠㅠ
제대로 나오도록 수정 부탁드립니다.
Inputs : ATR_P(10), Mul(3);
Variables : UpperBand(0), LowerBand(0), SuperTrend(0), Direction(1);
UpperBand = Close + (Mul*ATR(ATR_P));
LowerBand = Close - (Mul*ATR(ATR_P));
If Direction = 1 Then
{
If Close < LowerBand Then
{
Direction = -1;
SuperTrend = UpperBand;
}
Else SuperTrend = Max(LowerBand, SuperTrend);
}
Else
{
If Close > UpperBand Then
{
Direction = 1;
SuperTrend = LowerBand;
}
Else SuperTrend = Min(UpperBand, SuperTrend);
}
If Direction = 1 Then Plot1(SuperTrend, "SuperTrend", Red);
Else Plot1(SuperTrend, "SuperTrend", Blue);