Basics
mode: spot
timeframe: 5m
interface version: 3
Settings
stoploss: -0.3
has minimal roi
hyperopt
hyperopt params: 2
Indicators
CCI
MACD
talib
15 related strategies (⧉ identical code, ≈ similar name)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | # --- Do not remove these libs --- from freqtrade.strategy import IStrategy from freqtrade.strategy import CategoricalParameter, DecimalParameter, IntParameter from pandas import DataFrame # -------------------------------- import talib.abstract as ta class MACDStrategySOL(IStrategy): """ author@: Gert Wohlgemuth idea: uptrend definition: MACD above MACD signal and CCI < -50 downtrend definition: MACD below MACD signal and CCI > 100 freqtrade hyperopt --strategy MACDStrategy --hyperopt-loss <someLossFunction> --spaces buy sell The idea is to optimize only the CCI value. - Buy side: CCI between -700 and 0 - Sell side: CCI between 0 and 700 """ INTERFACE_VERSION: int = 3 # Minimal ROI designed for the strategy. # This attribute will be overridden if the config file contains "minimal_roi" minimal_roi = { "60": 0.01, "30": 0.03, "20": 0.04, "0": 0.05 } # Optimal stoploss designed for the strategy # This attribute will be overridden if the config file contains "stoploss" stoploss = -0.3 # Optimal timeframe for the strategy timeframe = '5m' buy_cci = IntParameter(low=-700, high=0, default=-50, space='buy', optimize=True) sell_cci = IntParameter(low=0, high=700, default=100, space='sell', optimize=True) # Buy hyperspace params: buy_params = { "buy_cci": -48, } # Sell hyperspace params: sell_params = { "sell_cci": 687, } def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] dataframe['macdsignal'] = macd['macdsignal'] dataframe['macdhist'] = macd['macdhist'] dataframe['cci'] = ta.CCI(dataframe) return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators, populates the buy signal for the given dataframe :param dataframe: DataFrame :return: DataFrame with buy column """ dataframe.loc[ ( (dataframe['macd'] > dataframe['macdsignal']) & (dataframe['cci'] <= self.buy_cci.value) & (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'enter_long'] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators, populates the sell signal for the given dataframe :param dataframe: DataFrame :return: DataFrame with buy column """ dataframe.loc[ ( (dataframe['macd'] < dataframe['macdsignal']) & (dataframe['cci'] >= self.sell_cci.value) & (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'exit_long'] = 1 return dataframe |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 501.2s
pairs 33 pairs
timerange 20210101-20260101
mode spot
timeframe 5m
stake 100 USDT
wallet 1000 USDT
max open trades 10
fee exchange lowest tier
total profit+24.60%
final wallet1246 USDT
win rate96.3%
max drawdown-56.55%
market change+451.55%
vs market-426.95%
timeframe5m
profit factor1.02
expectancy ratio0.001
sharpe0.435
sortino1.408
CAGR+4.5%
calmar0.455
avg MFE+1.81%
avg MAE-4.32%
avg profit/trade0.03%
avg duration45h 21m
best trade+5.01%
worst trade-30.14%
positive months31/61
consistent (3-mo)45.8%
worst 3-mo-74.46%
trades9184
revision1
likely annual return+4%
range (5th–95th)-6% … +16%
chance of profit75.5%
worst-5% outcome-9%
significance (p)0.3295
risk of ruin0.0%
- profit isn't statistically significant (p=0.33) — hard to tell apart from luck
- did not beat simply holding the market
Resampling the trade sequence 2,000× shows the spread of results this edge could plausibly produce — separating a dependable strategy from one that got lucky once.
Loading charts…
Monthly breakdown
| Month | Regime | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|---|
| Jan 2026 | bullish trending low vol | 10 | -20.46 | -20.45 | 0 | 10 | 0.0 | -50.15 | 882h 36m |
| Dec 2025 | bearish trending low vol | 45 | -11.01 | -2.45 | 40 | 5 | 88.9 | -43.59 | 65h 53m |
| Nov 2025 | bearish trending high vol | 105 | -21.80 | -2.08 | 94 | 11 | 89.5 | -38.23 | 76h 01m |
| Oct 2025 | bearish trending low vol | 90 | -13.62 | -1.52 | 82 | 8 | 91.1 | -30.13 | 126h 46m |
| Sep 2025 | bullish choppy low vol | 20 | +2.01 | 1.00 | 20 | 0 | 100.0 | -24.15 | 107h 33m |
| Aug 2025 | bullish choppy low vol | 29 | -0.08 | -0.03 | 28 | 1 | 96.6 | -24.22 | 166h 06m |
| Jul 2025 | bullish choppy low vol | 218 | +20.25 | 0.93 | 217 | 1 | 99.5 | -33.46 | 37h 53m |
| Jun 2025 | bearish choppy low vol | 86 | -9.56 | -1.11 | 80 | 6 | 93.0 | -33.62 | 70h 26m |
| May 2025 | bullish trending low vol | 106 | +8.59 | 0.81 | 105 | 1 | 99.1 | -31.83 | 91h 30m |
| Apr 2025 | bullish choppy low vol | 181 | -2.44 | -0.14 | 174 | 7 | 96.1 | -38.13 | 37h 43m |
| Mar 2025 | bearish trending high vol | 137 | -7.22 | -0.53 | 130 | 7 | 94.9 | -34.75 | 34h 37m |
| Feb 2025 | bearish trending low vol | 107 | -33.25 | -3.11 | 92 | 15 | 86.0 | -28.85 | 79h 26m |
| Jan 2025 | bearish choppy low vol | 104 | +4.51 | 0.43 | 102 | 2 | 98.1 | -16.64 | 41h 48m |
| Dec 2024 | bullish trending low vol | 187 | -13.82 | -0.74 | 176 | 11 | 94.1 | -18.15 | 27h 47m |
| Nov 2024 | bullish trending low vol | 377 | +40.36 | 1.07 | 376 | 1 | 99.7 | -28.33 | 37h 01m |
| Oct 2024 | bullish choppy low vol | 24 | +2.40 | 1.00 | 24 | 0 | 100.0 | -28.05 | 67h 07m |
| Sep 2024 | bearish choppy low vol | 72 | +7.19 | 1.00 | 72 | 0 | 100.0 | -30.93 | 92h 12m |
| Aug 2024 | bearish choppy high vol | 206 | -6.68 | -0.33 | 197 | 9 | 95.6 | -38.85 | 67h 09m |
| Jul 2024 | bearish trending low vol | 159 | +1.04 | 0.07 | 154 | 5 | 96.9 | -34.5 | 47h 19m |
| Jun 2024 | bearish choppy low vol | 39 | -8.22 | -2.11 | 35 | 4 | 89.7 | -29.88 | 127h 50m |
| May 2024 | bullish choppy high vol | 56 | +2.50 | 0.45 | 55 | 1 | 98.2 | -27.55 | 84h 16m |
| Apr 2024 | bearish choppy high vol | 92 | -17.28 | -1.88 | 83 | 9 | 90.2 | -29.15 | 65h 14m |
| Mar 2024 | bullish trending high vol | 201 | +10.89 | 0.54 | 197 | 4 | 98.0 | -23.82 | 54h 13m |
| Feb 2024 | bullish trending low vol | 100 | +10.85 | 1.08 | 100 | 0 | 100.0 | -28.17 | 99h 38m |
| Jan 2024 | bearish choppy high vol | 40 | -2.10 | -0.52 | 38 | 2 | 95.0 | -28.56 | 60h 18m |
| Dec 2023 | bullish trending low vol | 155 | +16.64 | 1.07 | 155 | 0 | 100.0 | -33.98 | 47h 12m |
| Nov 2023 | bullish trending low vol | 130 | +13.40 | 1.03 | 130 | 0 | 100.0 | -39.34 | 92h 26m |
| Oct 2023 | bullish trending low vol | 67 | +6.78 | 1.01 | 67 | 0 | 100.0 | -42.06 | 151h 39m |
| Sep 2023 | bearish choppy low vol | 2 | +0.20 | 1.00 | 2 | 0 | 100.0 | -42.14 | 180h 12m |
| Aug 2023 | bearish choppy low vol | 40 | -7.72 | -1.93 | 36 | 4 | 90.0 | -43.59 | 116h 55m |
| Jul 2023 | bullish trending low vol | 51 | +2.43 | 0.48 | 50 | 1 | 98.0 | -40.02 | 103h 36m |
| Jun 2023 | bullish trending low vol | 86 | -9.56 | -1.11 | 80 | 6 | 93.0 | -42.7 | 177h 37m |
| May 2023 | bearish choppy low vol | 7 | -5.53 | -7.90 | 5 | 2 | 71.4 | -36.27 | 543h 20m |
| Apr 2023 | bullish trending low vol | 53 | +5.56 | 1.05 | 53 | 0 | 100.0 | -36.21 | 96h 52m |
| Mar 2023 | bullish trending high vol | 101 | -0.98 | -0.10 | 97 | 4 | 96.0 | -40.38 | 49h 41m |
| Feb 2023 | bullish trending low vol | 100 | +10.36 | 1.04 | 100 | 0 | 100.0 | -39.96 | 67h 21m |
| Jan 2023 | bullish trending low vol | 269 | +29.46 | 1.09 | 269 | 0 | 100.0 | -51.74 | 36h 28m |
| Dec 2022 | bearish trending low vol | 43 | -7.87 | -1.83 | 39 | 4 | 90.7 | -52.22 | 109h 50m |
| Nov 2022 | bearish trending high vol | 179 | -16.48 | -0.92 | 167 | 12 | 93.3 | -50.83 | 47h 29m |
| Oct 2022 | bullish choppy low vol | 84 | +5.57 | 0.66 | 83 | 1 | 98.8 | -44.72 | 89h 19m |
| Sep 2022 | bearish choppy high vol | 126 | +4.50 | 0.36 | 123 | 3 | 97.6 | -46.04 | 35h 36m |
| Aug 2022 | bullish choppy high vol | 110 | -9.74 | -0.89 | 103 | 7 | 93.6 | -46.41 | 53h 58m |
| Jul 2022 | bearish trending high vol | 228 | +24.86 | 1.09 | 228 | 0 | 100.0 | -52.08 | 28h 58m |
| Jun 2022 | bearish trending high vol | 206 | -17.90 | -0.87 | 192 | 14 | 93.2 | -56.55 | 36h 42m |
| May 2022 | bearish trending high vol | 223 | -43.14 | -1.94 | 200 | 23 | 89.7 | -53.4 | 39h 01m |
| Apr 2022 | bearish choppy high vol | 77 | -13.42 | -1.74 | 70 | 7 | 90.9 | -27.7 | 48h 12m |
| Mar 2022 | bullish choppy high vol | 157 | +17.34 | 1.10 | 157 | 0 | 100.0 | -29.23 | 51h 56m |
| Feb 2022 | bearish trending high vol | 204 | +3.81 | 0.19 | 198 | 6 | 97.1 | -31.35 | 32h 41m |
| Jan 2022 | bearish trending high vol | 139 | -37.50 | -2.70 | 122 | 17 | 87.8 | -32.61 | 60h 51m |
| Dec 2021 | bearish trending high vol | 138 | -14.34 | -1.04 | 128 | 10 | 92.8 | -21.78 | 39h 34m |
| Nov 2021 | bullish trending high vol | 132 | -7.30 | -0.56 | 125 | 7 | 94.7 | -10.53 | 64h 35m |
| Oct 2021 | bullish trending high vol | 136 | +12.19 | 0.90 | 135 | 1 | 99.3 | -11.97 | 45h 35m |
| Sep 2021 | bearish trending high vol | 234 | -8.35 | -0.36 | 222 | 12 | 94.9 | -13.22 | 27h 49m |
| Aug 2021 | bullish trending high vol | 342 | +39.45 | 1.15 | 342 | 0 | 100.0 | -24.41 | 17h 01m |
| Jul 2021 | bearish trending high vol | 190 | +7.63 | 0.40 | 186 | 4 | 97.9 | -30.06 | 31h 51m |
| Jun 2021 | bearish trending high vol | 245 | -24.79 | -1.01 | 228 | 17 | 93.1 | -32.86 | 26h 58m |
| May 2021 | bearish trending high vol | 436 | -32.74 | -0.75 | 402 | 34 | 92.2 | -26.64 | 14h 03m |
| Apr 2021 | bearish choppy high vol | 387 | +21.51 | 0.56 | 378 | 9 | 97.7 | -8.23 | 19h 22m |
| Mar 2021 | bullish choppy high vol | 196 | +16.02 | 0.82 | 194 | 2 | 99.0 | -3.4 | 30h 47m |
| Feb 2021 | bullish trending high vol | 569 | +36.76 | 0.65 | 556 | 13 | 97.7 | -11.74 | 9h 54m |
| Jan 2021 | bullish trending high vol | 551 | +64.45 | 1.17 | 548 | 3 | 99.5 | -2.8 | 9h 23m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2026 | 10 | -20.46 | -20.45 | 0 | 10 | 0.0 | -50.15 | 882h 36m |
| 2025 | 1228 | -63.62 | -0.52 | 1164 | 64 | 94.8 | -43.59 | 63h 19m |
| 2024 | 1553 | +27.13 | 0.17 | 1507 | 46 | 97.0 | -38.85 | 56h 30m |
| 2023 | 1061 | +61.04 | 0.57 | 1044 | 17 | 98.4 | -51.74 | 80h 40m |
| 2022 | 1776 | -89.97 | -0.51 | 1682 | 94 | 94.7 | -56.55 | 45h 37m |
| 2021 | 3556 | +110.49 | 0.31 | 3444 | 112 | 96.9 | -32.86 | 21h 16m |
Trade charts — best 2 and worst 2 performing pairs (full OHLC candles are expensive to render for every pair)
Backtests — over a market period
Backtest this strategy over a chosen crypto-cycle period. These don't affect the League ranking, and need that period's candle data downloaded.
Log in or sign up to run backtests.
| Period | Range | Total % | Win % | Max DD | Trades | |
|---|---|---|---|---|---|---|
| 2020 · DeFi Summer & Pre-Halving Rally | 20200101-20210101 | not run | ||||
| 2021 · Institutional Bull Market | 20210101-20220101 | not run | ||||
| 2022 · Post-Bull Crash & Macro Tightening | 20220101-20230101 | not run | ||||
| 2023–2024 · Recovery & ETF Anticipation | 20230101-20250101 | not run | ||||
| 2025–2026 · Current Cycle | 20250101-20260101 | not run | ||||
Walk forward
Out-of-sample backtest on recent data · 33 pairs · 20260101-20260701.
Backtest trust check
no lookahead patterns · 1 thing(s) worth reviewing before trusting the numbers
| Line | Pattern | Detail | |
|---|---|---|---|
| 11 | review | missing_startup_candles | uses recursive indicators (MACD) but startup_candle_count is not set (default 0). Their value at a bar depends on all bars before it, so freqtrade trims no warmup and the backtest opens with unwarmed values that can't occur live. Set it to a few times the longest period and confirm with `freqtrade recursive-analysis` |
ran by Ron · took s
Lookahead analysis
freqtrade lookahead-analysis: detects strategies peeking at future candles.