This strategy utilizes the body size of candlesticks and the trend momentum indicator EMA to determine market trends and implement automated trading for buying low and selling high. Its basic idea is to chase rises in an uptrend and add long positions on dips in a downtrend.
The overall idea of this strategy is straightforward and easy to understand, with “momentum” and “tracking” as its main features. It determines the main market direction through the simple EMABOLL indicator and uses candlestick bodies to judge local adjustments, realizing efficient trading by buying low and selling high. The strategy has high stability and performs exceptionally well in cryptocurrencies, making it worthwhile for further testing and optimization.
/*backtest start: 2023-10-23 00:00:00 end: 2023-11-22 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //Author @divonn1994 strategy(title='Trend Follower Strategy v2 [divonn1994]', shorttitle='TrendFollowStrategyV2', overlay=false, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=100) //Important Constants for Classifying Candle Size---------------------------------------------------------------------------------------------------------------------------------------------- timesBigger = 2 crumbSize = 1400 crumbSize2 = 2100 bigCandleSize = 3800 //Key Alerts and Classifications of Candle Size and EMAs--------------------------------------------------------------------------------------------------------------------------------------- emaAlert = ta.ema(close, 8) > ta.ema(open, 8) ? 1 : 0 CandleSize = close * 1 - open * 1 previousCandleSize = close[1] * 1 - open[1] * 1 greenCandle = close > open ? 1 : 0 previousGreenCandle = close[1] > open[1] ? 1 : 0 crumb = (greenCandle==1 and CandleSize<=crumbSize) or (greenCandle==0 and -CandleSize<=crumbSize) ? 1 : 0 bigCrumb = (greenCandle==1 and CandleSize<=crumbSize2 and CandleSize>crumbSize) or (greenCandle==0 and -CandleSize<=crumbSize2 and -CandleSize>crumbSize) ? 1 : 0 previousCandleIsSmallCrumb = (previousGreenCandle==1 and previousCandleSize<=crumbSize) or (previousGreenCandle==0 and -previousCandleSize<=crumbSize) ? 1 : 0 previousCandleIsBigCrumb = (previousGreenCandle==1 and previousCandleSize<=crumbSize2 and previousCandleSize>crumbSize) or (previousGreenCandle==0 and -previousCandleSize<=crumbSize2 and -previousCandleSize>crumbSize) ? 1 : 0 bigCandle = (greenCandle==1 and previousCandleIsBigCrumb==1 and CandleSize>=math.abs(timesBigger*previousCandleSize)) or (greenCandle==1 and previousCandleIsSmallCrumb==1 and CandleSize>=bigCandleSize) or (greenCandle==1 and previousCandleIsSmallCrumb==0 and previousCandleIsBigCrumb==0 and CandleSize>=math.abs(timesBigger*previousCandleSize)) ? 1 : 0 //Engine (Secret Sauce)------------------------------------------------------------------------------------------------------------------------------------------------------------------------ buy = (crumb==0 and bigCrumb==0 and greenCandle==0) or (greenCandle==1 and bigCandle==1) or (emaAlert==0) ? 0 : 1 //Strategy------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if ta.crossover(buy, 0.5) strategy.entry('long', strategy.long, comment='long') if ta.crossunder(buy, 0.5) strategy.close('long') //Plot Strategy Behavior----------------------------------------------------------------------------------------------------------------------------------------------------------------------- plot(buy, color=color.new(color.silver, 0)) plot(0.5, color=color.new(color.fuchsia, 0))