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 | # --- Do not remove these libs --- from freqtrade.strategy.interface import IStrategy from pandas import DataFrame # -------------------------------- import talib.abstract as ta import numpy as np import freqtrade.vendor.qtpylib.indicators as qtpylib from datetime import datetime, timedelta from freqtrade.persistence import Trade from freqtrade.strategy import stoploss_from_open, DecimalParameter, IntParameter, CategoricalParameter # @Rallipanos def ewo(dataframe, ema_length=5, ema2_length=35): df = dataframe.copy() ema1 = ta.EMA(df, timeperiod=ema_length) ema2 = ta.EMA(df, timeperiod=ema2_length) emadif = (ema1 - ema2) / df['close'] * 100 return emadif class NotAnotherSMAOffsetStrategyLite(IStrategy): INTERFACE_VERSION = 3 # Buy hyperspace params: entry_params = {'base_nb_candles_entry': 14, 'low_offset': 0.975} # Sell hyperspace params: exit_params = {'base_nb_candles_exit': 24, 'high_offset': 0.991} minimal_roi = {'0': 0.025} stoploss = -0.1 # use_custom_stoploss = True # SMAOffset base_nb_candles_entry = IntParameter(5, 80, default=entry_params['base_nb_candles_entry'], space='entry', optimize=True) base_nb_candles_exit = IntParameter(5, 80, default=exit_params['base_nb_candles_exit'], space='exit', optimize=True) low_offset = DecimalParameter(0.9, 0.99, default=entry_params['low_offset'], space='entry', optimize=True) high_offset = DecimalParameter(0.95, 1.1, default=exit_params['high_offset'], space='exit', optimize=True) # Protection fast_ewo = 50 slow_ewo = 200 use_exit_signal = True exit_profit_only = False exit_profit_offset = 0.01 ignore_roi_if_entry_signal = False order_time_in_force = {'entry': 'gtc', 'exit': 'ioc'} timeframe = '5m' process_only_new_candles = True startup_candle_count = 200 plot_config = {'main_plot': {'ma_entry': {'color': 'orange'}, 'ma_exit': {'color': 'orange'}}} def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime, current_rate: float, current_profit: float, **kwargs) -> float: if current_profit < -0.05 and current_time - timedelta(minutes=720) > trade.open_date_utc: return -0.01 return 1 def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: for length in set(list(self.base_nb_candles_entry.range) + list(self.base_nb_candles_exit.range)): dataframe[f'ema_{length}'] = ta.EMA(dataframe, timeperiod=length) dataframe['ewo'] = ewo(dataframe, self.fast_ewo, self.slow_ewo) return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe.loc[(dataframe['close'] < dataframe[f'ema_{self.base_nb_candles_entry.value}'] * self.low_offset.value) & (dataframe['ewo'] > 0) & (dataframe['volume'] > 0), 'enter_long'] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe.loc[(dataframe['close'] > dataframe[f'ema_{self.base_nb_candles_exit.value}'] * self.high_offset.value) & (dataframe['volume'] > 0), 'exit_long'] = 1 return dataframe |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 281.9s
ℹ️ This strategy uses custom_stoploss() — freqtrade only
re-checks these once per 5m candle by default, not against the price movement within it.
For a more accurate read, re-run this backtest locally with --timeframe-detail 1m. Freqle doesn't do this for every check here: multiplying every
League/sweep backtest by a finer detail timeframe is more compute than the sandbox can sustain
across every indexed strategy. why this matters →
- did not beat simply holding the market
- statistically significant edge (p=0.00)
- 100% of resampled runs stayed profitable
- profitable across 81% of rolling 3-month windows
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 |
|---|---|---|---|---|---|---|---|---|---|
| Dec 2025 | bearish trending low vol | 33 | -0.80 | -0.24 | 20 | 13 | 60.6 | -2.11 | 1h 11m |
| Nov 2025 | bearish trending high vol | 72 | -1.73 | -0.24 | 48 | 24 | 66.7 | -1.83 | 0h 55m |
| Oct 2025 | bearish trending low vol | 50 | +5.12 | 1.02 | 40 | 10 | 80.0 | -0.41 | 0h 39m |
| Sep 2025 | bullish choppy low vol | 14 | -0.19 | -0.13 | 8 | 6 | 57.1 | -0.47 | 1h 06m |
| Aug 2025 | bullish choppy low vol | 10 | +0.89 | 0.89 | 9 | 1 | 90.0 | -0.67 | 0h 42m |
| Jul 2025 | bullish choppy low vol | 15 | +0.82 | 0.55 | 11 | 4 | 73.3 | -0.95 | 0h 52m |
| Jun 2025 | bearish choppy low vol | 15 | -1.25 | -0.83 | 4 | 11 | 26.7 | -1.07 | 1h 29m |
| May 2025 | bullish trending low vol | 42 | +1.03 | 0.25 | 23 | 19 | 54.8 | -0.56 | 0h 57m |
| Apr 2025 | bullish choppy low vol | 16 | +0.12 | 0.07 | 11 | 5 | 68.8 | -0.73 | 1h 08m |
| Mar 2025 | bearish trending high vol | 30 | -0.01 | -0.00 | 19 | 11 | 63.3 | -0.5 | 0h 55m |
| Feb 2025 | bearish trending low vol | 43 | +1.22 | 0.28 | 28 | 15 | 65.1 | -1.23 | 0h 58m |
| Jan 2025 | bearish choppy low vol | 57 | +0.15 | 0.03 | 41 | 16 | 71.9 | -1.73 | 0h 58m |
| Dec 2024 | bullish trending low vol | 99 | -0.45 | -0.04 | 60 | 39 | 60.6 | -1.44 | 0h 48m |
| Nov 2024 | bullish trending low vol | 203 | +13.07 | 0.64 | 148 | 55 | 72.9 | -1.18 | 0h 43m |
| Oct 2024 | bullish choppy low vol | 10 | +1.31 | 1.31 | 8 | 2 | 80.0 | -0.11 | 0h 36m |
| Aug 2024 | bearish choppy high vol | 19 | +0.76 | 0.40 | 10 | 9 | 52.6 | -0.31 | 0h 53m |
| Jul 2024 | bearish trending low vol | 11 | +1.86 | 1.69 | 11 | 0 | 100.0 | 0.0 | 0h 19m |
| Jun 2024 | bearish choppy low vol | 15 | +2.27 | 1.51 | 14 | 1 | 93.3 | -0.81 | 0h 41m |
| May 2024 | bullish choppy high vol | 4 | +0.22 | 0.56 | 3 | 1 | 75.0 | -0.97 | 0h 56m |
| Apr 2024 | bearish choppy high vol | 49 | +1.55 | 0.32 | 33 | 16 | 67.3 | -1.04 | 0h 48m |
| Mar 2024 | bullish trending high vol | 87 | +2.46 | 0.28 | 65 | 22 | 74.7 | -1.5 | 0h 45m |
| Feb 2024 | bullish trending low vol | 36 | +2.07 | 0.57 | 25 | 11 | 69.4 | -0.34 | 0h 51m |
| Jan 2024 | bearish choppy high vol | 59 | +0.29 | 0.05 | 44 | 15 | 74.6 | -1.6 | 0h 46m |
| Dec 2023 | bullish trending low vol | 97 | +9.48 | 0.98 | 80 | 17 | 82.5 | -2.36 | 0h 47m |
| Nov 2023 | bullish trending low vol | 57 | +1.97 | 0.34 | 39 | 18 | 68.4 | -3.66 | 0h 51m |
| Oct 2023 | bullish trending low vol | 23 | +2.32 | 1.01 | 18 | 5 | 78.3 | -4.1 | 0h 46m |
| Sep 2023 | bearish choppy low vol | 5 | +0.15 | 0.31 | 3 | 2 | 60.0 | -4.15 | 1h 15m |
| Aug 2023 | bearish choppy low vol | 20 | +0.65 | 0.32 | 16 | 4 | 80.0 | -4.44 | 0h 34m |
| Jul 2023 | bullish trending low vol | 37 | -0.96 | -0.26 | 21 | 16 | 56.8 | -4.47 | 1h 11m |
| Jun 2023 | bullish trending low vol | 47 | +2.01 | 0.43 | 32 | 15 | 68.1 | -4.88 | 0h 51m |
| May 2023 | bearish choppy low vol | 14 | +1.60 | 1.14 | 12 | 2 | 85.7 | -5.43 | 0h 48m |
| Apr 2023 | bullish trending low vol | 23 | -2.01 | -0.87 | 5 | 18 | 21.7 | -5.46 | 1h 24m |
| Mar 2023 | bullish trending high vol | 54 | +3.07 | 0.57 | 42 | 12 | 77.8 | -6.64 | 0h 49m |
| Feb 2023 | bullish trending low vol | 26 | +1.69 | 0.65 | 19 | 7 | 73.1 | -6.59 | 0h 52m |
| Jan 2023 | bullish trending low vol | 83 | +3.81 | 0.46 | 61 | 22 | 73.5 | -8.21 | 0h 53m |
| Dec 2022 | bearish trending low vol | 1 | +0.02 | 0.18 | 1 | 0 | 100.0 | -8.09 | 1h 05m |
| Nov 2022 | bearish trending high vol | 90 | -12.35 | -1.37 | 43 | 47 | 47.8 | -8.09 | 1h 04m |
| Oct 2022 | bullish choppy low vol | 26 | +1.90 | 0.73 | 20 | 6 | 76.9 | -3.89 | 0h 45m |
| Sep 2022 | bearish choppy high vol | 40 | -8.47 | -2.12 | 15 | 25 | 37.5 | -4.13 | 1h 44m |
| Aug 2022 | bullish choppy high vol | 32 | -0.17 | -0.05 | 17 | 15 | 53.1 | -0.52 | 1h 04m |
| Jul 2022 | bearish trending high vol | 64 | +0.63 | 0.10 | 39 | 25 | 60.9 | -0.43 | 0h 59m |
| Jun 2022 | bearish trending high vol | 104 | +6.05 | 0.58 | 73 | 31 | 70.2 | -2.42 | 0h 52m |
| May 2022 | bearish trending high vol | 101 | +1.02 | 0.10 | 67 | 34 | 66.3 | -2.62 | 0h 55m |
| Apr 2022 | bearish choppy high vol | 9 | -0.82 | -0.91 | 5 | 4 | 55.6 | -2.16 | 1h 16m |
| Mar 2022 | bullish choppy high vol | 45 | +5.09 | 1.13 | 37 | 8 | 82.2 | -3.84 | 0h 43m |
| Feb 2022 | bearish trending high vol | 51 | +2.02 | 0.40 | 30 | 21 | 58.8 | -4.89 | 0h 54m |
| Jan 2022 | bearish trending high vol | 50 | -3.41 | -0.68 | 31 | 19 | 62.0 | -4.74 | 1h 19m |
| Dec 2021 | bearish trending high vol | 47 | +1.16 | 0.25 | 28 | 19 | 59.6 | -3.92 | 0h 58m |
| Nov 2021 | bullish trending high vol | 39 | -4.32 | -1.11 | 20 | 19 | 51.3 | -3.93 | 1h 04m |
| Oct 2021 | bullish trending high vol | 43 | +1.80 | 0.42 | 32 | 11 | 74.4 | -3.01 | 0h 48m |
| Sep 2021 | bearish trending high vol | 122 | -0.75 | -0.06 | 84 | 38 | 68.9 | -2.86 | 0h 48m |
| Aug 2021 | bullish trending high vol | 99 | +5.45 | 0.55 | 71 | 28 | 71.7 | -1.82 | 0h 52m |
| Jul 2021 | bearish trending high vol | 64 | -3.44 | -0.54 | 28 | 36 | 43.8 | -2.0 | 1h 16m |
| Jun 2021 | bearish trending high vol | 82 | +2.78 | 0.34 | 58 | 24 | 70.7 | -0.75 | 0h 56m |
| May 2021 | bearish trending high vol | 492 | +32.30 | 0.66 | 373 | 119 | 75.8 | -2.36 | 0h 38m |
| Apr 2021 | bearish choppy high vol | 323 | +29.45 | 0.91 | 253 | 70 | 78.3 | -1.0 | 0h 35m |
| Mar 2021 | bullish choppy high vol | 141 | +10.29 | 0.73 | 104 | 37 | 73.8 | -0.84 | 0h 43m |
| Feb 2021 | bullish trending high vol | 451 | +28.35 | 0.63 | 348 | 103 | 77.2 | -3.2 | 0h 36m |
| Jan 2021 | bullish trending high vol | 591 | +35.09 | 0.59 | 454 | 137 | 76.8 | -4.86 | 0h 35m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2025 | 397 | +5.37 | 0.14 | 262 | 135 | 66.0 | -2.11 | 0h 57m |
| 2024 | 592 | +25.41 | 0.43 | 421 | 171 | 71.1 | -1.6 | 0h 45m |
| 2023 | 486 | +23.78 | 0.49 | 348 | 138 | 71.6 | -8.21 | 0h 53m |
| 2022 | 613 | -8.49 | -0.14 | 378 | 235 | 61.7 | -8.09 | 1h 01m |
| 2021 | 2494 | +138.16 | 0.55 | 1853 | 641 | 74.3 | -4.86 | 0h 40m |
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 | |
|---|---|---|---|
| 47 | review | dead_callback | custom_stoploss() is defined but use_custom_stoploss isn't True, and freqtrade only calls it when that flag is set -- the method never runs and every trade uses the static stoploss |
ran by Ron · took s
Lookahead analysis
freqtrade lookahead-analysis: detects strategies peeking at future candles.