input : 가속도(0.02),최대가속도(0.2);
var : maxMin(nan),acceleration(nan),Trend(0);
var : FirstTrendBar(false),Para(nan);
var : haClose(0),haOpen(0),haHigh(0),haLow(0);
#Heiken Ashi 시고저종
if index == 0 then
{
haClose = (O+H+L+C)/4;
haOpen = open;
haHigh = MaxList( high, haOpen, haClose);
haLow = MinList( low, haOpen,haClose);
}
else
{
haClose = (O+H+L+C)/4;
haOpen = (haOpen [1] + haClose [1])/2 ;
haHigh = MaxList(High, haOpen, haClose) ;
haLow = MinList(Low, haOpen, haClose) ;
}
// 매봉 False로 시작하고
// 아래 로직에 의해 추세가 전환되는 첫봉이면 true로 변경
FirstTrendBar = False;
// 2번째봉)에서 초기화
if Index == 1 Then
{
if HaClose > HaClose[1] Then // 상승 추세 시작
{
Trend = 1; //상승추세란 의미로 1
maxMin = Hahigh; // 극단값으로 high로 저장
Para = Halow[1]; // 초기 SAR를 전봉 저가로 설정
}
else // 하락 추세 시작
{
Trend = -1; //하락추세란 의미로 -1
maxMin = Halow; // 극단값으로 low로 저장
Para = Hahigh[1]; // 초기 SAR를 전봉 고가로 설정
}
FirstTrendBar = true; //추세전환
acceleration = 가속도; // 가속도 초기화
}
//파라볼릭 = 직전파라볼릭값 + AF * (극단 - 직전파라볼릭값)
Para = Para + acceleration * (maxMin - Para);
//상승추세
if Trend == 1 Then
{
//저가가 파라볼릭보다 작으면
if Para > Halow then
{
//하락전환
Trend = -1;
//하락전환 첫봉발생
FirstTrendBar = true;
//파라볼릭값은 고가와 극단값 중 큰값
Para = max(Hahigh, maxMin);
//극단값으로 저가로 변경 저장
maxMin = Halow;
//가속도 초기화
acceleration = 가속도;
}
}
else //하락추세
{
//고가가 파라볼릭보다 크면
if Para < Hahigh Then
{
//상승전환
Trend = 1;
//상승전환 첫봉발생
FirstTrendBar = true;
//파라볼릭은 저가와 극단값 중 작은값
Para = min(Halow, maxMin);
//극단값을 고가로 변경 저장
maxMin = Hahigh;
//가속도 초기화
acceleration = 가속도;
}
}
//추세전환 첫봉이 아니면
if FirstTrendBar == False Then
{
//상승추세
if Trend == 1 Then
{
///고가가 극단값보다 크면
if Hahigh > maxMin Then
{
//극단값으로 고가저장
maxMin = Hahigh;
//가속도값을 가속도만큼 증가하는데 최대가속도까지만 증가
acceleration = min(acceleration + 가속도, 최대가속도);
}
}
else //하락추세
{
///저가가 극단값보다 작으면
if Halow < maxMin Then
{
//극단값으로 저가 저장
maxMin = Halow;
//가속도값을 가속도만큼 증가하는데 최대가속도까지만 증가
acceleration = min(acceleration + 가속도, 최대가속도);
}
}
}
//상승추세
if Trend == 1 Then
{
// 상승추세이면 파라볼릭은 최근 1~2봉의 저가보다 작거나 같아야 함
Para = min(Para, Halow[1]);
if Index > 1 Then
Para = min(Para, Halow[2]);
}
else
{
// 하락추세이면 파라볼릭은 최근 1~2봉의 고가보다 크거나 같아야 함
Para = max(Para, Hahigh[1]);
if Index > 1 Then
Para = max(Para, Hahigh[2]);
}
//지표속상창 차트표시탭에서 그래프 종류를 점그래프로 설정
plot1(para,"파리볼릭",IFf(C>Para,Red,Blue));
JavaScript
복사
[설명]
봉가격이 아닌 Heikin-Ashi 가격으로 계산한 파라볼릭입니다.
파라볼릭 지표(Parabolic SAR, Stop And Reverse)는 추세 추종형 보조지표로,
가격이 오르거나 내릴 때 추세의 지속과 반전 지점을 알려주는 데 사용됩니다.
[파라볼릭 계산]
현재 파라볼릭 = 직전파라볼릭 + 가속도X(극단값-직전파라볼릭)