커뮤니티
시스템식 설명 부탁드립니다.
2017-08-22 08:50:50
110
글번호 112134
항상 도움 주셔서 감사합니다.
타주기이용한 시스템식인데요.
제가 초보라 잘 이해가 안되어서요.
죄송한데 설명과 주석좀 부탁드립니다.
그리고 타주기를 이용할 경우 MACD같은 지표는 어떻게 만드는지도
설명 부탁드립니다.
감사합니다.
input : Atime1(30),P(20);
var : cnt(0),sum1(0),sum2(0),mav1(0),mav2(0),S1(0),D1(0),TM(0),TF1(0);
Array : C1[50](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%Atime1;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then
{
for cnt = 1 to 49
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P] > 0 then{
sum1 = 0;
sum2 = 0;
for cnt = 0 to P-1{
sum1 = sum1+C1[cnt];
sum2 = sum2+C1[cnt+1];
}
mav1 = sum1/P;
mav2 = sum2/P;
if mav1 > 0 and mav2 > 0 then{
if C > mav1 and C1[1] < mav2 Then
buy();
if C < mav1 and C1[1] > mav2 Then
sell();
}
}
}
답변 1
예스스탁 예스스탁 답변
2017-08-23 15:43:46
안녕하세요
예스스탁입니다.
1
input : Atime1(30),P(20);
var : cnt(0),sum1(0),sum2(0),mav1(0),mav2(0),S1(0),D1(0),TM(0),TF1(0);
Array : C1[50](0);
#영업일 변경
if Bdate != Bdate[1] Then{
#변경시점의 분수(밤0시이후 경과된 분)
S1 = TimeToMinutes(stime);
#변경시점 날짜
D1 = sdate;
}
#차트상 1번이상 영업일 변경이 있고
if D1 > 0 then{
#영업일변경일과 같은날이면 현재분수-영업일변경시점의 분수를 뺌
#엽업일변경일과 다른날이면 현재분수에 1440분을 더하고 영업일 변경시점의 분수를 뺌
#해외선물이나 국내선물주야간복합장으로 거래하는 경우
#0시 기준이 아닌 7시나 9시 기준으로 24시간 거래가 되므로
#타주기 계산시에는 해당 시간을 기준으로 24시간을 파악을 하고
#시간을 나눠야 하므로 아래와 같은 계산값이 필요합니다.
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
#TM을 지정한 분단위로 나누어 나머지 값을 취함
#5분봉에서 30분봉이면 0->5->10->15->20->25->0->5->10->15->20->25..반복
#25->0 와 같이 나머지 값이 커지다 작아지면 새로운 30분봉이 시작하는 봉을 나타냅니다
TF1 = TM%Atime1;
#영업일 변경시점이거나 TF값이 커지다 작아지면(새로운 타주기봉 발생)
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then
{
#C1[0]에 새로운 종가를 넣어야 하므로
#기준배열값을 다음배열방으로 순차적으로 넘감
for cnt = 1 to 49
{
C1[cnt] = C1[cnt-1][1];
}
}
#0번방에 새로운 종가저장
C1[0] = C;
#이평계산할만큼 C1배열이 준비되고
if C1[P] > 0 then{
#for문으로 c1의 배열방에서 값가지고와 누적하고
#평균내어 이평값계산
sum1 = 0;
sum2 = 0;
for cnt = 0 to P-1{
sum1 = sum1+C1[cnt];
sum2 = sum2+C1[cnt+1];
}
mav1 = sum1/P;#타주기 현재봉기준 이평
mav2 = sum2/P;#타주기 전봉기준 이평
#모두 0이상이고
if mav1 > 0 and mav2 > 0 then{
#상향돌파
if C > mav1 and C1[1] < mav2 Then
buy();
#하향이탈
if C < mav1 and C1[1] > mav2 Then
sell();
}
}
}
2
input : Atime1(30),P(20);
Input : Period1(12),Period2(26),Period3(9);
Var : Ep1(0), JISU1(0), idx(0), PreJISU1(0);
Var : Ep2(0), JISU2(0), PreJISU2(0);
Var : Ep3(0), JISU3(0), PreMACDSIG(0);
var : MACDVal(0),MACDSig(0),S1(0),D1(0),TM(0),TF1(0);
Ep1 = 2/(Period1+1);
Ep2 = 2/(Period2+1);
Ep3 = 2/(Period3+1);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%Atime1;
if bdate != bdate[1] or (TF1 < TF1[1] and bdate == bdate[1]) Then{
idx = idx + 1;
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMACDSIG = MACDSIG[1];
}
if idx <= 1 then {
JISU1 = C;
JISU2 = C;
MACDVal = JiSu1-Jisu2;
MACDSIG = Jisu1-jisu2;
}
else{
JISU1 = C * EP1 + PreJISU1 * (1-EP1);
JISU2 = C * EP2 + PreJISU2 * (1-EP2);
MACDVal = JiSu1-Jisu2;
MACDSIG = MACDVal * EP3 + PreMACDSIG * (1-EP3);
}
plot1(MACDVal);
plot2(MACDsig);
PlotBaseLine1(0);
}
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 시스템식 설명 부탁드립니다.
> 항상 도움 주셔서 감사합니다.
타주기이용한 시스템식인데요.
제가 초보라 잘 이해가 안되어서요.
죄송한데 설명과 주석좀 부탁드립니다.
그리고 타주기를 이용할 경우 MACD같은 지표는 어떻게 만드는지도
설명 부탁드립니다.
감사합니다.
input : Atime1(30),P(20);
var : cnt(0),sum1(0),sum2(0),mav1(0),mav2(0),S1(0),D1(0),TM(0),TF1(0);
Array : C1[50](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TM%Atime1;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then
{
for cnt = 1 to 49
{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
if C1[P] > 0 then{
sum1 = 0;
sum2 = 0;
for cnt = 0 to P-1{
sum1 = sum1+C1[cnt];
sum2 = sum2+C1[cnt+1];
}
mav1 = sum1/P;
mav2 = sum2/P;
if mav1 > 0 and mav2 > 0 then{
if C > mav1 and C1[1] < mav2 Then
buy();
if C < mav1 and C1[1] > mav2 Then
sell();
}
}
}
다음글
이전글