Freqtrade Strategy

PowerTower

5m candlesHyperopt-generatedSpot, long only

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

PowerTower turned $1,000 into $1,398 (+39.8%) over 729 days, while holding Bitcoin returned +288.1% and an equal mix of the ten coins +194.8%. Its worst drawdown was 28.0%, a substantial dip to sit through. It won 69% of trades for a profit factor of 1.22.

PowerTower account balance compared with holding Bitcoin$0$1,000$2,000$3,000$4,000JulOctJan 2024AprJulOctJan 2025AprPowerTower $1,398BTC hold $3,880
Account balance from $1,000 (closed trades, daily). Dashed line: $1,000 held in BTC over the same days.
Total return+39.8%$1,398 final balance
Max drawdown28.0%14 Mar 2024 to 5 Aug 2024
Win rate68.6%840 wins / 384 losses
Profit factor1.22Gross wins ÷ gross losses
Trades1,2241.7 per day
Average trade+0.16%after fees
Average hold1d 14hwinners 22h 18m, losers 3d 1h
Annualised (CAGR)+18.2%Sharpe 1.05 · Sortino 0.68

How PowerTower trades

PowerTower compares each close with the close two candles earlier raised to a tuned power (3.849). It buys when three consecutive comparisons pass and sells as soon as any of the sell comparisons fails.

Raising a price to the power of 3.8 makes the rule behave very differently for a $0.50 coin and a $60,000 coin, which is a sign the parameters were fitted rather than reasoned. Results vary strongly by pair.

Rules at a glance

Indicators
Raw close prices
Take-profit (minimal ROI)
21.3% from entry; 4.8% after 39m; 2.9% after 56m; 0% after 2h 39m
Stoploss
−28.8%
Trailing stop
Off
Exit signal
Used

Results by month

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

JFMAMJJASOND2023-39+151-135+0+27+90+1132024-52+58+96-142+7-99+45-64+35+50+406-382025+57-193+54-33+4

Results by coin

PairTradesWin rateProfit (USDT)Avg. hold
ADA/USDT57168.0%+160.341d 5h
DOGE/USDT43970.6%+130.111d 15h
XRP/USDT21466.4%+107.232d 11h
BTC/USDT00.0%0.000:00
ETH/USDT00.0%0.000:00
SOL/USDT00.0%0.000:00
BNB/USDT00.0%0.000:00
AVAX/USDT00.0%0.000:00
LINK/USDT00.0%0.000:00
DOT/USDT00.0%0.000:00

Why trades closed

Exit reasonTradesWin rateProfit (USDT)
Take-profit (ROI)108872.3%+2,075.49
Exit signal10550.5%+62.56
Still open at end of test20.0%−60.29
Stoploss290.0%−1,680.09

The code

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

Entry rules
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
    dataframe.loc[
        (
                (dataframe['close'].shift(0) > dataframe['close'].shift(2) ** self.buy_pow.value) &
                (dataframe['close'].shift(1) > dataframe['close'].shift(3) ** self.buy_pow.value) &
                (dataframe['close'].shift(2) > dataframe['close'].shift(4) ** self.buy_pow.value)

        ),
        'enter_long'] = 1

    return dataframe
Exit rules
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
    dataframe.loc[(
            (dataframe['close'].shift(0) < dataframe['close'].shift(2) ** self.sell_pow.value) |
            (dataframe['close'].shift(1) < dataframe['close'].shift(3) ** self.sell_pow.value) |
            (dataframe['close'].shift(2) < dataframe['close'].shift(4) ** self.sell_pow.value)
    ),
    'exit_long'] = 1

    return dataframe
Indicators
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
    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 PowerTower --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.