커뮤니티

수식문의 드립니다.

프로필 이미지
우니야
2020-03-08 14:58:23
404
글번호 136682
답변완료
종가가 최근 20봉중 5회이상 볼린저밴드 하단보다 작고 5일 이평선이 20일 이평선을 첫번째로 상향 돌파할때만 매수하고 종가가 최근 20봉중 5회이상 볼린저밴드 상단보다 크고 5일 이평선이 20일 이평선을 첫번째로 하향 돌파할때만 매도 하려고 합니다. if countif(c > bbup,20)==5 이게 잘못된것 같은데.. 어떻게 바꿔야 할지 모르겠네요 수정 좀 부탁드립니다. Input : Period(20), MultiD(2),P1(5),P2(20); var : BBmd(0),BBup(0),BBdn(0),mav1(0),mav2(0); BBmd = ma(C,Period); BBup = BollBandUp(Period,MultiD); BBdn = BollBandDown(Period,MultiD); mav1 = ma(C,P1); mav2 = ma(C,P2); if crossup(c,bbup) Then var1 = 0; if countif(c > bbup,20)==5 and CrossDown(mav1,mav2) Then { var1 = var1+1; if var1 == 1 Then sell(); } if CrossDown(c,bbdn) Then var2 = 0; if countif(c < bbdn,20)==5 and CrossUp(mav1,mav2) Then { var2 = var2+1; if var2 == 1 Then buy(); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-09 17:44:17

안녕하세요 예스스탁입니다. 1 countif(c > bbup,20)==5은 20봉중 5개봉이라는 의미입니다. 조건만족횟수가 5회 이상이므로 countif(c > bbup,20)>=5로 지정하셔야 합니다. 2 이평 골드/데드의 횟수가 상단/하단 돌파 후 첫번째이면 아래와 같이 조건을 지정하셔야 합니다. Input : Period(20), MultiD(2),P1(5),P2(20); var : BBmd(0),BBup(0),BBdn(0),mav1(0),mav2(0); BBmd = ma(C,Period); BBup = BollBandUp(Period,MultiD); BBdn = BollBandDown(Period,MultiD); mav1 = ma(C,P1); mav2 = ma(C,P2); if crossup(c,bbup) Then var1 = 0; if CrossDown(mav1,mav2) Then { var1 = var1+1; if var1 == 1 and countif(c > bbup,20)>=5 Then sell(); } if CrossDown(c,bbdn) Then var2 = 0; if CrossUp(mav1,mav2) Then { var2 = var2+1; if var2 == 1 and countif(c < bbdn,20)>=5 Then buy(); } 즐거운 하루되세요 > 우니야 님이 쓴 글입니다. > 제목 : 수식문의 드립니다. > 종가가 최근 20봉중 5회이상 볼린저밴드 하단보다 작고 5일 이평선이 20일 이평선을 첫번째로 상향 돌파할때만 매수하고 종가가 최근 20봉중 5회이상 볼린저밴드 상단보다 크고 5일 이평선이 20일 이평선을 첫번째로 하향 돌파할때만 매도 하려고 합니다. if countif(c > bbup,20)==5 이게 잘못된것 같은데.. 어떻게 바꿔야 할지 모르겠네요 수정 좀 부탁드립니다. Input : Period(20), MultiD(2),P1(5),P2(20); var : BBmd(0),BBup(0),BBdn(0),mav1(0),mav2(0); BBmd = ma(C,Period); BBup = BollBandUp(Period,MultiD); BBdn = BollBandDown(Period,MultiD); mav1 = ma(C,P1); mav2 = ma(C,P2); if crossup(c,bbup) Then var1 = 0; if countif(c > bbup,20)==5 and CrossDown(mav1,mav2) Then { var1 = var1+1; if var1 == 1 Then sell(); } if CrossDown(c,bbdn) Then var2 = 0; if countif(c < bbdn,20)==5 and CrossUp(mav1,mav2) Then { var2 = var2+1; if var2 == 1 Then buy(); }