예스스탁
예스스탁 답변
2023-08-23 11:51:15
안녕하세요
예스스탁입니다.
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
위 부분 처리에 문제가 있었습니다.
1봉전 값이 N/A일때는 0이 저장되게 하셔야 합니다.
input : atrPeriod(10),factor(3);
var : src(0),atrv(0),direction(0),prevSuperTrend(0);
var : upperBand(0),lowerBand(0),prevLowerBand(0),prevUpperBand(0);
var : superTrend(0),linecolor(0);
src = (h+l)/2;
atrv = atr(atrPeriod);
upperBand = src + factor * atrv;
lowerBand = src - factor * atrv;
###
prevLowerBand = Iff(IsNan(lowerBand[1])==False,lowerBand[1],0);
prevUpperBand = Iff(IsNan(upperBand[1])==False,upperBand[1],0);
if !(lowerBand > prevLowerBand or close[1] < prevLowerBand) Then
lowerBand = prevLowerBand;
if !(upperBand < prevUpperBand or close[1] > prevUpperBand) Then
upperBand = prevUpperBand;
prevSuperTrend = superTrend[1];
if isnan(atrv[1]) Then
direction = 1;
else if prevSuperTrend == prevUpperBand Then
direction = iff(close > upperBand , -1 , 1);
else
direction = iff(close < lowerBand , 1 , -1);
superTrend = iff(direction == -1 , lowerBand , upperBand);
linecolor = IFF(direction == -1 , Green, Red);
Plot1(superTrend);
즐거운 하루되세요
> 자동매매구축 님이 쓴 글입니다.
> 제목 : 트레이딩뷰 수식 변환 요청드립니다.
> 슈퍼트렌드 수식 변환 요청드립니다.
과거글 찾아보니 예스스탁에서 만든 슈퍼트렌드가 있던데 트레이딩뷰의 슈퍼트렌드와 타점이 다릅니다. 그래서 함수 공부도 해볼 겸 트레이딩뷰에서 공식 제공하는 수식을 변환하고 있는데, 생각대로 그려지지 않습니다.
예스 랭귀지를 처음 해보는거라 변수 선언 등에서 뭔가 놓친 부분이 있는것 같은데
아래의 트레이딩뷰 코드와 똑같이 잘 변환됬는지, 혹시 예스 랭귀지 문법상 틀린 부분이 있는지 확인 부탁드립니다. (그림이 안그려지는 걸로 봐선 분명 틀린 부분이 있을 건데 잘 모르겠습니다.)
/*트레이딩뷰 소스 발췌
pine_supertrend(factor, atrPeriod) =>
src = hl2
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
int direction = na
float superTrend = na
prevSuperTrend = superTrend[1]
if na(atr[1])
direction := 1
else if prevSuperTrend == prevUpperBand
direction := close > upperBand ? -1 : 1
else
direction := close < lowerBand ? 1 : -1
superTrend := direction == -1 ? lowerBand : upperBand
[superTrend, direction]
[pineSupertrend, pineDirection] = pine_supertrend(3, 10)
*/
// 예스랭귀지 변환
input : factor(3),atrPeriod(10);
var : src(0), sATR(0), upperBand(0), lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : direction(0), superTrend(0), prevSuperTrend(0), linecolor(0);
src = (High + Low) / 2;
sATR = ATR(atrPeriod);
upperBand = src + factor * sATR;
lowerBand = src - factor * sATR;
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];
if !(lowerBand > prevLowerBand or close[1] < prevLowerBand) Then{
lowerBand = prevLowerBand;
}
if !(upperBand < prevUpperBand or close[1] > prevUpperBand) Then{
upperBand = prevUpperBand;
}
prevSuperTrend = superTrend[1];
if IsNAN(sATR[1]) Then
{
direction = 1;
}Else if prevSuperTrend == prevUpperBand Then
{
direction = IFF(close > upperBand, -1, 1);
}
Else
{
direction = IFF(close < lowerBand, 1, -1);
}
superTrend = IFF(direction == -1, lowerBand, upperBand);
linecolor = IFF(direction == -1 , Green, Red);
plot1(superTrend,"SuperTrend",linecolor);