커뮤니티
문의드립니다~
2017-02-16 03:01:53
178
글번호 106880
우선 분주기표현식대로 하니깐 잘 되네요 감사합니다~
1.항생에서 적용할때요 15분이 시가이고 이후로 30분봉이 계산될때에 15분 45분 15분 45분식으로 계산되거든요 이걸15분을 시작으로 한 단위가 아니고 30분단위로 30분 60분 30분 60분 이렇게 계산될 수 있을까요~ 그리고 그림에 보면 항생점심시간에 봉1개가 지표에서는 계산을 못해주고 비거든요.~ 전에30분시초가지표가지고 표시해봐도 여전히 봉1개가 비는 모습인데요 이걸 잡아줄 수 있는 방법이 있을까요 키움이랑 비교해봤는데 키움에서는 1시30분에 점심시간에 이런식으로 봉 하나가 잡혀져 있습니다.
2.받은항생시스템을 적용해 보니깐 신호가 하루치 밖에 나오지 않습니다.
위에 1-1 선물 라고표시된 식은 전체가 나오는데요 항생에 적용해 보니깐 마찬가지로 15분 45분식으로 표현이 되어서요~ 항생용으로 올려주신 시스템식에서도 차트상 보이는 전체기간에서 신호가 나올 수 있고 30분단위로 표현되도록 수정 부탁드립니다~
3.그리고 분주기로 계산된 30분봉의 종가가격이 계산되기 15분전의 가격을 CC(1)이런식으로 표현할 수 있는 방법 문의드립니다.~ 분주기로15분단위로 계산해서 적용해 봤는데 30분봉이 완성되는 시점에 15분봉도 같이 완성되면서 원하는 식표현이 안되더라구요
30분봉이완성되기 5분전,10분전,15분전을 변수로만들어서 식에 표현하고 싶습니다~
- 1. 시간비는거2.png (0.04 MB)
답변 1
예스스탁 예스스탁 답변
2017-02-16 13:45:53
안녕하세요
예스스탁입니다.
0
우선 이전에 51928 문의의 항생 수식에
수식내 누락된 부분이 있어 추가해 드립니다.
0-1지표
input : 분주기(30),P(5);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum(0),mav(0);
Array : CC[100](0),OO[100](0),HH[100](0),LL[100](0);
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) 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%분주기;
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) or
(Sdate == sdate[1] and TF < TF[1]) Then{
OO[0] = o;
for cnt = 1 to 99{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
plot1(OO[0]);
plot2(OO[1]);
plot3(OO[2]);
plot4(OO[3]);
plot5(OO[4]);
plot6(OO[5]);
}
0-2 시스템
input : 분주기(30),P(5);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum(0),mav(0);
Array : CC[100](0),OO[100](0),HH[100](0),LL[100](0);
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) 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%분주기;
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) or
(Sdate == sdate[1] and TF < TF[1]) Then{
OO[0] = o;
for cnt = 1 to 99{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
}
input : P5(5), P20(20), P60(60), get(25), cut(25);
var : mav0(0), mav1(0), mav2(0), mav3(0), mav4(0), mav5(0), tic20(0), tic60(0), tic5(0);
mav0 = CC[0];
mav1 = CC[1];
mav2 = CC[2];
mav3 = CC[3];
mav4 = CC[4];
mav5 = CC[5];
tic20 = ma(c,P20);
tic60 = ma(c,P60);
tic5 = ma(c,P5);
if stime >= 103000 and stime < 165500 Then{
if mav0 > mav5 and mav1 > (mav0+mav2+mav3+mav4)/4 and mav5 > 0 then{
if crossup(tic5,tic20) Then{
if MarketPosition == 0 Then
buy("E매수");
if MarketPosition == -1 Then
buy("E리버스매수");
}
}
if mav0 < mav5 and mav1 < (mav0+mav2+mav3+mav4)/4 and mav5 > 0 then{
if CrossDown(tic5,tic20) then{
if MarketPosition == 0 Then
sell("E매도");
if MarketPosition == 1 Then
sell("E리버스매도");
}
}
if mav0 < mav5 and mav1 < (mav0+mav2+mav3+mav4)/4 and mav5 > 0 then
exitlong("불매수청산");
if mav0 > mav5 and mav1 > (mav0+mav2+mav3+mav4)/4 and mav5 > 0 Then
ExitShort("불매도청산");
}
if stime == 170000 or (stime > 170000 and stime[1] < 170000) Then{
exitlong();
ExitShort();
}
SetStopProfittarget(PriceScale*get,PointStop);
SetStopLoss(PriceScale*cut,PointStop);
1
15분기준으로 이후 30분씩 분할이 아닌
30분/ 60분 단위이면
전체 수식에서 아래 조건만 변경하시면 됩니다.
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
위식은 10시 15분 이후의 첫봉의 분단위시간값을 S1에 저장합니다.
아래와 같이 변경하시면 10시가 기준이되므로 이후 30분 60분 주기로 계산할수 있습니다.
S1 = TimeToMinutes(100000);
2
수식 자체에서 타주기를 계산하면
타주기로 계산하는 지표값등이 계산할 만큼 충분한 데이터가
확보된 다음부터 신호가 발생할수 있습니다.
해당 부분은 따로 추리할수 있는 부분이 아닙니다.
3
아래 내용 참고하시기 바랍니다.
주기를 하나더 추가했습니다.
C1배열변수이고 다른주기의 직전봉의 값이므로
C1[1]로 출력해 보시면 됩니다.
input : 분주기(30),P(5),분주기1(15);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum(0),mav(0),tf1(0);
Array : CC[100](0),OO[100](0),HH[100](0),LL[100](0),C1[100](0);
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) 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%분주기;
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) or
(Sdate == sdate[1] and TF < TF[1]) Then{
OO[0] = o;
for cnt = 1 to 99{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
TF1 = TM%분주기1;
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) or
(Sdate == sdate[1] and TF1 < TF1[1]) Then{
for cnt = 1 to 99{
C1[cnt] = C1[cnt-1][1];
}
}
C1[0] = C;
plot1(CC[0]);
plot1(C1[1]);
}
즐거운 하루되세요
> 겐지 님이 쓴 글입니다.
> 제목 : 문의드립니다~
> 우선 분주기표현식대로 하니깐 잘 되네요 감사합니다~
1.항생에서 적용할때요 15분이 시가이고 이후로 30분봉이 계산될때에 15분 45분 15분 45분식으로 계산되거든요 이걸15분을 시작으로 한 단위가 아니고 30분단위로 30분 60분 30분 60분 이렇게 계산될 수 있을까요~ 그리고 그림에 보면 항생점심시간에 봉1개가 지표에서는 계산을 못해주고 비거든요.~ 전에30분시초가지표가지고 표시해봐도 여전히 봉1개가 비는 모습인데요 이걸 잡아줄 수 있는 방법이 있을까요 키움이랑 비교해봤는데 키움에서는 1시30분에 점심시간에 이런식으로 봉 하나가 잡혀져 있습니다.
2.받은항생시스템을 적용해 보니깐 신호가 하루치 밖에 나오지 않습니다.
위에 1-1 선물 라고표시된 식은 전체가 나오는데요 항생에 적용해 보니깐 마찬가지로 15분 45분식으로 표현이 되어서요~ 항생용으로 올려주신 시스템식에서도 차트상 보이는 전체기간에서 신호가 나올 수 있고 30분단위로 표현되도록 수정 부탁드립니다~
3.그리고 분주기로 계산된 30분봉의 종가가격이 계산되기 15분전의 가격을 CC(1)이런식으로 표현할 수 있는 방법 문의드립니다.~ 분주기로15분단위로 계산해서 적용해 봤는데 30분봉이 완성되는 시점에 15분봉도 같이 완성되면서 원하는 식표현이 안되더라구요
30분봉이완성되기 5분전,10분전,15분전을 변수로만들어서 식에 표현하고 싶습니다~
이전글