Search
Duplicate
📝

Alpha Trend 지표

#공통 지표
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
복사