#공통 지표
Magic Trend 지표는 CCI와 ATR을 결합해 만들어진 지표입니다.
시장의 추세반전 순간을 식별하고 지지/저항 수준으로 사용될 수 있습니다.
기본적으로 “직전지표값 ± ATR × 계수” 같은 형태로 라인을 이어가고
CCI 방향, 고가/저가 돌파 여부 등을 반영해서
추세전환이 판단되면 라인을 반대쪽으로 옮기고 색깔을 바꿈
가격이 지표값 이상으로 움직인다는 것은 가격이 과거 평균보다 높게 움직이고 있으므로
강세추세를 의미하고 반대로 아래에서 움직이면 하락추세를 의미합니다.
//========================
// Magic Trend Indicator
//========================
// 사용자 입력값
input :
period(20), // CCI 계산 기간
coeff(1), // ATR 배수 (라인을 가격에서 얼마나 떨어뜨릴지 결정)
AP(5); // ATR(평균 진폭) 계산 기간
// 내부 변수 선언
var :
ATRV(0), // ATR 값 저장 변수
upt(0), // 상승 방향 기준선(지지선 후보)
downt(0), // 하락 방향 기준선(저항선 후보)
MagicTrend(0),// 최종 Magic Trend 값
color1(0); // 라인 색상 변수
// 1. ATR 계산 (변동성 측정)
ATRv = ATR(AP); // AP 기간을 사용하여 ATR(평균 진폭)을 계산
// 2. 상승/하락 기준선 계산
upT = low - ATRv * coeff; // 상승 추세 시 사용할 기준선: 저가에서 ATR*배수만큼 아래
downT = high + ATRv * coeff; // 하락 추세 시 사용할 기준선: 고가에서 ATR*배수만큼 위
// 3. MagicTrend 초기화
MagicTrend = 0.0; // 우선 0으로 초기화
// 4. MagicTrend 값 계산 로직
// - CCI가 0 이상이면 상승 모멘텀 → upT 기준 사용
// - CCI가 0 미만이면 하락 모멘텀 → downT 기준 사용
// - 직전 MagicTrend[1] 값과 비교하여, 추세가 유지되면 이전 값 유지,
// 추세 전환 시에만 upT / downT로 갱신
MagicTrend = iff(
cci(period) >= 0,
// ────────────── 상승 구간일 때 ──────────────
// upT가 이전 MagicTrend[1]보다 작으면 (가격이 더 위에 있으면)
// 이전 MagicTrend[1] 값을 유지하여 추세 연장,
// 아니면 새로 계산한 upT로 갱신
IFF(
upT < IFF(IsNan(MagicTrend[1]) == False, MagicTrend[1], 0),
IFF(IsNan(MagicTrend[1]) == False, MagicTrend[1], 0), // 이전 값 존재 시 → 이전 MagicTrend 유지
upT // 아니면 새 기준선 upT로 설정
),
// ────────────── 하락 구간일 때 ──────────────
// downT가 이전 MagicTrend[1]보다 크면 (가격이 더 아래에 있으면)
// 이전 MagicTrend[1] 값을 유지하여 추세 연장,
// 아니면 새로 계산한 downT로 갱신
IFF(
downT > IFF(IsNan(MagicTrend[1]) == False, MagicTrend[1], 0),
IFF(IsNan(MagicTrend[1]) == False, MagicTrend[1], 0), // 이전 값 존재 시 → 이전 MagicTrend 유지
downT // 아니면 새 기준선 downT로 설정
)
);
// 5. 색상 설정
// - CCI >= 0 : 상승 → 빨간색(예: 매수 관점 강조)
// - CCI < 0 : 하락 → 파란색
color1 = iff(cci(period) >= 0 , red, blue);
// 6. 차트 출력
// - MagicTrend 값을 "MT"라는 이름으로 출력
// - color1 색상 사용, 기본 스타일(Def), 두께 3
plot1(MagicTrend, "MT", color1, Def, 3);
JavaScript
복사
