커뮤니티
수식 변경 요청드립니다
2019-06-12 15:45:20
327
글번호 129393
질문 1)
지난번에 90분봉에 대한 단순 스톡케스틱을 만들어 주셨습니다.
90분봉이 아니라 60분봉의 스톡케스틱을 참조하려면 input 데이타에 있는 ntime1(90)을
ntime1(60)으로만 바꿔주면 90분봉의 이평선도 90분봉의 스톡케스틱도 60분봉으로 바뀌나요?
90분봉의 이평선은 바뀌는 것 같은데 스톡케스틱은 잘 모르겠습니다.
질문 2)
매수진입(15분봉)에서 90분봉의 스톡케스틱을 참조하고 싶은데요..
90분봉의 스톡케스틱이 과매수(80)을 이탈한 시점부터 50선까지 내려오는 동안에는 매수포지션 진입을 금지하고자 합니다. 그렇다고 50~80사이는 매수포지션 진입을 금지하는 것은 아닙니다. 가령 50선을 뚤고 80으로 올라가는 경우는 매수를 해야 합니다.
같은 50~80구간에 있지만 전자는 매매를 금지하고, 후자와 전자(과매도 이탈후 50선 도달까지)를 제외한 모든 경우는 매수진입 허용..
매도진입도 변경을 부탁드립니다.
90분봉의 스톡케스틱이 과매도(20)을 크로스한 시점부터 50선을 크로스 하는 구간까지는 매도진입을 금지했으면 좋겠습니다.
항상 도움을 주셔서 감사합니다
input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70),매수이격(18),매도이격(18),매수MAP(10),청산MAP(30);
input : sto1(25),sto2(6),sto3(6);
var : cnt(0),sum2(0),sum3(0);
var : tsum1(0),tsum2(0),tmav1(0),tmav2(0);
var : BBup(0),BBdn(0),BBMid(0);
var : S1(0),D1(0),TM(0),TF(0);
Var : Lvalue(0), Hvalue(0);
var : EP1(0),EP2(0),SK(0),SD(0);
Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1);
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+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;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
H1[0] = H;
L1[0] = L;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
FK[cnt] = FK[cnt-1][1];
stok[cnt] = stok[cnt-1][1];
}
}
C1[0] = C;
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
if C1[P2] > 0 then
{
tsum1 = 0;
tsum2 = 0;
for cnt = 0 to P2-1
{
if cnt < P1 then
tsum1 = tsum1+C1[cnt];
if cnt < P2 then
tsum2 = tsum2+C1[cnt];
}
# 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2
tmav1 = tsum1/P1;
tmav2 = tsum2/P2;
}
# 분봉 스톡케스틱(참조분봉)========================
if H1[sto1-1] > 0 and L1[sto1-1] > 0 then
{
Hvalue = H1[0];
Lvalue = L1[0];
for cnt = 0 to sto1-1
{
if H1[cnt] > Hvalue then
Hvalue = H1[cnt];
if L1[cnt] < Lvalue then
Lvalue = L1[cnt];
}
FK[0]= (C-Lvalue)/(Hvalue-Lvalue)*100;
SK = FK[0];
}
if FK[sto2] >= 0 then
{
sum2 = 0;
for cnt = 0 to sto2-1
{
sum2 = sum2 + FK[cnt];
}
stok[0] = sum2/sto2;
SK = stok[0];
}
if FK[sto2] >= 0 then
{
sum3 = 0;
for cnt = 0 to sto3-1
{
sum3 = sum3 + stok[cnt];
}
SD = sum3/sto3;
}
}
# 단기 이평선
단기mav = ma(C,매수MAP);
# 장기 이평선
장기mav = ma(C,청산MAP);
# 매수게임=============================
if crossup(단기mav,장기mav) Then
buy("매수",OnClose,def,Floor(금액/C));
if crossdown(단기mav,장기mav) Then
ExitLong("청산");
# 매도게임==============================
if crossdown(단기mav,장기mav) Then
sell("매도",OnClose,def,Floor(금액/C));
if crossup(단기mav,장기mav) Then
ExitShort("매도청산");
답변 3
예스스탁 예스스탁 답변
2019-06-12 16:44:12
안녕하세요
예스스탁입니다.
input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70);
input : 매수이격(18),매도이격(18),매수MAP(10),청산MAP(30),금액(100000000);
input : sto1(25),sto2(6),sto3(6);
var : cnt(0),sum2(0),sum3(0);
var : tsum1(0),tsum2(0),tmav1(0),tmav2(0);
var : BBup(0),BBdn(0),BBMid(0);
var : S1(0),D1(0),TM(0),TF(0);
Var : Lvalue(0), Hvalue(0);
var : EP1(0),EP2(0),SK(0),SD(0),T(0),단기mav(0),장기mav(0);
Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1);
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+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;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
H1[0] = H;
L1[0] = L;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
FK[cnt] = FK[cnt-1][1];
stok[cnt] = stok[cnt-1][1];
}
}
C1[0] = C;
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
if C1[P2] > 0 then
{
tsum1 = 0;
tsum2 = 0;
for cnt = 0 to P2-1
{
if cnt < P1 then
tsum1 = tsum1+C1[cnt];
if cnt < P2 then
tsum2 = tsum2+C1[cnt];
}
# 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2
tmav1 = tsum1/P1;
tmav2 = tsum2/P2;
}
# 분봉 스톡케스틱(참조분봉)========================
if H1[sto1-1] > 0 and L1[sto1-1] > 0 then
{
Hvalue = H1[0];
Lvalue = L1[0];
for cnt = 0 to sto1-1
{
if H1[cnt] > Hvalue then
Hvalue = H1[cnt];
if L1[cnt] < Lvalue then
Lvalue = L1[cnt];
}
FK[0]= (C-Lvalue)/(Hvalue-Lvalue)*100;
SK = FK[0];
}
if FK[sto2] >= 0 then
{
sum2 = 0;
for cnt = 0 to sto2-1
{
sum2 = sum2 + FK[cnt];
}
stok[0] = sum2/sto2;
SK = stok[0];
}
if FK[sto2] >= 0 then
{
sum3 = 0;
for cnt = 0 to sto3-1
{
sum3 = sum3 + stok[cnt];
}
SD = sum3/sto3;
}
}
if Crossup(sk,80) Then
T = 3;
if CrossDown(sk,80) Then
T = -3;
if CrossUp(sk,50) Then
T = 2;
if CrossDown(sk,50) Then
T = -2;
if CrossUp(sk,20) Then
T = 1;
if CrossDown(sk,20) Then
T = -1;
# 단기 이평선
단기mav = ma(C,매수MAP);
# 장기 이평선
장기mav = ma(C,청산MAP);
# 매수게임=============================
if crossup(단기mav,장기mav) and T != -3 Then
buy("매수",OnClose,def,Floor(금액/C));
if crossdown(단기mav,장기mav) Then
ExitLong("청산");
# 매도게임==============================
if crossdown(단기mav,장기mav) and T != 1 Then
sell("매도",OnClose,def,Floor(금액/C));
if crossup(단기mav,장기mav) Then
ExitShort("매도청산");
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식 변경 요청드립니다
> 질문 1)
지난번에 90분봉에 대한 단순 스톡케스틱을 만들어 주셨습니다.
90분봉이 아니라 60분봉의 스톡케스틱을 참조하려면 input 데이타에 있는 ntime1(90)을
ntime1(60)으로만 바꿔주면 90분봉의 이평선도 90분봉의 스톡케스틱도 60분봉으로 바뀌나요?
90분봉의 이평선은 바뀌는 것 같은데 스톡케스틱은 잘 모르겠습니다.
질문 2)
매수진입(15분봉)에서 90분봉의 스톡케스틱을 참조하고 싶은데요..
90분봉의 스톡케스틱이 과매수(80)을 이탈한 시점부터 50선까지 내려오는 동안에는 매수포지션 진입을 금지하고자 합니다. 그렇다고 50~80사이는 매수포지션 진입을 금지하는 것은 아닙니다. 가령 50선을 뚤고 80으로 올라가는 경우는 매수를 해야 합니다.
같은 50~80구간에 있지만 전자는 매매를 금지하고, 후자와 전자(과매도 이탈후 50선 도달까지)를 제외한 모든 경우는 매수진입 허용..
매도진입도 변경을 부탁드립니다.
90분봉의 스톡케스틱이 과매도(20)을 크로스한 시점부터 50선을 크로스 하는 구간까지는 매도진입을 금지했으면 좋겠습니다.
항상 도움을 주셔서 감사합니다
input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70),매수이격(18),매도이격(18),매수MAP(10),청산MAP(30);
input : sto1(25),sto2(6),sto3(6);
var : cnt(0),sum2(0),sum3(0);
var : tsum1(0),tsum2(0),tmav1(0),tmav2(0);
var : BBup(0),BBdn(0),BBMid(0);
var : S1(0),D1(0),TM(0),TF(0);
Var : Lvalue(0), Hvalue(0);
var : EP1(0),EP2(0),SK(0),SD(0);
Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1);
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+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;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
H1[0] = H;
L1[0] = L;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
FK[cnt] = FK[cnt-1][1];
stok[cnt] = stok[cnt-1][1];
}
}
C1[0] = C;
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
if C1[P2] > 0 then
{
tsum1 = 0;
tsum2 = 0;
for cnt = 0 to P2-1
{
if cnt < P1 then
tsum1 = tsum1+C1[cnt];
if cnt < P2 then
tsum2 = tsum2+C1[cnt];
}
# 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2
tmav1 = tsum1/P1;
tmav2 = tsum2/P2;
}
# 분봉 스톡케스틱(참조분봉)========================
if H1[sto1-1] > 0 and L1[sto1-1] > 0 then
{
Hvalue = H1[0];
Lvalue = L1[0];
for cnt = 0 to sto1-1
{
if H1[cnt] > Hvalue then
Hvalue = H1[cnt];
if L1[cnt] < Lvalue then
Lvalue = L1[cnt];
}
FK[0]= (C-Lvalue)/(Hvalue-Lvalue)*100;
SK = FK[0];
}
if FK[sto2] >= 0 then
{
sum2 = 0;
for cnt = 0 to sto2-1
{
sum2 = sum2 + FK[cnt];
}
stok[0] = sum2/sto2;
SK = stok[0];
}
if FK[sto2] >= 0 then
{
sum3 = 0;
for cnt = 0 to sto3-1
{
sum3 = sum3 + stok[cnt];
}
SD = sum3/sto3;
}
}
# 단기 이평선
단기mav = ma(C,매수MAP);
# 장기 이평선
장기mav = ma(C,청산MAP);
# 매수게임=============================
if crossup(단기mav,장기mav) Then
buy("매수",OnClose,def,Floor(금액/C));
if crossdown(단기mav,장기mav) Then
ExitLong("청산");
# 매도게임==============================
if crossdown(단기mav,장기mav) Then
sell("매도",OnClose,def,Floor(금액/C));
if crossup(단기mav,장기mav) Then
ExitShort("매도청산");
뽄때
2019-06-12 16:48:37
1)번 질문 답변을 부탁드립니다^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 변경 요청드립니다
> 안녕하세요
예스스탁입니다.
input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70);
input : 매수이격(18),매도이격(18),매수MAP(10),청산MAP(30),금액(100000000);
input : sto1(25),sto2(6),sto3(6);
var : cnt(0),sum2(0),sum3(0);
var : tsum1(0),tsum2(0),tmav1(0),tmav2(0);
var : BBup(0),BBdn(0),BBMid(0);
var : S1(0),D1(0),TM(0),TF(0);
Var : Lvalue(0), Hvalue(0);
var : EP1(0),EP2(0),SK(0),SD(0),T(0),단기mav(0),장기mav(0);
Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1);
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+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;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
H1[0] = H;
L1[0] = L;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
FK[cnt] = FK[cnt-1][1];
stok[cnt] = stok[cnt-1][1];
}
}
C1[0] = C;
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
if C1[P2] > 0 then
{
tsum1 = 0;
tsum2 = 0;
for cnt = 0 to P2-1
{
if cnt < P1 then
tsum1 = tsum1+C1[cnt];
if cnt < P2 then
tsum2 = tsum2+C1[cnt];
}
# 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2
tmav1 = tsum1/P1;
tmav2 = tsum2/P2;
}
# 분봉 스톡케스틱(참조분봉)========================
if H1[sto1-1] > 0 and L1[sto1-1] > 0 then
{
Hvalue = H1[0];
Lvalue = L1[0];
for cnt = 0 to sto1-1
{
if H1[cnt] > Hvalue then
Hvalue = H1[cnt];
if L1[cnt] < Lvalue then
Lvalue = L1[cnt];
}
FK[0]= (C-Lvalue)/(Hvalue-Lvalue)*100;
SK = FK[0];
}
if FK[sto2] >= 0 then
{
sum2 = 0;
for cnt = 0 to sto2-1
{
sum2 = sum2 + FK[cnt];
}
stok[0] = sum2/sto2;
SK = stok[0];
}
if FK[sto2] >= 0 then
{
sum3 = 0;
for cnt = 0 to sto3-1
{
sum3 = sum3 + stok[cnt];
}
SD = sum3/sto3;
}
}
if Crossup(sk,80) Then
T = 3;
if CrossDown(sk,80) Then
T = -3;
if CrossUp(sk,50) Then
T = 2;
if CrossDown(sk,50) Then
T = -2;
if CrossUp(sk,20) Then
T = 1;
if CrossDown(sk,20) Then
T = -1;
# 단기 이평선
단기mav = ma(C,매수MAP);
# 장기 이평선
장기mav = ma(C,청산MAP);
# 매수게임=============================
if crossup(단기mav,장기mav) and T != -3 Then
buy("매수",OnClose,def,Floor(금액/C));
if crossdown(단기mav,장기mav) Then
ExitLong("청산");
# 매도게임==============================
if crossdown(단기mav,장기mav) and T != 1 Then
sell("매도",OnClose,def,Floor(금액/C));
if crossup(단기mav,장기mav) Then
ExitShort("매도청산");
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식 변경 요청드립니다
> 질문 1)
지난번에 90분봉에 대한 단순 스톡케스틱을 만들어 주셨습니다.
90분봉이 아니라 60분봉의 스톡케스틱을 참조하려면 input 데이타에 있는 ntime1(90)을
ntime1(60)으로만 바꿔주면 90분봉의 이평선도 90분봉의 스톡케스틱도 60분봉으로 바뀌나요?
90분봉의 이평선은 바뀌는 것 같은데 스톡케스틱은 잘 모르겠습니다.
질문 2)
매수진입(15분봉)에서 90분봉의 스톡케스틱을 참조하고 싶은데요..
90분봉의 스톡케스틱이 과매수(80)을 이탈한 시점부터 50선까지 내려오는 동안에는 매수포지션 진입을 금지하고자 합니다. 그렇다고 50~80사이는 매수포지션 진입을 금지하는 것은 아닙니다. 가령 50선을 뚤고 80으로 올라가는 경우는 매수를 해야 합니다.
같은 50~80구간에 있지만 전자는 매매를 금지하고, 후자와 전자(과매도 이탈후 50선 도달까지)를 제외한 모든 경우는 매수진입 허용..
매도진입도 변경을 부탁드립니다.
90분봉의 스톡케스틱이 과매도(20)을 크로스한 시점부터 50선을 크로스 하는 구간까지는 매도진입을 금지했으면 좋겠습니다.
항상 도움을 주셔서 감사합니다
input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70),매수이격(18),매도이격(18),매수MAP(10),청산MAP(30);
input : sto1(25),sto2(6),sto3(6);
var : cnt(0),sum2(0),sum3(0);
var : tsum1(0),tsum2(0),tmav1(0),tmav2(0);
var : BBup(0),BBdn(0),BBMid(0);
var : S1(0),D1(0),TM(0),TF(0);
Var : Lvalue(0), Hvalue(0);
var : EP1(0),EP2(0),SK(0),SD(0);
Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1);
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+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;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
H1[0] = H;
L1[0] = L;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
FK[cnt] = FK[cnt-1][1];
stok[cnt] = stok[cnt-1][1];
}
}
C1[0] = C;
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
if C1[P2] > 0 then
{
tsum1 = 0;
tsum2 = 0;
for cnt = 0 to P2-1
{
if cnt < P1 then
tsum1 = tsum1+C1[cnt];
if cnt < P2 then
tsum2 = tsum2+C1[cnt];
}
# 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2
tmav1 = tsum1/P1;
tmav2 = tsum2/P2;
}
# 분봉 스톡케스틱(참조분봉)========================
if H1[sto1-1] > 0 and L1[sto1-1] > 0 then
{
Hvalue = H1[0];
Lvalue = L1[0];
for cnt = 0 to sto1-1
{
if H1[cnt] > Hvalue then
Hvalue = H1[cnt];
if L1[cnt] < Lvalue then
Lvalue = L1[cnt];
}
FK[0]= (C-Lvalue)/(Hvalue-Lvalue)*100;
SK = FK[0];
}
if FK[sto2] >= 0 then
{
sum2 = 0;
for cnt = 0 to sto2-1
{
sum2 = sum2 + FK[cnt];
}
stok[0] = sum2/sto2;
SK = stok[0];
}
if FK[sto2] >= 0 then
{
sum3 = 0;
for cnt = 0 to sto3-1
{
sum3 = sum3 + stok[cnt];
}
SD = sum3/sto3;
}
}
# 단기 이평선
단기mav = ma(C,매수MAP);
# 장기 이평선
장기mav = ma(C,청산MAP);
# 매수게임=============================
if crossup(단기mav,장기mav) Then
buy("매수",OnClose,def,Floor(금액/C));
if crossdown(단기mav,장기mav) Then
ExitLong("청산");
# 매도게임==============================
if crossdown(단기mav,장기mav) Then
sell("매도",OnClose,def,Floor(금액/C));
if crossup(단기mav,장기mav) Then
ExitShort("매도청산");
예스스탁 예스스탁 답변
2019-06-12 17:01:33
안녕하세요
예스스탁입니다.
1번은 ntime만 60으로 지정하시면 됩니다.
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : Re : Re : 수식 변경 요청드립니다
>
1)번 질문 답변을 부탁드립니다^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 변경 요청드립니다
> 안녕하세요
예스스탁입니다.
input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70);
input : 매수이격(18),매도이격(18),매수MAP(10),청산MAP(30),금액(100000000);
input : sto1(25),sto2(6),sto3(6);
var : cnt(0),sum2(0),sum3(0);
var : tsum1(0),tsum2(0),tmav1(0),tmav2(0);
var : BBup(0),BBdn(0),BBMid(0);
var : S1(0),D1(0),TM(0),TF(0);
Var : Lvalue(0), Hvalue(0);
var : EP1(0),EP2(0),SK(0),SD(0),T(0),단기mav(0),장기mav(0);
Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1);
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+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;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
H1[0] = H;
L1[0] = L;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
FK[cnt] = FK[cnt-1][1];
stok[cnt] = stok[cnt-1][1];
}
}
C1[0] = C;
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
if C1[P2] > 0 then
{
tsum1 = 0;
tsum2 = 0;
for cnt = 0 to P2-1
{
if cnt < P1 then
tsum1 = tsum1+C1[cnt];
if cnt < P2 then
tsum2 = tsum2+C1[cnt];
}
# 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2
tmav1 = tsum1/P1;
tmav2 = tsum2/P2;
}
# 분봉 스톡케스틱(참조분봉)========================
if H1[sto1-1] > 0 and L1[sto1-1] > 0 then
{
Hvalue = H1[0];
Lvalue = L1[0];
for cnt = 0 to sto1-1
{
if H1[cnt] > Hvalue then
Hvalue = H1[cnt];
if L1[cnt] < Lvalue then
Lvalue = L1[cnt];
}
FK[0]= (C-Lvalue)/(Hvalue-Lvalue)*100;
SK = FK[0];
}
if FK[sto2] >= 0 then
{
sum2 = 0;
for cnt = 0 to sto2-1
{
sum2 = sum2 + FK[cnt];
}
stok[0] = sum2/sto2;
SK = stok[0];
}
if FK[sto2] >= 0 then
{
sum3 = 0;
for cnt = 0 to sto3-1
{
sum3 = sum3 + stok[cnt];
}
SD = sum3/sto3;
}
}
if Crossup(sk,80) Then
T = 3;
if CrossDown(sk,80) Then
T = -3;
if CrossUp(sk,50) Then
T = 2;
if CrossDown(sk,50) Then
T = -2;
if CrossUp(sk,20) Then
T = 1;
if CrossDown(sk,20) Then
T = -1;
# 단기 이평선
단기mav = ma(C,매수MAP);
# 장기 이평선
장기mav = ma(C,청산MAP);
# 매수게임=============================
if crossup(단기mav,장기mav) and T != -3 Then
buy("매수",OnClose,def,Floor(금액/C));
if crossdown(단기mav,장기mav) Then
ExitLong("청산");
# 매도게임==============================
if crossdown(단기mav,장기mav) and T != 1 Then
sell("매도",OnClose,def,Floor(금액/C));
if crossup(단기mav,장기mav) Then
ExitShort("매도청산");
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식 변경 요청드립니다
> 질문 1)
지난번에 90분봉에 대한 단순 스톡케스틱을 만들어 주셨습니다.
90분봉이 아니라 60분봉의 스톡케스틱을 참조하려면 input 데이타에 있는 ntime1(90)을
ntime1(60)으로만 바꿔주면 90분봉의 이평선도 90분봉의 스톡케스틱도 60분봉으로 바뀌나요?
90분봉의 이평선은 바뀌는 것 같은데 스톡케스틱은 잘 모르겠습니다.
질문 2)
매수진입(15분봉)에서 90분봉의 스톡케스틱을 참조하고 싶은데요..
90분봉의 스톡케스틱이 과매수(80)을 이탈한 시점부터 50선까지 내려오는 동안에는 매수포지션 진입을 금지하고자 합니다. 그렇다고 50~80사이는 매수포지션 진입을 금지하는 것은 아닙니다. 가령 50선을 뚤고 80으로 올라가는 경우는 매수를 해야 합니다.
같은 50~80구간에 있지만 전자는 매매를 금지하고, 후자와 전자(과매도 이탈후 50선 도달까지)를 제외한 모든 경우는 매수진입 허용..
매도진입도 변경을 부탁드립니다.
90분봉의 스톡케스틱이 과매도(20)을 크로스한 시점부터 50선을 크로스 하는 구간까지는 매도진입을 금지했으면 좋겠습니다.
항상 도움을 주셔서 감사합니다
input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70),매수이격(18),매도이격(18),매수MAP(10),청산MAP(30);
input : sto1(25),sto2(6),sto3(6);
var : cnt(0),sum2(0),sum3(0);
var : tsum1(0),tsum2(0),tmav1(0),tmav2(0);
var : BBup(0),BBdn(0),BBMid(0);
var : S1(0),D1(0),TM(0),TF(0);
Var : Lvalue(0), Hvalue(0);
var : EP1(0),EP2(0),SK(0),SD(0);
Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1);
Ep1 = 2/(sto2+1);
Ep2 = 2/(sto3+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;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or
(ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then
{
H1[0] = H;
L1[0] = L;
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
FK[cnt] = FK[cnt-1][1];
stok[cnt] = stok[cnt-1][1];
}
}
C1[0] = C;
if H > H1[0] Then
H1[0] = H;
if L < L1[0] Then
L1[0] = L;
if C1[P2] > 0 then
{
tsum1 = 0;
tsum2 = 0;
for cnt = 0 to P2-1
{
if cnt < P1 then
tsum1 = tsum1+C1[cnt];
if cnt < P2 then
tsum2 = tsum2+C1[cnt];
}
# 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2
tmav1 = tsum1/P1;
tmav2 = tsum2/P2;
}
# 분봉 스톡케스틱(참조분봉)========================
if H1[sto1-1] > 0 and L1[sto1-1] > 0 then
{
Hvalue = H1[0];
Lvalue = L1[0];
for cnt = 0 to sto1-1
{
if H1[cnt] > Hvalue then
Hvalue = H1[cnt];
if L1[cnt] < Lvalue then
Lvalue = L1[cnt];
}
FK[0]= (C-Lvalue)/(Hvalue-Lvalue)*100;
SK = FK[0];
}
if FK[sto2] >= 0 then
{
sum2 = 0;
for cnt = 0 to sto2-1
{
sum2 = sum2 + FK[cnt];
}
stok[0] = sum2/sto2;
SK = stok[0];
}
if FK[sto2] >= 0 then
{
sum3 = 0;
for cnt = 0 to sto3-1
{
sum3 = sum3 + stok[cnt];
}
SD = sum3/sto3;
}
}
# 단기 이평선
단기mav = ma(C,매수MAP);
# 장기 이평선
장기mav = ma(C,청산MAP);
# 매수게임=============================
if crossup(단기mav,장기mav) Then
buy("매수",OnClose,def,Floor(금액/C));
if crossdown(단기mav,장기mav) Then
ExitLong("청산");
# 매도게임==============================
if crossdown(단기mav,장기mav) Then
sell("매도",OnClose,def,Floor(금액/C));
if crossup(단기mav,장기mav) Then
ExitShort("매도청산");
다음글
이전글