커뮤니티

오류 수정 부탁드립니다

프로필 이미지
사노소이
2025-04-14 16:19:03
252
글번호 190105
답변완료
오류창에 이렇게 나오네요. 수정 부탁드릴께요. "18줄에 선언되지 않은 이름 gaussian_filter 가 사용되었습니다." > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 부탁드립니다 > 안녕하세요 예스스탁입니다. 화면 중앙에 표시되는 내용은 작성이 되지 않습니다. 1 지표 input : len(30); input : mode("AVG");#["AVG", "MEADIAN", "MODE"] input : distance(3); input : show_retest(false); input : up(rgb(40, 218, 150)); input : dn(Blue); Array : g_value[100](0); var : volatility(0),lower_band(0),upper_band(0),trend_line(0),trend(False); var : stp(0),gf(0),i(0),g_f(0),value(0); var : coeff(0),score(0),color(0),tx(0); volatility = ma(H-L,100); #multi_trend(src, period) => for stp = 0 to 20 step 1 { gf = gaussian_filter(close, (len + stp), 10); g_value[stp] = gf; } coeff = 0.05; score = 0.0; for i = 0 to 21 - 1 { g_f = g_value[i]; if g_f > g_value[0] Then score = score+coeff; } color = iff(score > 0.5,dn,up); if mode == "AVG" Then value = AverageArray(g_value,21); if mode == "MEADIAN" Then value = MedianArray(g_value,21); if mode == "MODE" Then value = ModeArray(g_value,21,-1); lower_band = value - volatility * distance; upper_band = value + volatility * distance; if CrossUp(C,upper_band) Then trend = true; if CrossDown(close, lower_band) Then trend = false; trend_line = IFF(trend , lower_band,iff(Trend == False,upper_band,Nan)); plot1(value,"avg",color,Def,6); if trend == trend[1] Then plot2(trend_line,"trend_line",iff(close > trend_line,up,dn),Def,6); Else NoPlot(2); plot3(trend_line,"trend_line2",IFf(close > trend_line , up , dn),Def,1); if CrossDown(close, trend_line) Then { tx = text_new(sDate,sTime,trend_line,"▼"); Text_SetStyle(tx,2,1); Text_SetColor(tx, dn); Text_SetSize(tx,20); } if CrossUp(close, trend_line) Then { tx = text_new(sDate,sTime,trend_line,"▲"); Text_SetStyle(tx,2,0); Text_SetColor(tx,up); Text_SetSize(tx,20); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-04-14 17:39:35

안녕하세요 예스스탁입니다. 이전 답변에 사용자함수에 대한 설명이 빠져있었습니다. 아래 내용으로 사용자함수를 만드시고 지표와 시스템 적용하시면 됩니다. 사용자함수명 : gaussian_filter 반환값형 : 숫자형 input : src(Numeric),length(Numeric),sigma(Numeric); var : total(0),pi(0),sum(0),i(0),weight(0); Array : weights[100](0); total = 0; pi = pie; for i = 0 to length - 1 { weight = exp(-0.5 * pow((i - length / 2) / sigma, 2.0)) / sqrt(sigma * 2.0 * pi); weights[i] = weight; total = total + weight; } // Normalize weights for i = 0 to length - 1 { weights[i] = weights[i] / total; } // Apply Gaussian filter to the source series sum = 0; for i = 0 to length - 1 { sum = sum + close[i] * weights[i]; } gaussian_filter = sum; 즐거운 하루되세요 > 사노소이 님이 쓴 글입니다. > 제목 : 오류 수정 부탁드립니다 > 오류창에 이렇게 나오네요. 수정 부탁드릴께요. "18줄에 선언되지 않은 이름 gaussian_filter 가 사용되었습니다." > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 부탁드립니다 > 안녕하세요 예스스탁입니다. 화면 중앙에 표시되는 내용은 작성이 되지 않습니다. 1 지표 input : len(30); input : mode("AVG");#["AVG", "MEADIAN", "MODE"] input : distance(3); input : show_retest(false); input : up(rgb(40, 218, 150)); input : dn(Blue); Array : g_value[100](0); var : volatility(0),lower_band(0),upper_band(0),trend_line(0),trend(False); var : stp(0),gf(0),i(0),g_f(0),value(0); var : coeff(0),score(0),color(0),tx(0); volatility = ma(H-L,100); #multi_trend(src, period) => for stp = 0 to 20 step 1 { gf = gaussian_filter(close, (len + stp), 10); g_value[stp] = gf; } coeff = 0.05; score = 0.0; for i = 0 to 21 - 1 { g_f = g_value[i]; if g_f > g_value[0] Then score = score+coeff; } color = iff(score > 0.5,dn,up); if mode == "AVG" Then value = AverageArray(g_value,21); if mode == "MEADIAN" Then value = MedianArray(g_value,21); if mode == "MODE" Then value = ModeArray(g_value,21,-1); lower_band = value - volatility * distance; upper_band = value + volatility * distance; if CrossUp(C,upper_band) Then trend = true; if CrossDown(close, lower_band) Then trend = false; trend_line = IFF(trend , lower_band,iff(Trend == False,upper_band,Nan)); plot1(value,"avg",color,Def,6); if trend == trend[1] Then plot2(trend_line,"trend_line",iff(close > trend_line,up,dn),Def,6); Else NoPlot(2); plot3(trend_line,"trend_line2",IFf(close > trend_line , up , dn),Def,1); if CrossDown(close, trend_line) Then { tx = text_new(sDate,sTime,trend_line,"▼"); Text_SetStyle(tx,2,1); Text_SetColor(tx, dn); Text_SetSize(tx,20); } if CrossUp(close, trend_line) Then { tx = text_new(sDate,sTime,trend_line,"▲"); Text_SetStyle(tx,2,0); Text_SetColor(tx,up); Text_SetSize(tx,20); }