커뮤니티

[예스트레이더] 입문 클래스 도중 생긴 질문

프로필 이미지
차트꺽어브러
2026-08-18 08:57:42
45
글번호 233259
답변완료

안녕하세요.

[예스트레이더] 입문 클래스 5~6강 강의 시청 중,

독고원 대표님과 같은 코딩을 사용하는데 결과값이 다르게 나와서 질문드립니다.

1. 5강에서 supertrend 지표식과 전략식을 다운받아서, 대표님 강의와 동일한 절차로 진행하였는데,

제 시뮬레이션 차트에는 추세 선만 나와있는데 반면, 대표님 강의에서 사용하는 차트는 추세 선과 더불어 선과 봉 사이에 배경색이 칠해져있는 걸 확인 하였습니다.


코딩이 다르게 쓰여서 그런가 몇 번이고 화인을 해보았지만, 동일한 코드인데, 왜 적용값이 다른지 궁금합니다.

제가 사용한 코드

// 예제7: 30분봉, 500바 권장

// SuperTrend 지표식 만들어보기


input : factor(3), AtrPeriod(10);

// factor: ATR에 곱할 배수 (기본값 3)

// AtrPeriod: ATR 계산 기간 (기본값 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

{

// "현재 봉"이 1보다 커야(즉, 2번째 봉 이후) 이전 봉 데이터가 있으므로 본문을 실행


src = (H + L) / 2;

// SuperTrend 계산 시 사용하는 중심값(고가 + 저가의 평균)


// ATR계산(지수가중이동평균(rma) 방식으로 계산)

alpha = 1 / AtrPeriod;

source = max(High - Low, abs(High - Close[1]), abs(Low - Close[1]));

// ATR(또는 True Range) 후보값(고가-전일종가, 저가-전일종가 차이, 고가-저가)의 최대값을 취함


ATrV = alpha * source + (1 - alpha) * ATrV[1];

// 지수 가중 방식으로 새로운 ATrV를 계산



upperBand = src + factor * AtrV;

lowerBand = src - factor * AtrV;

// SuperTrend 상·하단 밴드를 설정 (중심값 ± factor * ATrV)



prevLowerBand = lowerBand[1];

prevUpperBand = upperBand[1];

// 한 봉 전의 밴드(이전 밴드) 값을 기억


// (a) 상승 추세 시에는 트레일 스탑을 절대 내리지 않는다

// (b) 밴드를 가격이 뚫었으면 이미 깨져버린 밴드 대신 새 밴드로 교체해 추세를 다시 잡는다

// if문 1: "현재 lowerBand가 이전 lowerBand보다 큰지 OR 이전 종가가 이전 lowerBand보다 작은지" 확인

if lowerBand > prevLowerBand or close[1] < prevLowerBand Then

{

lowerBand = lowerBand;

// 조건이 참이면 lowerBand를 그대로 사용

}

else

{

lowerBand = prevLowerBand;

// 조건이 거짓이면 이전 lowerBand 값을 이어서 사용

}


// (a) 하락 추세에서는 트레일 스탑(upperBand)을 절대 높이지 않음

// (b) 이전 밴드를 가격이 돌파했을 경우 이미 무효화되었으므로 새 밴드를 쓰자

// if문 2: "현재 upperBand가 이전 upperBand보다 작은지 OR 이전 종가가 이전 upperBand보다 큰지" 확인

if upperBand < prevUpperBand or close[1] > prevUpperBand Then

{

upperBand = upperBand;

// 조건이 참이면 upperBand를 그대로 사용

}

else

{

upperBand = prevUpperBand;

// 조건이 거짓이면 이전 upperBand 값을 이어서 사용

}


// if문 3: "현재 종가(C)가 upperBand보다 큰지" 확인

if C > UpperBand Then

{

direction = 1;

}

// 종가가 upperBand 위에 있으면 상승 방향


// if문 4: "현재 종가(C)가 lowerBand보다 작은지" 확인

if C < LowerBand Then

{

direction = -1;

}

// 종가가 lowerBand 아래에 있으면 하락 방향


// if문 5: "direction이 1(상승)인지 아닌지" 확인

if direction == 1 Then

{

supertrend = lowerBand;

// 상승일 때, supertrend 값을 lowerBand로 설정

}

else

{

supertrend = upperBand;

// 하락일 때, supertrend 값을 upperBand로 설정

}

}



if C > superTrend Then

{

Plot1(superTrend,"UpTrend", GREEN, 0, 1);

NoPlot(2);

}

Else

{

Plot2(superTrend,"DnTrend", RED, 0, 1);

NoPlot(1);

}

if direction == 1 and direction[1] == -1 Then

plot3(superTrend,"BuyStart",green,0,8);


if direction == -1 and direction[1] == 1 Then

plot4(superTrend,"SellStart",RED,0,8);


plot5(C, "종가");



2. 6강에서 전략 실행 차트에, 위의 전략식을 적용하면, buy와 sell 신호만 뜨는데, 제 차트에서는 동일하게 하였는데도, 아무런 신호가 뜨지 않습니다.


분명 (전략 실행) 차트에 (시스템 적용)을 눌러서 적용을 했는데도 아무런 변화가 나타나지 않습니다. 왜 그런건지 궁금합니다.

시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-08-18 13:41:23

안녕하세요 예스스탁입니다. 1 해당 부분은 지표속성창 차트표시텝에서 채우기 기능을 이용해 설정하셔야 합니다. 예스랭귀지 편집기에서 해당식을 여신 후에 f5키를 누르시면 지표속성창이 나타납니다. 첨부된 그림과 같이 설정해 주시면 선과 종가선 사이에 위치에 따라 지정한 색으로 채워지게 됩니다.


2
전략식 차트에 적용해 보았지만 신호가 정상적으로 나오고 있습니다. 해당식이 투자금액을 지정해 수량을 계산해서 진입신호가 발생합니다. 만약 투자금액을 너무 크게 설정하거나 가격이 낮은 종목의 차트에 적용하면 아래 피라미딩탭 주문수량 이상의 수량이면 신호가 발생하지 않습니다.
즐거운 하루되세요