커뮤니티

수정문의

프로필 이미지
ksks
2026-04-08 23:48:37
533
글번호 231518
답변완료

Input:

Bandwidth(8),// 가우시안 커널의 대역폭

mult(2),// 엔벨로프 승수

src(C);// 적용 가격


Var:sum_w(0), sum_wy(0), y_hat(0), i(0), w(0),M5(0), M60(0),

upper(0), lower(0), mae_val(0),

TX(0), signal_up(False);


M5 = WMA(C, 5);

M60 = WMA(C, 60);

// 1. 가우시안 가중치 회귀 계산 (머신러닝 커널 회귀)

sum_w = 0;

sum_wy = 0;

For i = 0 to 25 {

// Bandwidth를 사용하여 가중치 계산

w = exp(-(pow(i, 2) / (2 * pow(Bandwidth, 2))));

sum_w = sum_w + w;

sum_wy = sum_wy + (src[i] * w);

}


If sum_w > 0 Then y_hat = sum_wy / sum_w;

Else y_hat = src;


// 2. 변동성(MAE) 기반 엔벨로프 구축

mae_val = Ma(abs(src - y_hat), 20);

upper = y_hat + (mae_val * mult);

lower = y_hat - (mae_val * mult);



Condition1 = False;

if h >= upper Then

{

Condition1 = true;

if h >= upper and (C < O or (C > O and C <= C[1]*1.04)) Then

Condition1 = False;

}


if h > upper and CountIf(Condition1==False,5)[1] == 5 and

c >= c[1]*1.08 and

v >= v[1]*(400/100) and C>O and

C > y_hat Then

Find(1);

=================================================================

위 수식은 8%이상 종가로 상승하는 날의 고가가 가우시안 채널의 상단을 돌파하되

앞 5봉이내에서 음봉이나 4%미만 상승하는 종가의 고가로 돌파하는 것은 무시하는 검색에 잘 쓰고 있읍니다.

쓰던 중 개선할 점이 있어 수정/추가 부탁을 드립니다 :

   - 1봉전 기준,  앞 20봉이내에서는 "종가8%이상 상승+고가가 상단돌파"가 없을 것.

     즉, 21봉 중 처음으로 상단돌파하는 봉을 검색.(거래량 400%는 무시, 여타 조건은 위와 동일)

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

예스스탁 예스스탁 답변

2026-04-09 12:56:28

안녕하세요 예스스탁입니다. Input: Bandwidth(8),// 가우시안 커널의 대역폭 mult(2),// 엔벨로프 승수 src(C);// 적용 가격 Var:sum_w(0), sum_wy(0), y_hat(0), i(0), w(0),M5(0), M60(0), upper(0), lower(0), mae_val(0), TX(0), signal_up(False); M5 = WMA(C, 5); M60 = WMA(C, 60); // 1. 가우시안 가중치 회귀 계산 (머신러닝 커널 회귀) sum_w = 0; sum_wy = 0; For i = 0 to 25 { // Bandwidth를 사용하여 가중치 계산 w = exp(-(pow(i, 2) / (2 * pow(Bandwidth, 2)))); sum_w = sum_w + w; sum_wy = sum_wy + (src[i] * w); } If sum_w > 0 Then y_hat = sum_wy / sum_w; Else y_hat = src; // 2. 변동성(MAE) 기반 엔벨로프 구축 mae_val = Ma(abs(src - y_hat), 20); upper = y_hat + (mae_val * mult); lower = y_hat - (mae_val * mult); Condition1 = False; if h >= upper Then { Condition1 = true; if h >= upper and (C < O or (C > O and C <= C[1]*1.04)) Then Condition1 = False; } if h >= upper and C >= C[1]*1.08 Then Condition2 = true; Else Condition2 = False; if h > upper and CountIf(Condition1==False,5)[1] == 5 and CountIf(Condition2 == true,20)[1] == 0 and c >= c[1]*1.08 and v >= v[1]*(400/100) and C>O and C > y_hat Then Find(1); 즐거운 하루되세요