From 3e39261fd5eb0e3e80be8dcfe93a7a9fd2f9273d Mon Sep 17 00:00:00 2001 From: "Bobby (aider)" Date: Sat, 8 Feb 2025 09:52:21 -0800 Subject: [PATCH] feat: Add Sunny Bands Strategy with risk management and trading rules --- pinescripts/Sunny_Bands_Strategy.pine | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 pinescripts/Sunny_Bands_Strategy.pine diff --git a/pinescripts/Sunny_Bands_Strategy.pine b/pinescripts/Sunny_Bands_Strategy.pine new file mode 100644 index 0000000..3b9b893 --- /dev/null +++ b/pinescripts/Sunny_Bands_Strategy.pine @@ -0,0 +1,46 @@ +//@version=5 +strategy("Sunny Bands Strategy", shorttitle="SunnyB Strategy", overlay=true, margin_long=100, margin_short=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100) + +// Strategy Inputs +length = input.int(50, "DMA Length", group="Strategy Parameters") +atr_multiplier = input.float(1.5, "ATR Multiplier", group="Strategy Parameters") +smooth_factor = input.int(2, "Smoothing Factor", group="Strategy Parameters") +stop_loss_mult = input.float(1.0, "Stop Loss (ATR)", group="Risk Management") +take_profit_mult = input.float(2.0, "Take Profit (ATR)", group="Risk Management") +trade_size_pct = input.float(100, "Position Size (% Equity)", step=10, group="Risk Management") / 100 + +// Include original indicator logic +ema1 = ta.ema(close, length) +dma = ta.ema(ema1, smooth_factor) +atr = ta.atr(length) +upper_band = dma + (atr * atr_multiplier) +lower_band = dma - (atr * atr_multiplier) + +// Strategy Calculations +bullish_signal = ta.crossover(close, lower_band) +bearish_signal = ta.crossunder(close, upper_band) +price_at_entry = close +stop_loss_level = price_at_entry - (atr * stop_loss_mult) +take_profit_level = price_at_entry + (atr * take_profit_mult) + +// Strategy Rules +if bullish_signal + strategy.entry("Long", strategy.long, qty=strategy.equity * trade_size_pct / close) + +if strategy.position_size > 0 + strategy.exit("Exit", "Long", + stop=stop_loss_level, + limit=take_profit_level) + +if bearish_signal + strategy.close("Long") + +// Visual Elements +plot(dma, "DMA", color=color.new(#009688, 0)) +plot(upper_band, "Upper Band", color=color.new(#FF5252, 0)) +plot(lower_band, "Lower Band", color=color.new(#4CAF50, 0)) +fill(plot(upper_band), plot(lower_band), color.new(#673AB7, 90), "Band Area") + +// Plot trading levels +plot(strategy.position_size > 0 ? stop_loss_level : na, "Stop Loss", color=color.red, style=plot.style_linebr) +plot(strategy.position_size > 0 ? take_profit_level : na, "Take Profit", color=color.green, style=plot.style_linebr)