예스스탁
예스스탁 답변
2016-03-25 11:38:41
안녕하세요
예스스탁입니다.
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
#0시이후의 경과된 분수를 30으로 나눔
#9시, 9시 30분, 10시와 같이 30분 단위시간이면 0 아니면 나머지 분수가 리턴
#30분 단위로 구간을 나눌때 사용
TF = TimeToMinutes(stime)%30;
#새로운 영업일 첫봉
if Bdate != Bdate[1] Then{
#Etime은 true(Etime은 진입가능시간을 알기위한 변수)
Etime = true;
#당일 첫봉시간이 9시이후에면 Xtime은 5시
#9시 전이면 xtime 6시
#썸머타임에 따른 청산시간 조정을 위한 내용인것 같습니다.
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
#새로운 영업일 첫봉이거나 30분다위 첫봉이 시작되면
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
#HH[0]번방에 현재봉 고가를 초기값으로 지정
HH[0] = H;
#LL[0]번방에 현재봉 저가를 초기값으로 지정
LL[0] = L;
#새로운 구간이 시작됬으몰
#각 배열방의 값을 다음방으로 이동
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
#30분 구간에서 최고가 계산
#고가가 HH[0]값보다 크면 HH[0]의 값을 해당고가로 변경
if H > HH[0] Then
HH[0] = H;
#30분 구간에서 최저가 계산
#저가가 LL[0]값보다 크면 LL[0]의 값을 해당고가로 변경
if L < LL[0] Then
LL[0] = L;
#30분 구간의 종가 저장
#CC[0]은 종가저장
CC[0] = C;
#30분 단위구간값이이 최소 0~27까지 최소 28개는 값이 있고
if HH[25+2] > 0 Then{
#HV,LV에는 최근 (0~25)26개방의 최고가와 최저가 저장
HV = HH[0];
LV = LL[0];
#HV1,LV1에는 1구간전 기준 26개방의 최고가와 최저가 저장
HV1 = HH[1];
LV1 = LL[1];
#HV1,LV1에는 2구간전 기준 26개방의 최고가와 최저가 저장
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
#현재구간 기준 26개구간 평균값
var1 = (HV+LV)/2;
#1구간전 기준 26개구간 평균값
var2 = (HV1+LV1)/2;
#2구간전 기준 26개구간 평균값
var3 = (HV2+LV2)/2;
#진입시간대이고
if Etime == true then{
#무포지션이고
#현재구간종가는 현재구간 기준 26개구간 평균값값보다 크고
#1구간전 종가는 1구간전 기준 26개구간 평균값보다 작고
#2구간전 종가는 2구간전 기준 26개구간 평균값보다 작고
#종가가 당일저가 +0.5이면
#다음봉 시가에 매수
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
#매수이후 진입이후 최고가보다 현재종가가 0.5이상작고 이평 데드크로스 발생하면 다음봉 시가에 청산
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
#Xtime이 되면
#Etime은 false로 만들고
#매수포지션 청산
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
즐거운 하루되세요
> 통큰베팅 님이 쓴 글입니다.
> 제목 : 글번호 46959번 재질문(11-1)
> 안녕하세요?
글번호 46959번 재질문입니다.
아래의 스크립트에 주석으로 요청드립니다.
감사합니다.
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
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;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}