예스스탁
예스스탁 답변
2022-12-05 09:48:08
안녕하세요
예스스탁입니다.
사용자함수명 : SuperTrend
반환값형 : 숫자형
input : factor(Numeric), AtrPeriod(Numeric);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), ST(C), direction(0),alpha(0),source(0);
if CurrentBar > 1 Then
{
src = (H+L)/2;
// ATR계산(ATR 계산시 지수가중이동평균(rma)이용)
alpha = 1 / AtrPeriod ;
source = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV = alpha * source + (1 - alpha) * ATrV[1];
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;
if C < LowerBand Then
direction = -1;
if direction == 1 Then
ST = lowerband;
Else
ST = upperband;
SuperTrend = ST;
}
즐거운 하루되세요
> fighter 님이 쓴 글입니다.
> 제목 : 슈퍼 트렌드
> 안녕하세요?
게시판 검색을 통해보니 슈퍼트렌드 지표가 있어 사용해보려고 합니다.
그런데 수식 자체가 상당히 길어서 지표하나를 쓰려고 하면 그런데로 사용하겠지만
다중이동평균선처럼 여러개 사용하려면 난감합니다.
그래서 이 지표식을 함수화하여 주시면 감사하겠습니다.
예를들어 ma(c,10) 처럼
supertrend(factor, AtrPeriod) 이렇게만 표현해도
supertrend 지표를 사용할 수 있도록 해 주세요
관련 지표수식 (게시판 내용 78035)
[지표식]
input : factor(3), AtrPeriod(10);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0);
if CurrentBar > 1 Then {
src = (H+L)/2;
// ATR계산(ATR 계산시 지수가중이동평균(rma)이용)
alpha = 1 / AtrPeriod ;
source = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV = alpha * source + (1 - alpha) * ATrV[1];
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;
if C < LowerBand Then
direction = -1;
if direction == 1 Then
supertrend = lowerband;
Else
supertrend = upperband;
}
if C > superTrend Then {
Plot1(superTrend,"UpTrend", Pink, 0, 5);
NoPlot(2);
}
Else {
Plot2(superTrend,"DnTrend", green, 0, 5);
NoPlot(1);
}
이상입니다.
fighter
2022-12-06 02:30:01
안녕하세요?
답변주신 식을 사용자함수작성에서 그대로 붙여 넣었는데
검증(f4)이 진행되지 않고 첨부그림과 같은 오류 메세지가 뜹니다.
방법을 알려주시면 감사하겠습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 슈퍼 트렌드
>
안녕하세요
예스스탁입니다.
사용자함수명 : SuperTrend
반환값형 : 숫자형
input : factor(Numeric), AtrPeriod(Numeric);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), ST(C), direction(0),alpha(0),source(0);
if CurrentBar > 1 Then
{
src = (H+L)/2;
// ATR계산(ATR 계산시 지수가중이동평균(rma)이용)
alpha = 1 / AtrPeriod ;
source = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV = alpha * source + (1 - alpha) * ATrV[1];
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;
if C < LowerBand Then
direction = -1;
if direction == 1 Then
ST = lowerband;
Else
ST = upperband;
SuperTrend = ST;
}
즐거운 하루되세요
> fighter 님이 쓴 글입니다.
> 제목 : 슈퍼 트렌드
> 안녕하세요?
게시판 검색을 통해보니 슈퍼트렌드 지표가 있어 사용해보려고 합니다.
그런데 수식 자체가 상당히 길어서 지표하나를 쓰려고 하면 그런데로 사용하겠지만
다중이동평균선처럼 여러개 사용하려면 난감합니다.
그래서 이 지표식을 함수화하여 주시면 감사하겠습니다.
예를들어 ma(c,10) 처럼
supertrend(factor, AtrPeriod) 이렇게만 표현해도
supertrend 지표를 사용할 수 있도록 해 주세요
관련 지표수식 (게시판 내용 78035)
[지표식]
input : factor(3), AtrPeriod(10);
var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0);
if CurrentBar > 1 Then {
src = (H+L)/2;
// ATR계산(ATR 계산시 지수가중이동평균(rma)이용)
alpha = 1 / AtrPeriod ;
source = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV = alpha * source + (1 - alpha) * ATrV[1];
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;
if C < LowerBand Then
direction = -1;
if direction == 1 Then
supertrend = lowerband;
Else
supertrend = upperband;
}
if C > superTrend Then {
Plot1(superTrend,"UpTrend", Pink, 0, 5);
NoPlot(2);
}
Else {
Plot2(superTrend,"DnTrend", green, 0, 5);
NoPlot(1);
}
이상입니다.