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 | # --- Do not remove these libs --- from freqtrade.strategy.interface import IStrategy from typing import Dict, List from functools import reduce from pandas import DataFrame # -------------------------------- import talib.abstract as ta import numpy as np import freqtrade.vendor.qtpylib.indicators as qtpylib import datetime from technical.util import resample_to_interval, resampled_merge from datetime import datetime, timedelta from freqtrade.persistence import Trade from freqtrade.strategy import stoploss_from_open, merge_informative_pair, DecimalParameter, IntParameter, CategoricalParameter import technical.indicators as ftt # @Rallipanos # changes by IcHiAT # Buy hyperspace params: entry_params = {'base_nb_candles_entry': 12, 'ewo_high': 3.147, 'ewo_low': -17.145, 'low_offset': 0.987, 'rsi_entry': 57} # Sell hyperspace params: exit_params = {'base_nb_candles_exit': 22, 'high_offset': 1.008, 'high_offset_2': 1.016} def EWO(dataframe, ema_length=5, ema2_length=3): 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 ElliotV8_original_ichiv3(IStrategy): INTERFACE_VERSION = 3 '\n # ROI table:\n minimal_roi = {\n "0": 0.08,\n "20": 0.04,\n "40": 0.032,\n "87": 0.016,\n "201": 0,\n "202": -1\n }\n ' @property def protections(self): return [{'method': 'CooldownPeriod', 'stop_duration_candles': 5}, {'method': 'MaxDrawdown', 'lookback_period_candles': 48, 'trade_limit': 20, 'stop_duration_candles': 4, 'max_allowed_drawdown': 0.2}, {'method': 'StoplossGuard', 'lookback_period_candles': 24, 'trade_limit': 4, 'stop_duration_candles': 2, 'only_per_pair': False}, {'method': 'LowProfitPairs', 'lookback_period_candles': 6, 'trade_limit': 2, 'stop_duration_candles': 60, 'required_profit': 0.02}, {'method': 'LowProfitPairs', 'lookback_period_candles': 24, 'trade_limit': 4, 'stop_duration_candles': 2, 'required_profit': 0.01}] # ROI table: minimal_roi = {'0': 0.99, '200': -1} # Stoploss: stoploss = -0.2 # 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) high_offset_2 = DecimalParameter(0.99, 1.5, default=exit_params['high_offset_2'], space='exit', optimize=True) # Protection fast_ewo = 50 slow_ewo = 200 ewo_low = DecimalParameter(-20.0, -8.0, default=entry_params['ewo_low'], space='entry', optimize=True) ewo_high = DecimalParameter(2.0, 12.0, default=entry_params['ewo_high'], space='entry', optimize=True) rsi_entry = IntParameter(30, 70, default=entry_params['rsi_entry'], space='entry', optimize=True) # Trailing stop: trailing_stop = True trailing_stop_positive = 0.001 trailing_stop_positive_offset = 0.02 trailing_only_offset_is_reached = True # Sell signal use_exit_signal = True exit_profit_only = True exit_profit_offset = 0.01 ignore_roi_if_entry_signal = False ## Optional order time in force. order_time_in_force = {'entry': 'gtc', 'exit': 'gtc'} # Optimal timeframe for the strategy timeframe = '5m' inf_1h = '1h' process_only_new_candles = True startup_candle_count = 400 plot_config = {'main_plot': {'ma_entry': {'color': 'orange'}, 'ma_exit': {'color': 'orange'}}} def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Calculate all ma_entry values for val in self.base_nb_candles_entry.range: dataframe[f'ma_entry_{val}'] = ta.EMA(dataframe, timeperiod=val) # Calculate all ma_exit values for val in self.base_nb_candles_exit.range: dataframe[f'ma_exit_{val}'] = ta.EMA(dataframe, timeperiod=val) dataframe['hma_50'] = qtpylib.hull_moving_average(dataframe['close'], window=50) dataframe['sma_9'] = ta.SMA(dataframe, timeperiod=9) # Elliot dataframe['EWO'] = EWO(dataframe, self.fast_ewo, self.slow_ewo) # RSI dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14) dataframe['rsi_fast'] = ta.RSI(dataframe, timeperiod=4) dataframe['rsi_slow'] = ta.RSI(dataframe, timeperiod=20) return dataframe def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: conditions = [] conditions.append((dataframe['rsi_fast'] < 35) & (dataframe['close'] < dataframe[f'ma_entry_{self.base_nb_candles_entry.value}'] * self.low_offset.value) & (dataframe['EWO'] > self.ewo_high.value) & (dataframe['rsi'] < self.rsi_entry.value) & (dataframe['volume'] > 0) & (dataframe['close'] < dataframe[f'ma_exit_{self.base_nb_candles_exit.value}'] * self.high_offset.value)) conditions.append((dataframe['rsi_fast'] < 35) & (dataframe['close'] < dataframe[f'ma_entry_{self.base_nb_candles_entry.value}'] * self.low_offset.value) & (dataframe['EWO'] < self.ewo_low.value) & (dataframe['volume'] > 0) & (dataframe['close'] < dataframe[f'ma_exit_{self.base_nb_candles_exit.value}'] * self.high_offset.value)) if conditions: dataframe.loc[reduce(lambda x, y: x | y, conditions), 'enter_long'] = 1 return dataframe def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: conditions = [] conditions.append((dataframe['close'] > dataframe['hma_50']) & (dataframe['close'] > dataframe[f'ma_exit_{self.base_nb_candles_exit.value}'] * self.high_offset_2.value) & (dataframe['rsi'] > 50) & (dataframe['volume'] > 0) & (dataframe['rsi_fast'] > dataframe['rsi_slow']) | (dataframe['close'] < dataframe['hma_50']) & (dataframe['close'] > dataframe[f'ma_exit_{self.base_nb_candles_exit.value}'] * self.high_offset.value) & (dataframe['volume'] > 0) & (dataframe['rsi_fast'] > dataframe['rsi_slow'])) if conditions: dataframe.loc[reduce(lambda x, y: x | y, conditions), 'exit_long'] = 1 return dataframe |
Strategy League — fixed backtest that feeds the ranking
Export report Freqtrade logsRun finished · took 354.0s
ℹ️ This strategy uses a trailing stop — 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 90% 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 | 5 | -0.13 | -0.26 | 1 | 4 | 20.0 | -0.77 | 2h 58m |
| Nov 2025 | bearish trending high vol | 89 | +7.18 | 0.81 | 72 | 17 | 80.9 | -0.74 | 1h 19m |
| Oct 2025 | bearish trending low vol | 61 | +2.49 | 0.41 | 43 | 18 | 70.5 | -1.61 | 1h 26m |
| Sep 2025 | bullish choppy low vol | 18 | +0.31 | 0.17 | 13 | 5 | 72.2 | -0.28 | 1h 14m |
| Aug 2025 | bullish choppy low vol | 9 | +0.72 | 0.80 | 6 | 3 | 66.7 | -0.38 | 1h 48m |
| Jul 2025 | bullish choppy low vol | 52 | +3.87 | 0.74 | 35 | 17 | 67.3 | -0.24 | 2h 06m |
| Jun 2025 | bearish choppy low vol | 20 | +1.35 | 0.68 | 14 | 6 | 70.0 | -0.14 | 1h 38m |
| May 2025 | bullish trending low vol | 37 | +3.50 | 0.95 | 25 | 12 | 67.6 | -0.73 | 2h 01m |
| Apr 2025 | bullish choppy low vol | 15 | +1.31 | 0.88 | 11 | 4 | 73.3 | -1.23 | 1h 45m |
| Mar 2025 | bearish trending high vol | 31 | -1.06 | -0.34 | 17 | 14 | 54.8 | -1.15 | 2h 25m |
| Feb 2025 | bearish trending low vol | 23 | +0.67 | 0.29 | 14 | 9 | 60.9 | -0.97 | 2h 23m |
| Jan 2025 | bearish choppy low vol | 29 | -0.40 | -0.14 | 17 | 12 | 58.6 | -1.05 | 2h 08m |
| Dec 2024 | bullish trending low vol | 153 | +2.56 | 0.17 | 94 | 59 | 61.4 | -0.93 | 1h 59m |
| Nov 2024 | bullish trending low vol | 260 | +10.59 | 0.41 | 182 | 78 | 70.0 | -1.19 | 1h 56m |
| Oct 2024 | bullish choppy low vol | 5 | +0.40 | 0.80 | 3 | 2 | 60.0 | -0.68 | 2h 17m |
| Sep 2024 | bearish choppy low vol | 9 | +0.19 | 0.21 | 5 | 4 | 55.6 | -0.76 | 2h 26m |
| Aug 2024 | bearish choppy high vol | 17 | +1.00 | 0.59 | 9 | 8 | 52.9 | -1.04 | 2h 21m |
| Jul 2024 | bearish trending low vol | 9 | +0.63 | 0.69 | 6 | 3 | 66.7 | -1.08 | 1h 59m |
| Jun 2024 | bearish choppy low vol | 8 | -0.47 | -0.58 | 4 | 4 | 50.0 | -1.27 | 2h 45m |
| May 2024 | bullish choppy high vol | 15 | -0.10 | -0.07 | 8 | 7 | 53.3 | -1.23 | 3h 01m |
| Apr 2024 | bearish choppy high vol | 16 | -3.51 | -2.19 | 8 | 8 | 50.0 | -1.03 | 2h 15m |
| Mar 2024 | bullish trending high vol | 97 | +8.76 | 0.90 | 70 | 27 | 72.2 | -0.53 | 1h 51m |
| Feb 2024 | bullish trending low vol | 57 | +3.29 | 0.58 | 41 | 16 | 71.9 | -0.55 | 1h 51m |
| Jan 2024 | bearish choppy high vol | 76 | +1.36 | 0.18 | 48 | 28 | 63.2 | -1.17 | 1h 57m |
| Dec 2023 | bullish trending low vol | 135 | +4.80 | 0.36 | 90 | 45 | 66.7 | -0.61 | 1h 57m |
| Nov 2023 | bullish trending low vol | 56 | +1.94 | 0.35 | 34 | 22 | 60.7 | -0.8 | 2h 08m |
| Oct 2023 | bullish trending low vol | 13 | -0.42 | -0.32 | 5 | 8 | 38.5 | -0.56 | 2h 48m |
| Sep 2023 | bearish choppy low vol | 11 | +0.40 | 0.36 | 6 | 5 | 54.5 | -0.69 | 2h 55m |
| Aug 2023 | bearish choppy low vol | 13 | +1.31 | 1.01 | 9 | 4 | 69.2 | -1.03 | 2h 02m |
| Jul 2023 | bullish trending low vol | 40 | -0.76 | -0.19 | 22 | 18 | 55.0 | -0.93 | 2h 19m |
| Jun 2023 | bullish trending low vol | 47 | +5.26 | 1.12 | 36 | 11 | 76.6 | -0.71 | 1h 56m |
| May 2023 | bearish choppy low vol | 1 | -0.13 | -1.29 | 0 | 1 | 0.0 | -0.7 | 3h 20m |
| Apr 2023 | bullish trending low vol | 18 | +0.60 | 0.33 | 10 | 8 | 55.6 | -0.84 | 2h 00m |
| Mar 2023 | bullish trending high vol | 35 | -0.86 | -0.25 | 16 | 19 | 45.7 | -0.95 | 2h 16m |
| Feb 2023 | bullish trending low vol | 35 | +0.08 | 0.02 | 21 | 14 | 60.0 | -0.59 | 2h 16m |
| Jan 2023 | bullish trending low vol | 77 | +5.61 | 0.73 | 47 | 30 | 61.0 | -1.21 | 2h 07m |
| Nov 2022 | bearish trending high vol | 59 | +1.09 | 0.18 | 36 | 23 | 61.0 | -2.02 | 2h 12m |
| Oct 2022 | bullish choppy low vol | 17 | -2.65 | -1.56 | 5 | 12 | 29.4 | -1.56 | 2h 57m |
| Sep 2022 | bearish choppy high vol | 21 | -1.24 | -0.59 | 10 | 11 | 47.6 | -0.79 | 2h 32m |
| Aug 2022 | bullish choppy high vol | 32 | -0.11 | -0.04 | 20 | 12 | 62.5 | -0.43 | 2h 05m |
| Jul 2022 | bearish trending high vol | 94 | +4.98 | 0.53 | 58 | 36 | 61.7 | -1.68 | 1h 58m |
| Jun 2022 | bearish trending high vol | 103 | +1.44 | 0.14 | 59 | 44 | 57.3 | -2.1 | 2h 14m |
| May 2022 | bearish trending high vol | 96 | +1.69 | 0.18 | 63 | 33 | 65.6 | -1.85 | 1h 47m |
| Apr 2022 | bearish choppy high vol | 22 | +1.35 | 0.62 | 17 | 5 | 77.3 | -0.23 | 1h 51m |
| Mar 2022 | bullish choppy high vol | 34 | +2.09 | 0.61 | 23 | 11 | 67.6 | -0.3 | 2h 04m |
| Feb 2022 | bearish trending high vol | 56 | +8.57 | 1.53 | 48 | 8 | 85.7 | -0.26 | 1h 25m |
| Jan 2022 | bearish trending high vol | 24 | +1.96 | 0.82 | 17 | 7 | 70.8 | -0.23 | 2h 04m |
| Dec 2021 | bearish trending high vol | 55 | +3.86 | 0.71 | 38 | 17 | 69.1 | -1.26 | 1h 54m |
| Nov 2021 | bullish trending high vol | 42 | -0.51 | -0.12 | 25 | 17 | 59.5 | -1.1 | 2h 24m |
| Oct 2021 | bullish trending high vol | 48 | +0.14 | 0.03 | 28 | 20 | 58.3 | -0.94 | 2h 14m |
| Sep 2021 | bearish trending high vol | 150 | +15.67 | 1.05 | 117 | 33 | 78.0 | -0.68 | 1h 30m |
| Aug 2021 | bullish trending high vol | 152 | +14.16 | 0.93 | 113 | 39 | 74.3 | -0.64 | 1h 41m |
| Jul 2021 | bearish trending high vol | 82 | +4.77 | 0.58 | 61 | 21 | 74.4 | -2.13 | 2h 20m |
| Jun 2021 | bearish trending high vol | 114 | +1.29 | 0.11 | 65 | 49 | 57.0 | -2.82 | 2h 11m |
| May 2021 | bearish trending high vol | 494 | +53.33 | 1.08 | 387 | 107 | 78.3 | -3.62 | 1h 21m |
| Apr 2021 | bearish choppy high vol | 353 | +24.48 | 0.69 | 271 | 82 | 76.8 | -1.86 | 1h 32m |
| Mar 2021 | bullish choppy high vol | 209 | +17.15 | 0.82 | 155 | 54 | 74.2 | -1.26 | 1h 41m |
| Feb 2021 | bullish trending high vol | 475 | +33.77 | 0.71 | 366 | 109 | 77.1 | -2.72 | 1h 30m |
| Jan 2021 | bullish trending high vol | 601 | +53.09 | 0.88 | 472 | 129 | 78.5 | -12.55 | 1h 24m |
Yearly breakdown
| Year | Trades | Profit % | Avg % | Win | Loss | Win % | DD % | Avg dur |
|---|---|---|---|---|---|---|---|---|
| 2025 | 389 | +19.81 | 0.51 | 268 | 121 | 68.9 | -1.61 | 1h 47m |
| 2024 | 722 | +24.70 | 0.34 | 478 | 244 | 66.2 | -1.27 | 1h 59m |
| 2023 | 481 | +17.83 | 0.37 | 296 | 185 | 61.5 | -1.21 | 2h 08m |
| 2022 | 558 | +19.17 | 0.34 | 356 | 202 | 63.8 | -2.1 | 2h 01m |
| 2021 | 2775 | +221.20 | 0.80 | 2098 | 677 | 75.6 | -12.55 | 1h 34m |
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-bias patterns detected
ran by Ron · took s
Lookahead analysis
freqtrade lookahead-analysis: detects strategies peeking at future candles.