커뮤니티

참조함수로 수정요청(11-1호)

프로필 이미지
통큰베팅
2015-11-04 00:54:04
189
글번호 92029
답변완료
안녕하세요? 아래의 함수를 사용하여 B종목(data2)에서 신호를 잡아 B종목(data1)을 실제주문을 내고 싶습니다. 참조함수로 수정부탁드립니다. 아울러 작성해주신 함수를 data1에서 시스템을 선택하여 적용시켜야 하나요 data2에다 적용시켜야 하나요? 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); } 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-11-04 15:58:09

안녕하세요 예스스탁입니다. data2로 변경하면 기존의 atstop이나 atlimit으로 구현된 조건만족 즉시 내용은 모두 봉완성시 onclose로 변경해야 합니다. 해당 atstop이나 atlimit은 주종목(data1)시세와만 비교합니다. 이용에 참고하시기 바랍니다. var : entry1(0); var : ho1(0,data2),OL1(0,data2),HL1(0,data2); var : maho1(0,data2),maOL1(0,data2),maHL1(0,data2); var : cnt1(0,data2),sumho1(0,data2),sumOL1(0,data2),sumHL1(0,data2); 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); Array : DO[100](0),DH[100](0),DL[100](0); if data2(bdate != bdate[1]) Then{ entry1 = 0; DO[0] = data2(O); DH[0] = data2(H); DH[0] = data2(L); for cnt1 = 1 to 99{ DO[cnt1] = DO[cnt1-1][1]; DH[cnt1] = DH[cnt1-1][1]; DL[cnt1] = DL[cnt1-1][1]; } } if data2(H) > DH[0] Then DH[0] = data2(H); if data2(L) < DL[0] Then DL[0] = data2(L); if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = data2(highD(0)-openD(0)); OL1 = data2(OpenD(0)-LowD(0)); HL1 = data2(HighD(0)-LowD(0)); sumho1 = 0; sumOL1 = 0; sumHL1 = 0; if DH[10] > 0 Then{ 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 and data2(L) <= V7[1]-0.02 Then sell("s1"); if V7 < V8 and data2(L) <= V8[1]-0.02 Then sell("s2"); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ if data2(L) <= V9[1]-0.03 Then ExitShort("sp1"); if data2(H) >= V6[1] Then ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ if data2(L) <= V9[1]-0.03 Then ExitShort("sp2"); if data2(H) >= V6[1] Then ExitShort("sl2"); } var : TF(0,data2); var : Xtime(0,data1), Etime(false,data1),cnt(0,data1),mav1(0,data2),mav2(0,data2); var : HV(0,data2),LV(0,data2),HV1(0,data2),LV1(0,data2),HV2(0,data2),LV2(0,data2),H2(0,data1); Array : HH[50](0,data2),LL[50](0,data2),CC[50](0,data2); mav1 = data2(ma(c,5)); mav2 = data2(ma(C,20)); H2 = data2(H); TF = data2(TimeToMinutes(stime)%30); if Bdate != Bdate[1] Then{ Etime = true; if stime >= 090000 Then Xtime = 050000; Else Xtime = 060000; } if data2(Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1]) Then{ HH[0] = data2(H); LL[0] = data2(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 data2(H) > HH[0] Then HH[0] = data2(H); if data2(L) < LL[0] Then LL[0] = data2(L); CC[0] = data2(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]; } v1 = (HV+LV)/2; v2 = (HV1+LV1)/2; v3 = (HV2+LV2)/2; if Etime == true then{ if MarketPosition == 0 and CC[0] > v1 and CC[1] < v2 and CC[2] < v3 and data2(C >= lowD(0)+0.5) Then buy("b",AtMarket); if MarketPosition == 1 and data2(c) <= highest(H2,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(); } 즐거운 하루되세요 > 통큰베팅 님이 쓴 글입니다. > 제목 : 참조함수로 수정요청(11-1호) > 안녕하세요? 아래의 함수를 사용하여 B종목(data2)에서 신호를 잡아 B종목(data1)을 실제주문을 내고 싶습니다. 참조함수로 수정부탁드립니다. 아울러 작성해주신 함수를 data1에서 시스템을 선택하여 적용시켜야 하나요 data2에다 적용시켜야 하나요? 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); } 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(); }