Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0), Sarv(0), var1(0);
// EP != 0: 이미 추세가 확정되어 EP/AF로 SAR을 갱신하고 전환 체크
if EP != 0 Then
{
// 상승 추세 처리
if Direction == 1 then
{
// EP는 최고가, SAR 갱신
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
// 새로운 최고가 발견 시 EP 및 AF 증가
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
// SAR 아래로 하락하면 하락 전환
if Low < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = Low;
}
}
else
{
// 하락 추세 처리 (대칭)
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if High > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
Sarv = SAR_Value;
}
else
{
// EP == 0: EP가 초기화된 상태
if SAR_Value != 0 && EP == 0 then
{
// SAR은 있으나 EP가 없는 경우, AF 초기화 후 SAR 계산
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
Sarv = SAR_Value;
}
else
{
// 초기 상태: Direction이 0이면 이전봉과 비교하여 방향 설정
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
// 방향 존재 시 종가 변화로 추세 전환 체크
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
Sarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
Sarv = SAR_Value;
}
}
}
// 고저값 갱신
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
// SAR 값이 유효하면 다음봉용 파라볼릭을 계산하고 스탑(AtStop) 주문 설정
if Sarv > 0 Then
{
// 다음봉 SAR 예측값
//극단값과 파라볼릭값의 차이의 가속도를 곱해 현재봉 파라볼릭값에 더해서 산정
var1 = Sarv + (AF_Value) * (EP - SAR_Value);
if Direction == -1 Then
Buy("b",AtStop,var1);
if Direction == 1 Then
Sell("s",AtStop,var1);
}
JavaScript
복사
[설명]
기본제공되는 파라볼릭 진입식은 봉완성시에 진입을 합니다.
위 내용은 파라볼릭 추세 변환 즉시 진입하게 작성된 식입니다.
현재 가속값 등을 알아야 하므로 파라볼릭을 풀어서 작성해서 이용해야 합니다.