This strategy triggers buy/sell signals by comparing the closing prices of the current candle and previous candle.
Specifically, if the current candle closes above the highest price of the previous candle, a buy signal is triggered. If the current candle closes below the lowest price of the previous candle, a sell signal is triggered.
The above is the basic trading logic of this strategy.
The strategy idea is simple and clear overall, using candlestick closing price to determine trend direction and also has stop loss/take profit to control risk, it can serve as a basic strategy for stocks and crypto trading. But with judgment solely based on one timeframe, it tends to generate false signals more easily. There is still much room for improvement by incorporating more factors and tuning parameters to enhance strategy performance.
/*backtest start: 2023-12-08 00:00:00 end: 2024-01-07 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy/Sell on Candle Close", overlay=true) var float prevLowest = na var float prevHighest = na var float slDistance = na var float tpDistance = na // Specify the desired timeframe here (e.g., "D" for daily, "H" for hourly, etc.) timeframe = "D" // Fetching historical data for the specified timeframe pastLow = request.security(syminfo.tickerid, timeframe, low, lookahead=barmerge.lookahead_on) pastHigh = request.security(syminfo.tickerid, timeframe, high, lookahead=barmerge.lookahead_on) if bar_index > 0 prevLowest := pastLow[1] prevHighest := pastHigh[1] currentClose = close if not na(prevLowest) and not na(prevHighest) slDistance := prevHighest - prevLowest tpDistance := 3 * slDistance // Adjusted for 1:3 risk-reward ratio // Buy trigger when current close is higher than previous highest if not na(prevLowest) and not na(prevHighest) and currentClose > prevHighest strategy.entry("Buy", strategy.long) strategy.exit("Buy TP/SL", "Buy", stop=prevLowest - slDistance, limit=prevHighest + tpDistance) // Sell trigger when current close is lower than previous lowest if not na(prevLowest) and not na(prevHighest) and currentClose < prevLowest strategy.entry("Sell", strategy.short) strategy.exit("Sell TP/SL", "Sell", stop=prevHighest + slDistance, limit=prevLowest - tpDistance) plot(prevLowest, color=color.blue, title="Previous Lowest") plot(prevHighest, color=color.red, title="Previous Highest")