커뮤니티

종목검색

프로필 이미지
마을
2025-11-17 10:19:05
84
글번호 228073
답변완료

두가지 문의 사항이 있습니다.
문의 1)
At = ATR(500); Mm = avg(C, 기간); Rg = At * Rt / 10; Chk = RngChk(Mm, Rg); Range중 = Chk == 0; Range거래량 = if(Range중, V, 0); 전체합 = sum(Range거래량); Range봉수 = sum(Range중); 평균거래량 = 전체합 / Range봉수; 상단 = Mm + Rg; 양봉 = C > O; 돌파 = C > 상단; 거래량급증 = V > 평균거래량 * 배수; A = BBandsUp(20, 2); B1 = eavg(A, 56); D = BBandsUp(40, 2); E = eavg(D, 56); F = BBandsUp(60, 2); G = eavg(F, 56); K = BBandsUp(90, 2); J = eavg(K, 56); T = BBandsUp(100, 2); Y = eavg(T, 56); R = (B1 + E + G + J + Y) / 5; Q = (C - O) / 3; 볼밴라인 = if(C > O, R - Q, R); 볼밴돌파 = H > 볼밴라인; 볼밴위 = C > 볼밴라인; Range중(1) && 돌파 && 양봉 && 거래량급증 && (볼밴돌파 or 볼밴위)
위 조건식을 만족하는 종목을 날짜가 나오게 30일치 한번에 검색할 수 있는 조건식으로 작성 부탁드립니다.
이때 rngchk 는 아래와 같이 작성되어져서 설정된 함수 입니다.
rngchk = A0=abs(C-기준)>범위; A1=abs(C(1)-기준)>범위; A2=abs(C(2)-기준)>범위; A3=abs(C(3)-기준)>범위; A4=abs(C(4)-기준)>범위; A5=abs(C(5)-기준)>범위; A6=abs(C(6)-기준)>범위; A7=abs(C(7)-기준)>범위; A8=abs(C(8)-기준)>범위; A9=abs(C(9)-기준)>범위; A10=abs(C(10)-기준)>범위; A11=abs(C(11)-기준)>범위; A12=abs(C(12)-기준)>범위; A13=abs(C(13)-기준)>범위; A14=abs(C(14)-기준)>범위; A15=abs(C(15)-기준)>범위; A16=abs(C(16)-기준)>범위; A17=abs(C(17)-기준)>범위; A18=abs(C(18)-기준)>범위; A19=abs(C(19)-기준)>범위; A0+A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16+A17+A18+A19

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
문의2) 문의 1에서 나온 함수식에 아래 조건을 추가 해서 30일치를 날짜가 나오게 검색하는 조건식으로 한 번 더 작성 부탁드립니다. 아래 조건식은 ms 강도 라는 조건을 추치로 만든 것입니다. 이 조건식의 값이 1봉전 기준으로 20 이하 입니다.
즉 , ms강도(1) <=20 이라는 조건을 추가 하고 싶습니다.
ms강도 = A_ATR = ATR(500); A_MM = avg(C, 12); A_RG = A_ATR * 10 / 10; A_CHK = RngChk(A_MM, A_RG);   A_횡보 = A_CHK == 0; A_횡보전 = A_횡보(1);   A_첫돌파 = A_횡보전 && !A_횡보;   // 1. Stochastics Slow %K (과열/침체 측정) // StochasticsSlow(12, 5)의 %K 라인 값 A_SlowK = StochasticsSlow(12, 5);   // 2. Stochastics Slow %D (신호선) A_SlowD = eavg(A_SlowK, 5);   // 3. 필터링된 %K 값 (일반적인 모멘텀 측정) A_MS_Score = A_SlowK;   // 로직: 첫 돌파 시 %K 값을 저장하고, 횡보가 깨지지 않는 한 값을 유지 if(A_첫돌파, A_MS_Score, if(!A_횡보, A_MS_Score, 0) ) // 라인 설정: 라인

종목검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-11-17 16:05:39

안녕하세요 예스스탁입니다. 종목검색은 최대 제공봉수가 500봉입니다. ATR(500)은 전봉까지 필요하므로 계산에 501봉이 필요하고 최근 30개봉안에 만족한것을 찾으면 531봉이 필요하게 됩니다. ATR기간등 조정하셔서 500봉 이내로 계산되게 하셔서 검색이 가능합니다. 1 . 사용자함수 함수명 : RngCheck 반환값형 : 숫자형 input : 기준(Numeric),범위(Numeric); var : C0(0),C1(0),C2(0),C3(0),C4(0); var : C5(0),C6(0),C7(0),C8(0),C9(0); var : C10(0),C11(0),C12(0),C13(0),C14(0); var : C15(0),C16(0),C17(0),C18(0),C19(0); C0=IFF(abs(C-기준)>범위,1,0); C1=IFF(abs(C[1]-기준)>범위,1,0); C2=IFF(abs(C[2]-기준)>범위,1,0); C3=IFF(abs(C[3]-기준)>범위,1,0); C4=IFF(abs(C[4]-기준)>범위,1,0); C5=IFF(abs(C[5]-기준)>범위,1,0); C6=IFF(abs(C[6]-기준)>범위,1,0); C7=IFF(abs(C[7]-기준)>범위,1,0); C8=IFF(abs(C[8]-기준)>범위,1,0); C9=IFF(abs(C[9]-기준)>범위,1,0); C10=IFF(abs(C[10]-기준)>범위,1,0); C11=IFF(abs(C[11]-기준)>범위,1,0); C12=IFF(abs(C[12]-기준)>범위,1,0); C13=IFF(abs(C[13]-기준)>범위,1,0); C14=IFF(abs(C[14]-기준)>범위,1,0); C15=IFF(abs(C[15]-기준)>범위,1,0); C16=IFF(abs(C[16]-기준)>범위,1,0); C17=IFF(abs(C[17]-기준)>범위,1,0); C18=IFF(abs(C[18]-기준)>범위,1,0); C19=IFF(abs(C[19]-기준)>범위,1,0); RngCheck = C0+C1+C2+C3+C4+C5+C6+C7+C8+ C9+C10+C11+C12+C13+C14+C15+C16+C17+C18+C19; 2 input : 기간(1),Rt(1),배수(1); var : at(0),mm(0),rg(0),chk(0),Range중(False),Range거래량(0); var : 전체합(0),Range봉수(0),평균거래량(0); var : 상단(0),양봉(False),돌파(False),거래량급증(False); var : A(0),b1(0),d(0),e(0),f(0),g(0),k(0),j(0),t(0),y(0),r(0),q(0); var : 볼밴라인(0),볼밴돌파(False),볼밴위(False); At = ATR(500); Mm = avg(C, 기간); Rg = At * Rt / 10; Chk = RngChk(Mm, Rg); Range중 = Chk == 0; Range거래량 = iff(Range중, V, 0); 전체합 = Accum(Range거래량); Range봉수 = Accum(iff(Range중,1,0)); 평균거래량 = 전체합 / Range봉수; 상단 = Mm + Rg; 양봉 = C > O; 돌파 = C > 상단; 거래량급증 = V > 평균거래량 * 배수; A = BollBandUp(20, 2); B1 = Ema(A, 56); D = BollBandUp(40, 2); E = Ema(D, 56); F = BollBandUp(60, 2); G = Ema(F, 56); K = BollBandUp(90, 2); J = Ema(K, 56); T = BollBandUp(100, 2); Y = Ema(T, 56); R = (B1 + E + G + J + Y) / 5; Q = (C - O) / 3; 볼밴라인 = iff(C > O, R - Q, R); 볼밴돌파 = H > 볼밴라인; 볼밴위 = C > 볼밴라인; if Range중[1] == true && 돌파 && 양봉 && 거래량급증 && (볼밴돌파 or 볼밴위) then var1 = sDate; Else var1 = 0; if CountIf(var1>0,30) >= 1 then Find(var1); 3 var : A_ATR(0),A_MM(0),A_RG(0),A_CHK(0); var : A_횡보(False),A_횡보전(False),A_첫돌파(False); var : A_SlowK(0),A_SlowD(0),A_MS_Score(0),ms강도(0); A_ATR = ATR(500); A_MM = ma(C, 12); A_RG = A_ATR * 10 / 10; A_CHK = RngChk(A_MM, A_RG); A_횡보 = A_CHK == 0; A_횡보전 = A_횡보[1]; A_첫돌파 = A_횡보전 && A_횡보 == False; A_SlowK = StochasticsK(12,5); A_SlowD = StochasticsD(12,5,5); A_MS_Score = A_SlowK; ms강도 = iff(A_첫돌파, A_MS_Score,iff(!A_횡보, A_MS_Score, 0)); if ms강도[1] <= 20 Then var1 = sDate; Else var1 = 0; if CountIf(var1>0,30) >= 1 Then Find(var1); 즐거운 하루되세요