#공통 지표
Alpha Trend는 Magic Trend에서 파생된 지표입니다.
Magic Trend는 CCI와 ATR를 결합해 모멘텀과 변동성을 측정해서 지표를 계산한다면
Alpha Trend는 MFI와 결합하여 모멘텀과 변동성에 거래량을 더해서 지표를 계산합니다.
input : coeff(1),AP(20); // coeff: ATR 배수, AP: ATR·MFI 계산 기간
var : ATRV(0),SRC(0),upt(0),downt(0),AlphaTrend(0); // ATRV: ATR 값, SRC: 가격 소스, upt/downt: 상·하단 레벨, AlphaTrend: 지표 값
var : color1(0),buySignalk(False),sellSignalk(False); // color1: 색상 제어용, buySignalk/sellSignalk: 매수·매도 신호 플래그
var : K1(0),K2(0),O1(0),O2(0),TX(0); // K1/K2: 신호 이후 경과 봉수 카운터, O1/O2: 이전 카운터, TX: 텍스트 핸들
ATRv = ATR(AP); // AP 기간 기준 ATR 계산
src = close; // 종가를 SRC로 사용 (현재 식에서는 참조만 설정)
upT = low - ATRv * coeff; // 하단 기준선: 저가 - ATR * coeff
downT = high + ATRv * coeff; // 상단 기준선: 고가 + ATR * coeff
AlphaTrend = 0.0; // AlphaTrend 초기화
AlphaTrend = IFf(mfi(AP) >= 50 , // MFI가 50 이상이면 (매수 쪽 힘이 우세한 구간)
iff(upT < IFF(IsNan(AlphaTrend[1])==False,AlphaTrend[1],0) , IFF(IsNan(AlphaTrend[1])==False,AlphaTrend[1],0) , upT) ,
// upT와 이전 AlphaTrend[1] 중 더 큰 값 선택 (지지선 유지/상향)
iff(downT > IFF(IsNan(AlphaTrend[1])==False,AlphaTrend[1],0) , IFF(IsNan(AlphaTrend[1])==False,AlphaTrend[1],0) , downT));
// MFI가 50 미만이면 (매도 쪽 힘이 우세한 구간)
// downT와 이전 AlphaTrend[1] 중 더 작은 값 선택 (저항선 유지/하향)
color1 = iff(AlphaTrend > AlphaTrend[2] , Lime , // 현재 AlphaTrend가 2봉 전보다 크면 상승색(Lime)
IFf( AlphaTrend < AlphaTrend[2] , Brown , // 현재 AlphaTrend가 2봉 전보다 작으면 하락색(Brown)
IFF(AlphaTrend[1] > AlphaTrend[3] , Lime , Brown)));
// 변화 없을 때는 1·3봉 전 비교로 색상 결정
plot1(AlphaTrend, "k1",red,Def,3); // 현재 AlphaTrend 값 플롯 (k1)
plot2(AlphaTrend[2],"k2",blue,Def,3); // 2봉 전 AlphaTrend 값 플롯 (k2)
buySignalk = CrossUp(AlphaTrend, AlphaTrend[2]); // AlphaTrend가 2봉 전 값을 상향 돌파 → 매수 신호
sellSignalk = CrossDown(AlphaTrend, AlphaTrend[2]); // AlphaTrend가 2봉 전 값을 하향 돌파 → 매도 신호
if buySignalk == true Then
K1 = 0; // 매수 신호 발생 시 K1 카운터 초기화
Else
K1 = K1+1; // 매수 신호 없으면 K1 1 증가
if sellSignalk == true Then
K2 = 0; // 매도 신호 발생 시 K2 카운터 초기화
Else
K2 = K2+1; // 매도 신호 없으면 K2 1 증가
O1 = K1[1]; // O1: 한 봉 전 K1 값
O2 = K2[1]; // O2: 한 봉 전 K2 값
if buySignalk and O1 > K2 Then // 매수 신호 + 이전 K1 카운트가 현재 K2보다 크면 매수 텍스트 조건 충족
{
tx = text_new(sDate,sTime,AlphaTrend[2]-PriceScale*2,"Buy"); // AlphaTrend[2] 아래쪽에 "Buy" 텍스트 생성
Text_SetStyle(tx,2,0); // 텍스트 스타일 설정
Text_SetSize(tx,30); // 텍스트 크기 설정
Text_SetColor(tx,Lime); // 텍스트 색상: Lime (매수)
}
if sellSignalk and O2 > K1 Then // 매도 신호 + 이전 K2 카운트가 현재 K1보다 크면 매도 텍스트 조건 충족
{
tx = text_new(sDate,sTime,AlphaTrend[2]+PriceScale*2,"Sell"); // AlphaTrend[2] 위쪽에 "Sell" 텍스트 생성
Text_SetStyle(tx,2,1); // 텍스트 스타일 설정
Text_SetSize(tx,30); // 텍스트 크기 설정
Text_SetColor(tx,YELLOW); // 텍스트 색상: Yellow (매도)
}
JavaScript
복사
