커뮤니티
이것저것 문의드립니다.
2017-11-08 13:13:38
124
글번호 113998
매번 성의있는 답변 감사드립니다. 그런데 경험이 없어서 그런지 매번 알다가도 모르겠네요.
1. 기타
밴드폭 분봉끼리의 타주기봉 참조 주석좀 부탁드립니다. 몇몇 검색해서 정리한 뒤 해석해보려고 했는데 배열도 나오고 너무 어렵더군요. 어떤 로직으로 만들어져 있는 지 잘 모르니 타주기분 30분으로 하고 30분봉 차트를 켰을 때 왜 데이터가 안 나오는 지 잘 모르겠습니다. 그리고 건의사항인데요. 타주기봉 참조같은 자주 묻는 수식 코너같은 것을 만들어 주셨으면 합니다. 시스메틱에 가끔 올라오긴 하던데요. 내용은 그리 많지 않더군요. 중복질문도 많이 없어지지 않을까 생각합니다.
2. 지표
30분봉에서 일봉 200 볼린저밴드
3. 시스템
진입
-밴드차(윗밴드-아랫밴드)가 엔벨로프폭보다 크고 밴드폭보다 n%이상 가격이 올랐을 때 진입
추가진입
-진입한 이후부터 가격이 n% 이상 오를 때마다 추가진입
청산
이평선 종가 하향돌파
필터
-추가진입조건은 날이 바뀔 때마다 한번씩만 적용. 즉 하루에 한번만 진입
4. 시스템
진입
-매수진입 이평선이 최근 20개봉간 엔벨로프 +-n% 차 안에 있다면 볼린저밴드 하단에서 매수
-매도진입 매수진입 반대
청산
1- 볼린저밴드 상단(매수의 경우) 하단(매도의 경우)에서 청산하거나
2- 이평선이 진입에서 정한 %선을 상향(매도청산) 혹은 하향돌파(매수청산)하면 청산
답변 1
예스스탁 예스스탁 답변
2017-11-08 16:59:54
안녕하세요
예스스탁입니다.
1
input : 타주기분(30),P(20),Dv(2);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),SumSqrt(0),Stdv(0);
var : sum(0),BBmd(0),Bbup(0),BBdn(0),BBWidth(0),BBdiff(0);
Array : CC[100](0);
#영업일 변경
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);#영업일 변경시점의 0시 이후의 경과된 분
D1 = sdate;//날짜저장
}
#날짜저장후(차트상 최초 영업일 변경후부터)
if D1 > 0 then{
#영업일 변경시간을 기준으로 현재 경과된 분수를 계산
#영업일 변경시간이 07시이면 s1는 420
#현재 10시이면 600-420 = 180분
#현재 20시이면 1200-420 = 780분
#현재 03시이면 180+1440-420 = 1200분
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
#영업일변경이후 경과된 분수를 30으로 나누어 나머지를 구함
#1분봉에서 아래와 같이 반복적으로 나머지값을 가지게 됨
#[0,1,2,~,28,29],[0,1,2,~,28,29],[0,1,2,~,28,29],....
#그러므로 TF가 전봉보다 작아지는 봉이 새로운 30분봉이 시작되는 봉임
TF = TM%타주기분;
#새로운 30분봉 시작
#각 배열변수의 각 방에 저장된 값을 다음방으로 이동
#기존 [0]번방은 [1]번방으로, 기존[1]번방값은 [2]번방으로....
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{
for cnt = 1 to 99{
CC[cnt] = CC[cnt-1][1];
}
}
#배열변수 [0]번방에는 매봉 종가 저장
CC[0] = C;
#필요한 만큼 타주기 종가값이 확보되고
if CC[P] > 0 then{
#평균계산
sum = 0;
for cnt = 0 to P-1{
sum = sum + CC[cnt];
}
BBmd = sum/P;
#표준편차계산
SumSqrt = 0;
For cnt = 0 To P - 1 {
SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2;
}
Stdv = SquareRoot(SumSqrt / P);
#상단
BBup = BBmd + (Dv * Stdv);
#하단
BBdn = BBmd - (Dv * Stdv);
#밴드폭
BBWidth = ((BBup - BBdn)/ BBmd);
#밴드차
BBdiff = BBup - BBdn;
}
}
2
# 분봉에서 일봉 볼린져밴드
input : Period(200),Dv(2);
var : sum(0),cnt(0),mav(0),SumSqrt(0),Stdv(0);
var : BBup(0),BBdn(0),Counter(0);
If DayClose(Period) > 0 Then {
#일봉 이동평균 계산
sum = 0;
for cnt = 0 to Period-1{
sum = sum + DayClose(cnt);
}
mav = sum/Period;
#표준편차 계산
SumSqrt = 0;
For Counter = 0 To Period - 1 {
SumSqrt = SumSqrt + (DayClose(Counter) - mav)^2;
}
Stdv = SquareRoot(SumSqrt / Period);
# 일봉 볼린져밴드 계산
BBup = mav + (Dv * Stdv);
BBdn = mav - (Dv * Stdv);
plot1(BBup ,"상단");
plot2(mav,"중단");
plot3(BBdn,"하단");
}
3
Input : BBP(20), MultiD(1.8);
Input : EVP(20), Percent(2);
input : n(5);
var : MAv(0),BBup(0),BBdn(0);
var : center(0),UPline(0),DNline(0);
MAv = ma(C,BBP);
BBup = BollBandUp(BBP,MultiD);
BBdn = BollBandDown(BBP,MultiD);
center = ma(C, EVP);
UPline = EnvelopeUp(EVP, Percent);
Dnline = EnvelopeDown(EVP, Percent);
if bbup-bbdn > UPline-Dnline and CrossUp(c,bbup*(1+n/100)) Then
buy("b1");
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then
var1 = sdate;
if sdate > var1 then
buy("bb",AtStop,LatestEntryPrice(0)*(1+n/100));
if CrossDown(c,mav) Then
exitlong();
}
4
엔벨로프+-n%가 상단,중단,하단 중 어떤 값기준인지 모르겠습니다.
수식에서는 중단 기준으로 작성해 드립니다.
수식에서 사용되는 각 값들이 변수에 모두 있으므로
다른내용이면 값만 다른값으로 대체하시면 됩니다.
청산의 진입에서 정한 %는 어떤 값인지 모르겠습니다.
진입시점의 이평값 대미 지정한 %상승하락으로 작성했습니다.
input : Period(5);
Input : BBP(20), MultiD(1.8);
Input : EVP(20), Percent(2);
input : n(5),xx(5);
var : MAv(0),BBup(0),BBdn(0);
var : center(0),UPline(0),DNline(0);
MAv = ma(C,Period);
BBup = BollBandUp(BBP,MultiD);
BBdn = BollBandDown(BBP,MultiD);
center = ma(C, EVP);
UPline = EnvelopeUp(EVP, Percent);
Dnline = EnvelopeDown(EVP, Percent);
# 20개봉 연속 이평이 엔벨로프 중앙선+-n% 이내에 있으면 볼밴하단 하향이탈시 매수진입
if countif(mav <= center*(1+n/100) and mav >= center*(1-n/100),20) == 20 and crossdown(C,bbdn) Then
buy("b");
# 20개봉 연속 이평이 엔벨로프 중앙선+-n% 이내에 있으면 볼밴상단 상향돌파시 매도진입
if countif(mav <= center*(1+n/100) and mav >= center*(1-n/100),20) == 20 and CrossUp(C,bbup) Then
sell("s");
if MarketPosition == 1 Then{
if Crossup(c,bbup) Then
exitlong();
if mav >= mav[BarsSinceEntry]*(1+xx/100) Then
exitlong();
}
if MarketPosition == -1 Then{
if CrossDown(c,bbdn) Then
ExitShort();
if mav <= mav[BarsSinceEntry]*(1-xx/100) Then
ExitShort();
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 이것저것 문의드립니다.
> 매번 성의있는 답변 감사드립니다. 그런데 경험이 없어서 그런지 매번 알다가도 모르겠네요.
1. 기타
밴드폭 분봉끼리의 타주기봉 참조 주석좀 부탁드립니다. 몇몇 검색해서 정리한 뒤 해석해보려고 했는데 배열도 나오고 너무 어렵더군요. 어떤 로직으로 만들어져 있는 지 잘 모르니 타주기분 30분으로 하고 30분봉 차트를 켰을 때 왜 데이터가 안 나오는 지 잘 모르겠습니다. 그리고 건의사항인데요. 타주기봉 참조같은 자주 묻는 수식 코너같은 것을 만들어 주셨으면 합니다. 시스메틱에 가끔 올라오긴 하던데요. 내용은 그리 많지 않더군요. 중복질문도 많이 없어지지 않을까 생각합니다.
2. 지표
30분봉에서 일봉 200 볼린저밴드
3. 시스템
진입
-밴드차(윗밴드-아랫밴드)가 엔벨로프폭보다 크고 밴드폭보다 n%이상 가격이 올랐을 때 진입
추가진입
-진입한 이후부터 가격이 n% 이상 오를 때마다 추가진입
청산
이평선 종가 하향돌파
필터
-추가진입조건은 날이 바뀔 때마다 한번씩만 적용. 즉 하루에 한번만 진입
4. 시스템
진입
-매수진입 이평선이 최근 20개봉간 엔벨로프 +-n% 차 안에 있다면 볼린저밴드 하단에서 매수
-매도진입 매수진입 반대
청산
1- 볼린저밴드 상단(매수의 경우) 하단(매도의 경우)에서 청산하거나
2- 이평선이 진입에서 정한 %선을 상향(매도청산) 혹은 하향돌파(매수청산)하면 청산