답변완료
수식 부탁드립니다.
//──────────────────────────────────────────────// INPUTS//──────────────────────────────────────────────use_long = input.bool(true, "Use Long Settings", group="Strategy")use_short = input.bool(true, "Use Short Settings", group="Strategy")use_dynamic_mult = input.bool(true, "Use Dynamic Multiplier", group="Dynamic Adaptation")len_long = input.int(20, "Long Length", group="Long Settings")mult_long = input.float(1.0, "Long Multiplier", step=0.1, group="Long Settings")len_short = input.int(20, "Short Length", group="Short Settings")mult_short = input.float(1.0, "Short Multiplier", step=0.1, group="Short Settings")src = close//──────────────────────────────────────────────// Dynamic Multiplier//──────────────────────────────────────────────f_dynamic_mult(base_mult, atr_length, use_dynamic) => if use_dynamic volatility_factor = ta.atr(atr_length) / ta.atr(atr_length)[20] adjusted_mult = base_mult * math.sqrt(volatility_factor) math.min(math.max(adjusted_mult, base_mult * 0.5), base_mult * 2) else base_multdynamic_mult_long = f_dynamic_mult(mult_long, len_long, use_dynamic_mult)dynamic_mult_short = f_dynamic_mult(mult_short, len_short, use_dynamic_mult)//──────────────────────────────────────────────// ATR Band//──────────────────────────────────────────────deltaAtr_long = dynamic_mult_long * ta.atr(len_long)deltaAtr_short = dynamic_mult_short * ta.atr(len_short)midb_long = ta.sma(src, len_long)midb_short = ta.sma(src, len_short)upperb_long = midb_long + deltaAtr_longlowerb_long = midb_long - deltaAtr_longupperb_short = midb_short + deltaAtr_shortlowerb_short = midb_short - deltaAtr_short//──────────────────────────────────────────────// Trend Detection//──────────────────────────────────────────────trendUp_long = close > upperb_longtrendDown_long = close < lowerb_longtrendUp_short = close > upperb_shorttrendDown_short = close < lowerb_short//──────────────────────────────────────────────// Trend State Machine//──────────────────────────────────────────────var int trendState = 0trendState := use_long and trendUp_long ? 1 : use_long and trendDown_long ? -1 : use_short and trendUp_short ? 1 : use_short and trendDown_short ? -1 : nz(trendState[1], 0)//──────────────────────────────────────────────// Signal start detection//──────────────────────────────────────────────trend_started = trendState != trendState[1]long_signal = trend_started and trendState == 1short_signal = trend_started and trendState == -1//──────────────────────────────────────────────// Signal Markers//──────────────────────────────────────────────plotshape(long_signal, title="Long Signal", style=shape.labelup, location=location.belowbar, color=color.blue, size=size.small, text="LONG", textcolor = color.white)plotshape(short_signal, title="Short Signal", style=shape.labeldown, location=location.abovebar, color=color.red, size=size.small, text="SHORT", textcolor = color.white)//──────────────────────────────────────────────// ATR Band Visualization//──────────────────────────────────────────────// Long Bandsplot(use_long ? midb_long : na, title="Long Mid (Length)", color=color.new(color.blue, 0), linewidth=1, style=plot.style_line)plot(use_long ? upperb_long : na, title="Long Upper ATR Band", color=color.new(color.blue, 40), linewidth=1, style=plot.style_line)plot(use_long ? lowerb_long : na, title="Long Lower ATR Band", color=color.new(color.blue, 40), linewidth=1, style=plot.style_line)// Short Bandsplot(use_short ? midb_short : na, title="Short Mid (Length)", color=color.new(color.red, 0), linewidth=1, style=plot.style_line)plot(use_short ? upperb_short : na, title="Short Upper ATR Band", color=color.new(color.red, 40), linewidth=1, style=plot.style_line)plot(use_short ? lowerb_short : na, title="Short Lower ATR Band", color=color.new(color.red, 40), linewidth=1, style=plot.style_line)
2026-01-08
291
글번호 229653
지표