커뮤니티

문의합니다.

프로필 이미지
민서홧팅
2024-01-31 10:08:27
1024
글번호 176244
답변완료
게시판에서 본 수식인데 시스템 수식을 종목검색식으로 바꾸려고 합니다. 스윙하이, 스윙로우로 박스권을 구한 후, 종가가 박스권을 상향 돌파하거나, 전저점 부근에 도달한 종목을 검색하려고 합니다. 1. 아래 수식에서 잘못된 점이 무엇인가요? 2. 스윙하이, 스윙로우의 반환되는 결과값이 무엇인가요? input: LeftL(5), RightL(5), period(200); var : k(0),HH(0),LL(0),MM(0),Xcond(False); Array: swingH[5](0), swingL[5](0), cntH[5](0), cntL[5](0);&#8203; for k = 1 to 4; { if swingHigh(k, C, LeftL, RightL, period) != -1 then swingH[k] = C; cntH = cntH +1; if SwingLow(k, C, LeftL, RightL, period) then != -1 then swingL[k] = C; cntL = cntL +1; } if SwingH[3] > 0 and SwingL[3] > 0 Then { if max(swingH[2],swingH[3],swingH[4]) <= swingH[1] * 1.03 and min(swingH[2],swingH[3],swingH[4]) >= swingH[1] * 0.97 and max(swingL[2],swingL[3],swingL[4]) <= swingL[1] * 1.03 and min(swingL[2],swingL[3],swingL[4]) >= swingL[1] * 0.97 Then { HH = SwingH[1]; LL = SwingL[1];; } if (CrossUp(C,HH) and abs(HH/LL-1) <= 0.15 and cntH>=2) or (abs((C/LL)-1) <= 0.05 and abs(HH/LL-1) > 0.3 and cntL >=2) Then Find(1);
검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-01-31 13:24:45

안녕하세요 예스스탁입니다. 1 cntH,cntL은 배열변수인데 작성하신 수식에서는 일반변수와 같이 사용되어 있습니다. 또한 해당 변수가 수식에서 어떤 용도로 사용되는지 알수 없습니다. 2 스윙하이와 스윙로우함수가 리턴하는 값은 고점값과 저점값입니다. 스윙하이는 지정한 왼쪽봉들과 오른쪽봉들의 값보다 가운데 봉값이 크면 해당봉의 값을 리턴하고 아니면 -1을 리턴합니다. 스윙로는는 지정한 왼쪽봉들과 오른쪽봉들의 값보다 가운데 봉값이 작으면 해당봉의 값을 리턴하고 아니면 -1을 리턴합니다. 함수에 대한 좀더 자세한 내용은 랭귀지 도움말을 참고하시기 바랍니다. 3 종목검색은 최대 제공봉수가 500봉 입니다. 종목검색 속성에서 검색에 필요한 최소기간에 500봉 지정하고 검색하셔야 합니다. 해당식으로 검색이 되려면 500봉 내에 최소 4번의 스윙하이 스윙로우가 발했했어야 합니다. 수식은 부하가 좀더 적게 걸리는 내용으로 수정해 드립니다. input: LeftL(5), RightL(5); var : k(0),HH(0),LL(0),MM(0),Xcond(False); Array: swingH[5](0), swingL[5](0), cntH[5](0), cntL[5](0); if swingHigh(k, C, LeftL, RightL, LeftL+RightL+1) != -1 then { For k = 4 DownTo 2 { swingH[k] = swingH[k-1]; } swingH[1] = C[RightL]; } if SwingLow(k, C, LeftL, RightL, LeftL+RightL+1) != -1 then { For k = 4 DownTo 2 { swingL[k] = swingL[k-1]; } swingL[1] = C[RightL]; } if SwingH[4] > 0 and SwingL[4] > 0 Then { if max(swingH[2],swingH[3],swingH[4]) <= swingH[1] * 1.03 and min(swingH[2],swingH[3],swingH[4]) >= swingH[1] * 0.97 and max(swingL[2],swingL[3],swingL[4]) <= swingL[1] * 1.03 and min(swingL[2],swingL[3],swingL[4]) >= swingL[1] * 0.97 Then { HH = SwingH[1]; LL = SwingL[1];; } if (CrossUp(C,HH) and abs(HH/LL-1) <= 0.15 ) or (abs((C/LL)-1) <= 0.05 and abs(HH/LL-1) > 0.3 ) Then Find(1); } 즐거운 하루되세요 > 민서홧팅 님이 쓴 글입니다. > 제목 : 문의합니다. > 게시판에서 본 수식인데 시스템 수식을 종목검색식으로 바꾸려고 합니다. 스윙하이, 스윙로우로 박스권을 구한 후, 종가가 박스권을 상향 돌파하거나, 전저점 부근에 도달한 종목을 검색하려고 합니다. 1. 아래 수식에서 잘못된 점이 무엇인가요? 2. 스윙하이, 스윙로우의 반환되는 결과값이 무엇인가요? input: LeftL(5), RightL(5), period(200); var : k(0),HH(0),LL(0),MM(0),Xcond(False); Array: swingH[5](0), swingL[5](0), cntH[5](0), cntL[5](0);&#8203; for k = 1 to 4; { if swingHigh(k, C, LeftL, RightL, period) != -1 then swingH[k] = C; cntH = cntH +1; if SwingLow(k, C, LeftL, RightL, period) then != -1 then swingL[k] = C; cntL = cntL +1; } if SwingH[3] > 0 and SwingL[3] > 0 Then { if max(swingH[2],swingH[3],swingH[4]) <= swingH[1] * 1.03 and min(swingH[2],swingH[3],swingH[4]) >= swingH[1] * 0.97 and max(swingL[2],swingL[3],swingL[4]) <= swingL[1] * 1.03 and min(swingL[2],swingL[3],swingL[4]) >= swingL[1] * 0.97 Then { HH = SwingH[1]; LL = SwingL[1];; } if (CrossUp(C,HH) and abs(HH/LL-1) <= 0.15 and cntH>=2) or (abs((C/LL)-1) <= 0.05 and abs(HH/LL-1) > 0.3 and cntL >=2) Then Find(1);