커뮤니티
문의드립니다
2014-11-29 12:45:50
147
글번호 80913
분봉에 일봉과 주봉 볼린저밴드를,
분봉에 일봉과 주봉 PRICE CHANNEL(중심선(이평선)있는)을 넣는 수식부탁드립니다.
노고에 감사드립니다.
답변 1
예스스탁 예스스탁 답변
2014-12-01 13:22:41
안녕하세요
예스스탁입니다.
1. 일봉
input : dayPeriod(20),dayDv(2);
var : daysum(0),daycnt(0),dayma(0),daySumSqrt(0),dayStdv(0);
var : dayBBup(0),dayBBdn(0),dayCounter(0);
#일봉 이동평균 계산
daysum = 0;
for daycnt = 0 to dayPeriod-1{
daysum = daysum + DayClose(daycnt);
}
dayma = daysum/dayPeriod;
#표준편차 계산
If DayClose(dayPeriod) != 0 Then {
daySumSqrt = 0;
For dayCounter = 0 To dayPeriod - 1 {
daySumSqrt = daySumSqrt + (DayClose(dayCounter) - dayma)^2;
}
dayStdv = SquareRoot(daySumSqrt / dayPeriod);
}
Else
dayStdv = 0;
# 일봉 볼린져밴드 계산
dayBBup = dayma + (dayDv * dayStdv);
dayBBdn = dayma - (dayDv * dayStdv);
plot1(dayBBup ,"상단");
plot2(dayma,"중단");
plot3(dayBBdn,"하단");
2. 주봉(차트에 요구되는 주봉기간이상의 데이터가 있지 않으면 출력되지 않습니다)
input : weekPeriod(20),weekDv(2);
var : weekcnt(0),weekcount(0),weeksum(0),weekmav(0),weekBBup(0),weekBBdn(0),weekSumSqrt(0),weekCounter(0),weekStdv(0);
var : WeeKH(0),WeekL(0);
Array : weekMid[120](0);
if dayofweek(date) < dayofweek(date[1]) Then{
weekH = H;
weekL = L;
for weekcnt = 1 to weekPeriod+1{
weekMid[weekcnt] = weekMid[weekcnt-1][1];
}
}
if H > weekh Then
weekh = H;
if L < weekL Then
weekl = L;
weekMid[0] = (C+WeekH+WeeKL)/3;
If weekMid[weekPeriod] != 0 Then {
weeksum = 0;
for weekcount = 0 to weekPeriod-1{
weeksum = weeksum+weekMid[weekcount];
}
weekmav = weeksum/weekPeriod;
weekSumSqrt = 0;
For weekCounter = 0 To weekPeriod - 1 {
weekSumSqrt = weekSumSqrt + (weekMid[weekCounter] - weekmav) * (weekMid[weekCounter] - weekmav);
}
weekStdv = SquareRoot(weekSumSqrt / weekPeriod);
weekBBup = weekmav + (weekDv * weekStdv);
weekBBdn = weekmav - (weekDv * weekStdv);
plot1(weekBBup);
plot2(weekmav );
plot3(weekBBdn);
}
즐거운 하루되세요
> WT_WR****** 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 분봉에 일봉과 주봉 볼린저밴드를,
분봉에 일봉과 주봉 PRICE CHANNEL(중심선(이평선)있는)을 넣는 수식부탁드립니다.
노고에 감사드립니다.