커뮤니티

함수 수정 요청(11-1호)

프로필 이미지
통큰베팅
2015-10-28 11:19:30
168
글번호 91809
답변완료
안녕하세요? 아래는 최근 10일동안 해외선물의 일중 움직임(시가와 고가, 고가와 저가, 시가와 저가)을 관찰하여 매매의 전략을 세우고자 했었습니다. 단순평균을 사용하다보니 특이치를 제거하고 싶습니다. 즉 최근 10일동안 (고가-저가) 의 값이 가장 큰 값과 가장 작은 값을 제거하고 8개 값을 평균하고 싶습니다. 수정요청 부탁드립니다. 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 = V2 = V3 = V4 = V5 = V6 = V7 = V8 = V9 = V10 = if MarketPosition == 0 and entry1 == 0 Then{ if V7 > V8 Then sell("s1",AtStop,V7-0.02); if V7 < V8 Then sell("s2",Atlimit,V8-0.02); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ ExitShort("sp1",atlimit,V9-0.03); ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ ExitShort("sp2",atlimit,V9-0.03); ExitShort("sl2",AtStop,V6); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-10-28 14:06:29

안녕하세요 예스스탁입니다. 가장큰값과 가장작은값이 하루가 아닐수 있습니다. 즉 동일값이 여러일에 동일할수도 있습니다. 10동안 각 폭 중 가장큰값과 작은값 계산하고 해당 값과 같은 날은 모두 배제합니다. 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); var : H1(0),L1(0),H2(0),L2(0),H3(0),L3(0),cnt(0); var : count1(0),count2(0),count3(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; H1 = dayhigh(1)-dayOpen(1); L1 = dayhigh(1)-dayOpen(1); H2 = dayOpen(1)-dayLow(1); L2 = dayOpen(1)-dayLow(1); H3 = dayhigh(1)-dayLow(1); L3 = dayHigh(1)-dayLow(1); for cnt = 1 to 10{ if dayhigh(cnt)-dayOpen(cnt) > H1 Then H1 = dayhigh(cnt)-dayOpen(cnt); if dayhigh(cnt)-dayOpen(cnt) < L1 Then L1 = dayhigh(cnt)-dayOpen(cnt); if dayopen(cnt)-DayLow(cnt) > H1 Then H1 = DayOpen(cnt)-DayLow(cnt); if dayopen(cnt)-DayLow(cnt) < L1 Then L1 = dayopen(cnt)-DayLow(cnt); if dayhigh(cnt)-DayLow(cnt) > H1 Then H1 = dayhigh(cnt)-DayLow(cnt); if dayhigh(cnt)-DayLow(cnt) < L1 Then L1 = dayhigh(cnt)-DayLow(cnt); } sumho1 = 0; sumOL1 = 0; sumHL1 = 0; count1 = 0; count2 = 0; count3 = 0; for cnt1 = 1 to 10{ if (dayhigh(cnt1)-dayopen(cnt1)) < H1 and (dayhigh(cnt1)-dayopen(cnt1)) > L1 Then{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); count1 = count1+1; } if (DayOpen(cnt1)-DayLow(cnt1)) < H1 and (DayOpen(cnt1)-DayLow(cnt1)) > L1 Then{ sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); count2 = count2+1; } if (DayHigh(cnt1)-DayLow(cnt1)) < H1 and (DayHigh(cnt1)-DayLow(cnt1)) > L1 Then{ sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); count3 = count3+1; } } maho1 = sumho1/count1; maOL1 = sumOL1/count2; maHL1 = sumHL1/count3; V1 = V2 = V3 = V4 = V5 = V6 = V7 = V8 = V9 = V10 = if MarketPosition == 0 and entry1 == 0 Then{ if V7 > V8 Then sell("s1",AtStop,V7-0.02); if V7 < V8 Then sell("s2",Atlimit,V8-0.02); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ ExitShort("sp1",atlimit,V9-0.03); ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ ExitShort("sp2",atlimit,V9-0.03); ExitShort("sl2",AtStop,V6); } 즐거운 하루되세요 > 통큰베팅 님이 쓴 글입니다. > 제목 : 함수 수정 요청(11-1호) > 안녕하세요? 아래는 최근 10일동안 해외선물의 일중 움직임(시가와 고가, 고가와 저가, 시가와 저가)을 관찰하여 매매의 전략을 세우고자 했었습니다. 단순평균을 사용하다보니 특이치를 제거하고 싶습니다. 즉 최근 10일동안 (고가-저가) 의 값이 가장 큰 값과 가장 작은 값을 제거하고 8개 값을 평균하고 싶습니다. 수정요청 부탁드립니다. 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 = V2 = V3 = V4 = V5 = V6 = V7 = V8 = V9 = V10 = if MarketPosition == 0 and entry1 == 0 Then{ if V7 > V8 Then sell("s1",AtStop,V7-0.02); if V7 < V8 Then sell("s2",Atlimit,V8-0.02); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ ExitShort("sp1",atlimit,V9-0.03); ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ ExitShort("sp2",atlimit,V9-0.03); ExitShort("sl2",AtStop,V6); }