커뮤니티
[예스트레이더] 입문 클래스 도중 생긴 질문
안녕하세요.
[예스트레이더] 입문 클래스 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