input : Period1(10), Period2(5), Period3(5);
var : cnt(0), highVal(0), lowVal(0), FK(0), SK(0), SD(0);
var : Ep1(0), Ep2(0), PreSK(0), PreSD(0);
//Period1 기간 일간 최고가 및 최저가
highVal = 0;
lowVal = 0;
for cnt = 0 to Period1-1
{
//0일~9일(Period-1)전 일간고가 중 최고가 계산
if highVal == 0 or (highVal > 0 and dayHigh(cnt) > highVal) then
highVal = dayhigh(cnt);
//0일~9일(Period-1)전 일간저가 중 최저가 계산
if lowVal == 0 or (lowVal > 0 and dayLow(cnt) < lowVal) then
lowVal = dayLow(cnt);
}
//FastK = (종가-최저가)/(최고가-최저가)*100
fK = (C-lowVal)/(highVal-lowVal)*100;
#Period2 지수이동평균 평활상수
Ep1 = 2/(Period2+1);
#Period2 지수이동평균 평활상수
Ep2 = 2/(Period3+1);
if bdate != bdate[1] then
{
#Slow StochasticsK의 전일값
PreSK = SK[1];
#Slow StochasticsD의 전일값
PreSD = SD[1];
}
//Slow StochasticsK
//현재봉 FastK에는 EP1 가중치를 전일 SlowK값에는 (1-EP1)가중치를 주어 합산
SK = FK * EP1 + PreSK * (1-EP1);
//Slow StochasticsD
//현재봉 SlowK에는 EP1 가중치를 전일값 SlowD에는 (1-EP1)가중치를 주어 합산
SD = SK * EP2 + PreSD * (1-EP2);
plot1(SK,"일봉 SlowK");
plot2(SD,"일봉 SlowD");
PlotBaseLine1(20);
PlotBaseLine2(80);
JavaScript
복사
[스토캐스틱 공식]
FastK = (현재종가-n일기간 최저가) / (n일기간 최고가 - n일기간 최저가)*100
%K = 기본적K의 n지수이동평균
%D = Slow%K의 n지수이동평균