커뮤니티

검토좀 부탁합니다

프로필 이미지
kjdkdh
2021-05-04 07:44:45
871
글번호 148652
답변완료

첨부 이미지

안녕하세요 게시글 72215 와 기존 식을 추가 했습니다 이렇게 해도 저렇게 작동이 되지 않습니다 검토좀 해주시고요 문제점 1 틱차트 사용합니다 시간제한에 문제가 있습니다 문제점 2 문제점1의 문제를 해결하고자 게시글 72215 를 추가했는데도 역시 문제점이 해결되지 않습니다 참고로 봉갯수도 변경해보아도 같네요 이미지를 보시면 특정 이평선 위에 아래를 기준은 준것입니다 갯수제한 때문인지 작동이 되지 않습니다 수정좀 부탁합니다 input : 완전청산 (260); input : 손절가 (65); var : T1(0),T2(0); #var : tX(0),BH(0),SH(0); #수익 틱수조건 var : T21(0),T26(0),T23(0),T24(0),T25(0); #수익틱수 var : T11(0),T22(0),T33(0),T44(0),T55(0); #수익틱수 var : Tcond(false); # 시간제한 var : mav1(0),mav2(0),Lcnt(0),Hcnt(0),BH(0),SL(0); #손절식 조건 var : T(0),S(0),idx(0),entry2(False); # 딱 한번 매매 var1 = ma(c,0); var2 = ma(C,0); var3 = ma(C,0); var4 = ma(c,0); //시간타이머식 if (sdate != sdate[1] and stime >= 101600) or (sdate == sdate[1] and stime >= 101600 and stime[1] < 101600) Then Tcond = true; if (sdate != sdate[1] and stime >= 1720000) or (sdate == sdate[1] and stime >= 1720000 and stime[1] < 1720000) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if Tcond == true then { if var1 > var2 and var1 > var3 and var1 > var4 and var4 > var2 Then T1 = 1; if var1 < var2 and var1 < var3 and var1 < var4 and var4 < var2 Then T1 = -1; if T1 == 1 and T1[1] == -1 Then buy("매수"); if T1 == -1 and T1[1] == 1 Then sell("매도"); #################################################### #딱 한번 매매 if Bdate != Bdate[1] Then { idx = 0; entry2 = true; } idx = idx+1; if idx <= 10 then { if MarketPosition != 0 and MarketPosition != MarketPosition[1] and (IsEntryName("매수1") == true or IsEntryName("매도1") == true) Then entry2 = False; } var5 = ma(C,100); if CrossUp(C,var5) Then { T = 1; S = 0; } if CrossDown(C,var5) Then { T = -1; S = 0; } if T == 1 Then { S = S+1; if idx >= 10 and entry2 == true and S == 10 Then { Entry2 = False; Buy("매수2"); } } if T == -1 Then { S = S+1; if idx >= 10 and entry2 == true and S == 10 Then { entry2 = False; Sell("매도2"); } } } #매수 손절식 if MarketPosition == 1 Then { ExitLong("bx5",AtLimit,EntryPrice+PriceScale*완전청산,"",5,1); ExitLong("bx6",AtStop,EntryPrice-PriceScale*손절가,"",5,1); } Else Lcnt = 0; #매도 손절식 if MarketPosition == -1 Then { ExitShort("sx5",AtLimit,EntryPrice-PriceScale*완전청산,"",5,1); ExitShort("sx6",AtStop,EntryPrice+PriceScale*손절가,"",5,1); } Else Hcnt = 0;
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-05-04 14:22:40

안녕하세요 예스스탁입니다. 1 작성하신 수식에는 10시16분봉이 첫봉입니다. 답변드린 수식에는 if Bdate != Bdate[1] Then가 영업일 변경시간기준 첫봉입니다. 적용하신 종목이 항셍과 같은 종목이면 영업일이 변경되는 봉은 오후 18시15분입니다. 10시16분이 if Bdate != Bdate[1] Then인 봉이 아닙니다. 수식에서 지정하신 101600부터 봉수를 카운트 하셔야 합니다. 2 수식에 매수1과 매도1이라는 명칭의 진입식이 없습니다. 매수와 매도를 매수1과 매도1로 변경하셔야 합니다. 3 input : 완전청산 (260); input : 손절가 (65); var : T1(0),T2(0); #var : tX(0),BH(0),SH(0); #수익 틱수조건 var : T21(0),T26(0),T23(0),T24(0),T25(0); #수익틱수 var : T11(0),T22(0),T33(0),T44(0),T55(0); #수익틱수 var : Tcond(false); # 시간제한 var : mav1(0),mav2(0),Lcnt(0),Hcnt(0),BH(0),SL(0); #손절식 조건 var : T(0),S(0),idx(0),entry2(False); # 딱 한번 매매 var1 = ma(c,0); var2 = ma(C,0); var3 = ma(C,0); var4 = ma(c,0); //시간타이머식 if (sdate != sdate[1] and stime >= 101600) or (sdate == sdate[1] and stime >= 101600 and stime[1] < 101600) Then { Tcond = true; idx = 0; entry2 = true; } idx = idx+1; if (sdate != sdate[1] and stime >= 172000) or (sdate == sdate[1] and stime >= 172000 and stime[1] < 172000) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if idx <= 10 then { if MarketPosition != 0 and MarketPosition != MarketPosition[1] and (IsEntryName("매수1") == true or IsEntryName("매도1") == true) Then entry2 = False; } if var1 > var2 and var1 > var3 and var1 > var4 and var4 > var2 Then T1 = 1; if var1 < var2 and var1 < var3 and var1 < var4 and var4 < var2 Then T1 = -1; var5 = ma(C,100); if CrossUp(C,var5) Then { T = 1; S = 0; } if CrossDown(C,var5) Then { T = -1; S = 0; } if Tcond == true then { if T1 == 1 and T1[1] == -1 Then buy("매수1"); if T1 == -1 and T1[1] == 1 Then sell("매도1"); if T == 1 Then { S = S+1; if idx >= 10 and S == 10 Then { if entry2 == true Then { Buy("매수2"); } Entry2 = False; } } if T == -1 Then { S = S+1; if idx >= 10 and S == 10 then { if entry2 == true Then { Sell("매도2"); } entry2 = False; } } } #매수 손절식 if MarketPosition == 1 Then { ExitLong("bx5",AtLimit,EntryPrice+PriceScale*완전청산,"",5,1); ExitLong("bx6",AtStop,EntryPrice-PriceScale*손절가,"",5,1); } Else Lcnt = 0; #매도 손절식 if MarketPosition == -1 Then { ExitShort("sx5",AtLimit,EntryPrice-PriceScale*완전청산,"",5,1); ExitShort("sx6",AtStop,EntryPrice+PriceScale*손절가,"",5,1); } Else Hcnt = 0; 즐거운 하루되세요 > kjdkdh 님이 쓴 글입니다. > 제목 : 검토좀 부탁합니다 > 안녕하세요 게시글 72215 와 기존 식을 추가 했습니다 이렇게 해도 저렇게 작동이 되지 않습니다 검토좀 해주시고요 문제점 1 틱차트 사용합니다 시간제한에 문제가 있습니다 문제점 2 문제점1의 문제를 해결하고자 게시글 72215 를 추가했는데도 역시 문제점이 해결되지 않습니다 참고로 봉갯수도 변경해보아도 같네요 이미지를 보시면 특정 이평선 위에 아래를 기준은 준것입니다 갯수제한 때문인지 작동이 되지 않습니다 수정좀 부탁합니다 input : 완전청산 (260); input : 손절가 (65); var : T1(0),T2(0); #var : tX(0),BH(0),SH(0); #수익 틱수조건 var : T21(0),T26(0),T23(0),T24(0),T25(0); #수익틱수 var : T11(0),T22(0),T33(0),T44(0),T55(0); #수익틱수 var : Tcond(false); # 시간제한 var : mav1(0),mav2(0),Lcnt(0),Hcnt(0),BH(0),SL(0); #손절식 조건 var : T(0),S(0),idx(0),entry2(False); # 딱 한번 매매 var1 = ma(c,0); var2 = ma(C,0); var3 = ma(C,0); var4 = ma(c,0); //시간타이머식 if (sdate != sdate[1] and stime >= 101600) or (sdate == sdate[1] and stime >= 101600 and stime[1] < 101600) Then Tcond = true; if (sdate != sdate[1] and stime >= 1720000) or (sdate == sdate[1] and stime >= 1720000 and stime[1] < 1720000) Then { Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if Tcond == true then { if var1 > var2 and var1 > var3 and var1 > var4 and var4 > var2 Then T1 = 1; if var1 < var2 and var1 < var3 and var1 < var4 and var4 < var2 Then T1 = -1; if T1 == 1 and T1[1] == -1 Then buy("매수"); if T1 == -1 and T1[1] == 1 Then sell("매도"); #################################################### #딱 한번 매매 if Bdate != Bdate[1] Then { idx = 0; entry2 = true; } idx = idx+1; if idx <= 10 then { if MarketPosition != 0 and MarketPosition != MarketPosition[1] and (IsEntryName("매수1") == true or IsEntryName("매도1") == true) Then entry2 = False; } var5 = ma(C,100); if CrossUp(C,var5) Then { T = 1; S = 0; } if CrossDown(C,var5) Then { T = -1; S = 0; } if T == 1 Then { S = S+1; if idx >= 10 and entry2 == true and S == 10 Then { Entry2 = False; Buy("매수2"); } } if T == -1 Then { S = S+1; if idx >= 10 and entry2 == true and S == 10 Then { entry2 = False; Sell("매도2"); } } } #매수 손절식 if MarketPosition == 1 Then { ExitLong("bx5",AtLimit,EntryPrice+PriceScale*완전청산,"",5,1); ExitLong("bx6",AtStop,EntryPrice-PriceScale*손절가,"",5,1); } Else Lcnt = 0; #매도 손절식 if MarketPosition == -1 Then { ExitShort("sx5",AtLimit,EntryPrice-PriceScale*완전청산,"",5,1); ExitShort("sx6",AtStop,EntryPrice+PriceScale*손절가,"",5,1); } Else Hcnt = 0;