커뮤니티

함수각주요청(11-1)

프로필 이미지
통큰베팅
2015-12-28 22:11:19
151
글번호 93862
답변완료
안녕하세요? 아래 함수의 각 구문 의미가 어떤 것인지 // 요청드립니다. 아울러 스크립트의 논리상 문제가 없는지도 검토부탁드립니다. ------------------------------------------------------------------------------------ var : entry1(0); var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : EntryCnt1(0); var : V1(0),V2(0),V3(0),V4(0),V5(0); var : V6(0),V7(0),V8(0),V9(0),V10(0); if bdate != bdate[1] Then entry1 = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = Dayhigh-Dayopen; OL1 = DayOpen-DayLow; HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; V1 = dayopen(0)+maho1; V2 = DayOpen(0)-maOL1; V3 = DayOpen(0)+maHL1; V4 = DayOpen(0)-maHL1; V5 = NthMaxList(1,V1,V2,V3,V4); V6 = NthMaxList(2,V1,V2,V3,V4); V7 = NthMaxList(3,V1,V2,V3,V4); V8 = NthMaxList(4,V1,V2,V3,V4); if MarketPosition == 0 and entry1 == 0 Then{ sell("s",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s") == true Then{ ExitShort("sp",atlimit,V7); ExitShort("sl",AtStop,V5); } 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
프로필 이미지

예스스탁 예스스탁 답변

2015-12-29 14:04:49

안녕하세요 예스스탁입니다. 수식에 특별한 논리적 오류는 보이지 않습니다. 주석 내용 참고하시기 바랍니다. var : entry1(0); var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : EntryCnt1(0); var : V1(0),V2(0),V3(0),V4(0),V5(0); var : V6(0),V7(0),V8(0),V9(0),V10(0); #새로운 영업일 시작 #진입횟수 카운트하는 변수 entry1는 0 if bdate != bdate[1] Then entry1 = 0; #포지션이 변경되어 매수나 매도진입하면 #entry1을 1씩증가해서 당일진입횟수 카운트 if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; #당일고가와 당일시가의 차이 ho1 = Dayhigh-Dayopen; #당일시가와 당일저가의 차이 OL1 = DayOpen-DayLow; #당일고가와 당일저가의 차이 HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ #1일전~10일전의 당일고가-당일시가값 합산 sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); #1일전~10일전의 당일시가-당일저가값 합산 sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); #1일전~10일전의 당일고가-당일저가값 합산 sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } #10으로 나누어 평균값 계산 maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; #시가+10일간 고가-시가의 평균 V1 = dayopen(0)+maho1; #시가+10일간 시가-저가의 평균 V2 = DayOpen(0)-maOL1; #시가+10일간 고가-저가의 평균 V3 = DayOpen(0)+maHL1; #시가-10일간 고가-시가의 평균 V4 = DayOpen(0)-maHL1; #위 4개위 값중 가장큰값 V5 = NthMaxList(1,V1,V2,V3,V4); #위 4개위 값중 두번째큰값 V6 = NthMaxList(2,V1,V2,V3,V4); #위 4개위 값중 세번째큰값 V7 = NthMaxList(3,V1,V2,V3,V4); #위 4개위 값중 네번째큰값 V8 = NthMaxList(4,V1,V2,V3,V4); #무포지션이고 당일 진입이 없을때 if MarketPosition == 0 and entry1 == 0 Then{ #v6이하의 시세가 발생하면 매도지닙 sell("s",AtStop,V6); } #s매도진입후에 if MarketPosition == -1 and IsEntryName("s") == true Then{ #v7이하의 시세가 발생하면 매도청산 ExitShort("sp",atlimit,V7); #v5이상의 시세가 발생하면 매도청산 ExitShort("sl",AtStop,V5); } 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); #시간을 30분 단위로 구분 TF = TimeToMinutes(stime)%30; #새로운영업일이 시작하면 if Bdate != Bdate[1] Then{ #Etime은 true Etime = true; #시간이 9시이후이면 xtime은 5시 if stime >= 090000 Then Xtime = 050000; Else#아이면 xtime은 6시 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; #이전 30분간 최고가/최저가/종가를 저장 #기존 [0]번방의 값은[1]번방, 기존[1]번방은 [2]번방 순으로 옮겨 30분기준 이전 49개까지 저장 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분간 최저가 계산 #현재봉 저가가 LLH[0]보다 작으면면 LL[0]의 값을 현재저가로 변경 if L < LL[0] Then LL[0] = L; #종가 저장 CC[0] = C; #이전 30분간 최고가 27개까지 계산되었으면 if HH[25+2] > 0 Then{ HV = HH[0]; LV = LL[0]; HV1 = HH[1]; LV1 = LL[1]; HV2 = HH[2]; LV2 = LL[2]; #0~25까지 이전값을 불러와 최고값 최저값 계산 #1~26까지 이전값을 불러와 최고값 최저값 계산 #2~27까지 이전값을 불러와 최고값 최저값 계산 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]; } #0~25개까지의 최고값과 최저값의 평균 var1 = (HV+LV)/2; #1~26개까지의 최고값과 최저값의 평균 var2 = (HV1+LV1)/2; #2~27개까지의 최고값과 최저값의 평균 var3 = (HV2+LV2)/2; #Etime이 true일때 if Etime == true then{ #무포지션이고 #현재 30분간 종가가 var1보다 크고 #직전 30분간 종가는 var2보다 작고 #전전 30분간 종가는 var3보다 작고 #현재 종가가 당일저가+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(); } 즐거운 하루되세요 > 통큰베팅 님이 쓴 글입니다. > 제목 : 함수각주요청(11-1) > 안녕하세요? 아래 함수의 각 구문 의미가 어떤 것인지 // 요청드립니다. 아울러 스크립트의 논리상 문제가 없는지도 검토부탁드립니다. ------------------------------------------------------------------------------------ var : entry1(0); var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : EntryCnt1(0); var : V1(0),V2(0),V3(0),V4(0),V5(0); var : V6(0),V7(0),V8(0),V9(0),V10(0); if bdate != bdate[1] Then entry1 = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = Dayhigh-Dayopen; OL1 = DayOpen-DayLow; HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; V1 = dayopen(0)+maho1; V2 = DayOpen(0)-maOL1; V3 = DayOpen(0)+maHL1; V4 = DayOpen(0)-maHL1; V5 = NthMaxList(1,V1,V2,V3,V4); V6 = NthMaxList(2,V1,V2,V3,V4); V7 = NthMaxList(3,V1,V2,V3,V4); V8 = NthMaxList(4,V1,V2,V3,V4); if MarketPosition == 0 and entry1 == 0 Then{ sell("s",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s") == true Then{ ExitShort("sp",atlimit,V7); ExitShort("sl",AtStop,V5); } 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(); }