커뮤니티

슈퍼트렌드 조건검색

프로필 이미지
웬즈데이
2025-11-10 14:26:01
65
글번호 227832
답변완료

안녕하세요! 기본적인 질문 드려서 죄송합니다 ㅠ
슈퍼트렌드 종목검색을 만들어서 쓰고 싶은데 슈퍼트렌드 (12,3) / (11,2) / (10,1) 이렇게 3개선 위에 있는 종목을 검색하고 싶습니다
그래서 찾아보니 밑에 함수를 찾았고 이걸 숫자만 위에 3개로 바꿔서 조건검색 A and B and C 로 했더니 너무 많은 종목이 검색됩니다
돌파한 종목말고 그냥 3개선 모두 위에 현재가가 있는 종목을 검색하고 싶습니다 감사합니다 좋은 하루 되세요!
input : AtrPeriod(11),factor(2); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then direction = 1; if C < LowerBand Then direction = -1; if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; if c > supertrend Then Find(1); }

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

예스스탁 예스스탁 답변

2025-11-10 15:22:16

안녕하세요 예스스탁입니다. 1 현재가가 3개의 슈퍼트렌드선 위에 있는 종목을 찾는식입니다. 종목검색 속성에서 검색에 필요한 최소기간에 봉수 넉넉히 500개 지정하고 검색하시기 바랍니다. 종목검색은 최대 제공봉수가 500입니다.

해당 내용 3개선 위에 있으면 검색되므로 종목이 많이 검색됩니다.
2 input : period1(12),multiplier1(3); input : period2(11),multiplier2(2); input : period3(10),multiplier3(1); var : src(0); var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0); var : prevSuperTrend1(0), direction1(0),alpha1(0),source1(0),SuperTrend1(C); var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0); var : prevSuperTrend2(0), direction2(0),alpha2(0),source2(0),SuperTrend2(C); var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0); var : prevSuperTrend3(0), direction3(0),alpha3(0),source3(0),SuperTrend3(C); var : A(0),A1(0),A2(0),B(0),B1(0),B2(0); src = (H+L)/2; if CurrentBar > 1 Then { alpha1 = 1 / period1 ; ATrV1 = IFf(IsNan(ATrV1[1]) == true, ma(TrueRange,period1) , alpha1 * TrueRange + (1 - alpha1) * IFf(isnan(ATrV1[1])==true,0,ATrV1[1])); upperBand1 = src + multiplier1 * AtrV1; lowerBand1 = src - multiplier1 * AtrV1; prevLowerBand1 = lowerBand1[1]; prevUpperBand1 = upperBand1[1]; if lowerBand1 > prevLowerBand1 or close[1] < prevLowerBand1 Then lowerBand1 = lowerBand1; Else lowerBand1 = prevLowerBand1; if upperBand1 < prevUpperBand1 or close[1] > prevUpperBand1 Then upperBand1 = upperBand1; Else upperBand1 = prevUpperBand1; if C > UpperBand1 Then direction1 = 1; if C < LowerBand1 Then direction1 = -1; if direction1 == 1 Then SuperTrend1 = lowerband1; Else SuperTrend1 = upperband1; alpha2 = 1 / period2 ; ATRV2 = IFf(IsNan(ATRV2[1]) == true, ma(TrueRange,period2) , alpha2 * TrueRange + (1 - alpha2) * IFf(isnan(ATRV2[1])==true,0,ATRV2[1])); upperBand2 = src + multiplier2 * AtrV2; lowerBand2 = src - multiplier2 * AtrV2; prevLowerBand2 = lowerBand2[1]; prevUpperBand2 = upperBand2[1]; if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then lowerBand2 = lowerBand2; Else lowerBand2 = prevLowerBand2; if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then upperBand2 = upperBand2; Else upperBand2 = prevUpperBand2; if C > UpperBand2 Then direction2 = 1; if C < LowerBand2 Then direction2 = -1; if direction2 == 1 Then SuperTrend2 = lowerband2; Else SuperTrend2 = upperband2; alpha3 = 1 / period3 ; ATRV3 = IFf(IsNan(ATRV3[1]) == true, ma(TrueRange,period3) , alpha3 * TrueRange + (1 - alpha3) * IFf(isnan(ATRV3[1])==true,0,ATRV3[1])); upperBand3 = src + multiplier3 * AtrV3; lowerBand3 = src - multiplier3 * AtrV3; prevLowerBand3 = lowerBand3[1]; prevUpperBand3 = upperBand3[1]; if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then lowerBand3 = lowerBand3; Else lowerBand3 = prevLowerBand3; if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then upperBand3 = upperBand3; Else upperBand3 = prevUpperBand3; if C > UpperBand3 Then direction3 = 1; if C < LowerBand3 Then direction3 = -1; if direction3 == 1 Then SuperTrend3 = lowerband3; Else SuperTrend3 = upperband3; if C > SuperTrend1 and C > SuperTrend2 and C > SuperTrend3 Then Find(1); } 즐거운 하루되세요
프로필 이미지

웬즈데이

2025-11-10 15:52:53

혹시
검색에 필요한 최소기간 봉수가 뜻하는게 어떤걸까요?
저는 현재봉을 보고 싶어서
0봉을 당연히 해야하는줄 알았는데 500봉으로 하니 결과가 다르네요
정확한 정의를 알고 싶습니다!
프로필 이미지

예스스탁 예스스탁 답변

2025-11-10 16:20:08

안녕하세요 예스스탁입니다. 1 차트를 500봉 봉으로 여시는것과 같습니다. 검색에 필요한 최소기간에 500으로 지정하면 각 종목 최근 500봉을 조회해서 계산하게 됩니다. 지표에 따라 과거봉의 갯수가 현재봉의 값에 영향을 주는 경우가 있습니다. 이런 계산내용을 사용하는 지표들의 경우 검색에 제공되는 최대봉수로 지정해 검색 후에 차트도 동일한 500봉 조회해서 비교해 보셔야 합니다. 2 검색에 필요한 최소기간과 기준봉은 다릅니다. 기준봉은 0으로 지정하면 현재 조건이 만족한 종목을 찾고 1이면 1봉전, 2이면 2봉전 순입니다. 즉 기준봉은 조건만족시점을 지정하는 옵션이고 검색에 필요한 최소기간은 사용하는 데이터의 갯수를 지정하는 옵션입니다. 즐거운 하루되세요