This strategy is based on single moving average and Bollinger Bands indicator. It generates buy and sell signals when price breaks through the upper or lower band of Bollinger Bands. Also it incorporates the direction of moving average to determine the trend, only taking long when MA is rising and short when MA is falling.
The strategy mainly uses the following indicators for judgment:
The specific trading signals are:
By combining the trend and breakout, the trading signal becomes more reliable and avoids false breakout.
In general this is a simple but practical strategy suitable for most people. With some tuning and optimizations it can be more robust and adaptive to more market situations. It is a strategy worth recommending.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-18 19:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD") s=input(title="s",defval=90) p=input(title="p",type=float,defval=.9,step=.1) sa=sma(close,s) plot(sa,color=red,linewidth=3) band=stdev(close,s)*p plot(band+sa,color=lime,title="") plot(-band+sa,color=lime,title="") // ===Strategy Orders============================================= ======== inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na longCondition = crossover(close,sa+band) and rising(sa,5) shortCondition = crossunder(close,sa-band) and falling(sa,5) crossmid = cross(close,sa) strategy.entry(id = "Long", long=true, when = longCondition) strategy.close(id = "Long", when = shortCondition) strategy.entry(id = "Short", long=false, when = shortCondition) strategy.close(id = "Short", when = longCondition) strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)