커뮤니티

글번호 46959번 재질문(11-1)

프로필 이미지
통큰베팅
2016-03-25 11:11:45
66
글번호 96583
답변완료
안녕하세요? 글번호 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(); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

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; #새로운 구간이 시작&#46124;으몰 #각 배열방의 값을 다음방으로 이동 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(); }