커뮤니티

수식 부탁드립니다

프로필 이미지
사노소이
2025-08-01 18:00:38
209
글번호 192936
답변완료
타주기 적용 부탁드립니다. input : vidya_length(100); input : vidya_momentum(20); input : band_distance(2); input : up_trend_color(Green); input : down_trend_color(Red); input : shadow(true); var : pivot_left_bars(3),pivot_right_bars(0),source(0); var : pivot_line(Nan); var : volume_value(Nan); var : smoothed_value(Nan); var : is_trend_up(False); var : up_trend_volume(False); var : down_trend_volume(Nan); Array : liquidity_lines_low[500](0),liquidity_lines_high[500](0); pivot_left_bars = 3; pivot_right_bars = 3; source = close; var : al(0),atr_value(0); al = 1/200; atr_value = IFf(IsNan(atr_value[1]) == true,ma(TrueRange, 200) , al * TrueRange + (1 - al) * IFf(IsNaN(atr_value[1])==true,0,atr_value[1])); var : momentum(0),sum_pos_momentum(0),sum_neg_momentum(0),abs_cmo(0),alpha(0),vidya_v(0),vidya_value(0); momentum = source-source[1]; sum_pos_momentum = AccumN(IFf(momentum >= 0, momentum , 0), vidya_momentum); sum_neg_momentum = AccumN(IFf(momentum >= 0, 0, -momentum), vidya_momentum); abs_cmo = abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum)); alpha = 2 / (vidya_length + 1); vidya_v = alpha * abs_cmo / 100 * source + (1 - alpha * abs_cmo / 100) * iff(IsNan(vidya_v[1])==true,0,vidya_v[1]); vidya_value = ma(vidya_v, 15); var : upper_band(0),lower_band(0); upper_band = vidya_value + atr_value * band_distance; lower_band = vidya_value - atr_value * band_distance; // Detect trend direction using crossovers of source with bands if CrossUp(source, upper_band) Then is_trend_up = true ; if CrossDown(source, lower_band) Then is_trend_up = false ; // Set trend-based smoothing variable if is_trend_up == true Then smoothed_value = lower_band; if is_trend_up == False Then smoothed_value = upper_band; if is_trend_up != is_trend_up[1] Then smoothed_value = Nan; // Calculate pivot highs and lows for price action var : pivot_high(0),pivot_low(0); pivot_high = SwingHigh(1,high,pivot_left_bars, pivot_right_bars,pivot_left_bars+pivot_right_bars+1); pivot_low = SwingLow(1, close, pivot_left_bars, pivot_right_bars,pivot_left_bars+pivot_right_bars+1); if smoothed_value > 0 Then plot1(smoothed_value,"smoothed_value",iff(is_trend_up , up_trend_color ,down_trend_color)); Else NoPlot(1); var : tx(0); if is_trend_up == is_trend_up[1] and is_trend_up[1] != is_trend_up[2] Then { if is_trend_up == true Then { tx = Text_New(sDate,sTime,smoothed_value,"▲"); Text_SetStyle(tx,2,0); Text_SetColor(tx,up_trend_color); Text_SetSize(tx,20); } if is_trend_up == False Then { tx = Text_New(sDate,sTime,smoothed_value,"▼"); Text_SetStyle(tx,2,1); Text_SetColor(tx,down_trend_color); Text_SetSize(tx,20); } }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-08-05 08:41:29

안녕하세요 예스스탁입니다. 참조데이터로 기본종목과 같은 종목을 다른주기로 추가하고 아래식 적용하시면 됩니다. input : vidya_length(100); input : vidya_momentum(20); input : band_distance(2); input : up_trend_color(Green); input : down_trend_color(Red); input : shadow(true); var : pivot_left_bars(3,Data2),pivot_right_bars(0,Data2),source(0,Data2); var : pivot_line(Nan,Data2); var : volume_value(Nan,Data2); var : smoothed_value(Nan,Data2); var : is_trend_up(False,Data2); var : up_trend_volume(False,Data2); var : down_trend_volume(Nan,Data2); Array : liquidity_lines_low[500](0,Data2),liquidity_lines_high[500](0,Data2); pivot_left_bars = 3; pivot_right_bars = 3; source = data2(close); var : al(0,Data2),atr_value(0,Data2); al = 1/200; atr_value = data2(IFf(IsNan(atr_value[1]) == true,ma(TrueRange, 200) , al * TrueRange + (1 - al) * IFf(IsNaN(atr_value[1])==true,0,atr_value[1]))); var : momentum(0,Data2),sum_pos_momentum(0,Data2),sum_neg_momentum(0,Data2),abs_cmo(0,Data2),alpha(0,Data2),vidya_v(0,Data2),vidya_value(0,Data2); momentum = source-source[1]; sum_pos_momentum = data2(AccumN(IFf(momentum >= 0, momentum , 0), vidya_momentum)); sum_neg_momentum = data2(AccumN(IFf(momentum >= 0, 0, -momentum), vidya_momentum)); abs_cmo = data2(abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum))); alpha = 2 / (vidya_length + 1); vidya_v = data2(alpha * abs_cmo / 100 * source + (1 - alpha * abs_cmo / 100) * iff(IsNan(vidya_v[1])==true,0,vidya_v[1])); vidya_value = data2(ma(vidya_v, 15)); var : upper_band(0),lower_band(0); upper_band = vidya_value + atr_value * band_distance; lower_band = vidya_value - atr_value * band_distance; // Detect trend direction using crossovers of source with bands if CrossUp(source, upper_band) Then is_trend_up = true ; if CrossDown(source, lower_band) Then is_trend_up = false ; // Set trend-based smoothing variable if is_trend_up == true Then smoothed_value = lower_band; if is_trend_up == False Then smoothed_value = upper_band; if is_trend_up != is_trend_up[1] Then smoothed_value = Nan; // Calculate pivot highs and lows for price action var : pivot_high(0),pivot_low(0); pivot_high = data2(SwingHigh(1,high,pivot_left_bars, pivot_right_bars,pivot_left_bars+pivot_right_bars+1)); pivot_low = data2(SwingLow(1, close, pivot_left_bars, pivot_right_bars,pivot_left_bars+pivot_right_bars+1)); if smoothed_value > 0 Then plot1(smoothed_value,"smoothed_value",iff(is_trend_up , up_trend_color ,down_trend_color)); Else NoPlot(1); var : tx(0); if is_trend_up == is_trend_up[1] and is_trend_up[1] != is_trend_up[2] Then { if is_trend_up == true Then { tx = Text_New_Self(sDate,sTime,smoothed_value,"▲"); Text_SetStyle(tx,2,0); Text_SetColor(tx,up_trend_color); Text_SetSize(tx,20); } if is_trend_up == False Then { tx = Text_New_Self(sDate,sTime,smoothed_value,"▼"); Text_SetStyle(tx,2,1); Text_SetColor(tx,down_trend_color); Text_SetSize(tx,20); } } 즐거운 하루되세요 > 사노소이 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다 > 타주기 적용 부탁드립니다. input : vidya_length(100); input : vidya_momentum(20); input : band_distance(2); input : up_trend_color(Green); input : down_trend_color(Red); input : shadow(true); var : pivot_left_bars(3),pivot_right_bars(0),source(0); var : pivot_line(Nan); var : volume_value(Nan); var : smoothed_value(Nan); var : is_trend_up(False); var : up_trend_volume(False); var : down_trend_volume(Nan); Array : liquidity_lines_low[500](0),liquidity_lines_high[500](0); pivot_left_bars = 3; pivot_right_bars = 3; source = close; var : al(0),atr_value(0); al = 1/200; atr_value = IFf(IsNan(atr_value[1]) == true,ma(TrueRange, 200) , al * TrueRange + (1 - al) * IFf(IsNaN(atr_value[1])==true,0,atr_value[1])); var : momentum(0),sum_pos_momentum(0),sum_neg_momentum(0),abs_cmo(0),alpha(0),vidya_v(0),vidya_value(0); momentum = source-source[1]; sum_pos_momentum = AccumN(IFf(momentum >= 0, momentum , 0), vidya_momentum); sum_neg_momentum = AccumN(IFf(momentum >= 0, 0, -momentum), vidya_momentum); abs_cmo = abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum)); alpha = 2 / (vidya_length + 1); vidya_v = alpha * abs_cmo / 100 * source + (1 - alpha * abs_cmo / 100) * iff(IsNan(vidya_v[1])==true,0,vidya_v[1]); vidya_value = ma(vidya_v, 15); var : upper_band(0),lower_band(0); upper_band = vidya_value + atr_value * band_distance; lower_band = vidya_value - atr_value * band_distance; // Detect trend direction using crossovers of source with bands if CrossUp(source, upper_band) Then is_trend_up = true ; if CrossDown(source, lower_band) Then is_trend_up = false ; // Set trend-based smoothing variable if is_trend_up == true Then smoothed_value = lower_band; if is_trend_up == False Then smoothed_value = upper_band; if is_trend_up != is_trend_up[1] Then smoothed_value = Nan; // Calculate pivot highs and lows for price action var : pivot_high(0),pivot_low(0); pivot_high = SwingHigh(1,high,pivot_left_bars, pivot_right_bars,pivot_left_bars+pivot_right_bars+1); pivot_low = SwingLow(1, close, pivot_left_bars, pivot_right_bars,pivot_left_bars+pivot_right_bars+1); if smoothed_value > 0 Then plot1(smoothed_value,"smoothed_value",iff(is_trend_up , up_trend_color ,down_trend_color)); Else NoPlot(1); var : tx(0); if is_trend_up == is_trend_up[1] and is_trend_up[1] != is_trend_up[2] Then { if is_trend_up == true Then { tx = Text_New(sDate,sTime,smoothed_value,"▲"); Text_SetStyle(tx,2,0); Text_SetColor(tx,up_trend_color); Text_SetSize(tx,20); } if is_trend_up == False Then { tx = Text_New(sDate,sTime,smoothed_value,"▼"); Text_SetStyle(tx,2,1); Text_SetColor(tx,down_trend_color); Text_SetSize(tx,20); } }