Freqtrade Strategy

ClucMay72018

5m candlesDip buyingSpot, long only

Tested 1 Jun 2023 – 30 May 2025
Rank 13 of 27 by return

ClucMay72018 turned $1,000 into $874 (−12.6%) over 729 days, while holding Bitcoin returned +288.1% and an equal mix of the ten coins +194.8%. Its worst drawdown was 26.3%, a substantial dip to sit through. It won 79% of its trades yet still lost money, because its few losing trades were much larger than its many small wins.

ClucMay72018 account balance compared with holding Bitcoin$0$1,000$2,000$3,000$4,000JulOctJan 2024AprJulOctJan 2025AprClucMay72018 $874BTC hold $3,880
Account balance from $1,000 (closed trades, daily). Dashed line: $1,000 held in BTC over the same days.
Total return−12.6%$874 final balance
Max drawdown26.3%26 Dec 2023 to 5 Aug 2024
Win rate78.9%408 wins / 109 losses
Profit factor0.87Gross wins ÷ gross losses
Trades5170.7 per day
Average trade−0.12%after fees
Average hold11mwinners 5m, losers 32m
Annualised (CAGR)−6.5%Sharpe -0.72 · Sortino -0.96

How ClucMay72018 trades

ClucMay72018 buys when price closes more than 1.5% below the lower Bollinger Band while trading under its 50-period EMA, and volume is not abnormally high. It sells as soon as price recovers above the middle band, or at a 1% take-profit.

One of the best-known community strategies. Small, frequent targets with a 5% stoploss make it a high-win-rate, low-payoff system: a handful of stopouts can erase many small wins.

Rules at a glance

Indicators
Bollinger Bands 20/2, EMA 50, Volume filter
Take-profit (minimal ROI)
1% from entry
Stoploss
−5%
Trailing stop
Off
Exit signal
Used

Results by month

Profit or loss in USDT for trades closed in each month.

JFMAMJJASOND2023-6+14+26+0+22+30+342024-94-2-61-113+0+8+24-22+2+10+18+802025+19-103-8+7-11

Results by coin

PairTradesWin rateProfit (USDT)Avg. hold
SOL/USDT5384.9%+20.289m
BTC/USDT1181.8%+6.8510m
XRP/USDT7383.6%+3.9113m
ADA/USDT6583.1%−5.965m
BNB/USDT2680.8%−9.887m
AVAX/USDT6177.0%−11.1811m
DOGE/USDT7876.9%−21.4615m
ETH/USDT3073.3%−31.0012m
DOT/USDT5974.6%−33.779m
LINK/USDT6173.8%−43.8914m

Why trades closed

Exit reasonTradesWin rateProfit (USDT)
Take-profit (ROI)399100.0%+798.56
Exit signal3327.3%−42.96
Stoploss850.0%−881.71

The code

ClucMay72018 comes from the community freqtrade-strategies repository (GPL-3.0). These are the parts that decide when it trades; the full file is 84 lines.

Entry rules
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
    dataframe.loc[
        (
                (dataframe['close'] < dataframe['ema100']) &
                (dataframe['close'] < 0.985 * dataframe['bb_lowerband']) &
                (dataframe['volume'] < (dataframe['volume'].rolling(window=30).mean().shift(1) * 20))
        ),
        'enter_long'] = 1

    return dataframe
Exit rules
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
    dataframe.loc[
        (
            (dataframe['close'] > dataframe['bb_middleband'])
        ),
        'exit_long'] = 1
    return dataframe
Indicators
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
    dataframe['rsi'] = ta.RSI(dataframe, timeperiod=5)
    rsiframe = DataFrame(dataframe['rsi']).rename(columns={'rsi': 'close'})
    dataframe['emarsi'] = ta.EMA(rsiframe, timeperiod=5)
    macd = ta.MACD(dataframe)
    dataframe['macd'] = macd['macd']
    dataframe['adx'] = ta.ADX(dataframe)
    bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2)
    dataframe['bb_lowerband'] = bollinger['lower']
    dataframe['bb_middleband'] = bollinger['mid']
    dataframe['bb_upperband'] = bollinger['upper']
    dataframe['ema100'] = ta.EMA(dataframe, timeperiod=50)
    return dataframe

Reproduce this test

With freqtrade installed (see our Docker guide), download the data and run the same backtest:

freqtrade download-data --exchange binance --pairs ADA/USDT AVAX/USDT BNB/USDT BTC/USDT DOGE/USDT DOT/USDT ETH/USDT LINK/USDT SOL/USDT XRP/USDT --timeframes 5m --timerange 20230501-20250530
freqtrade backtesting --strategy ClucMay72018 --timeframe 5m \
  --timerange 20230601-20250530 --dry-run-wallet 1000 --stake-amount 200 --max-open-trades 5 --fee 0.001

Results can differ slightly with a different data source or freqtrade version. See how we test.