Guide d’installation et d’utilisation — SampleStrategy  (Freqtrade)

Guide d’installation et d’utilisation — SampleStrategy (Freqtrade)

Guide rapide : installation, configuration et exécution de SampleStrategy sur Freqtrade.

Ce guide présente en détail l'installation, la configuration et l'exécution de la stratégie SampleStrategy pour Freqtrade, avec un focus sur les notions de backtesting (test rétrospectif) et de dry-run (exécution à blanc).

Remarque : pour la définition des termes utilisés dans ce guide, consultez le Lexique complet des termes courants en trading.

1. Présentation de la stratégie

La SampleStrategy hérite de IStrategy et utilise les indicateurs RSI, TEMA et Bollinger Bands pour générer des signaux d'entrée et de sortie.

Sources & modules

  • import talib.abstract as ta : indicateurs RSI, TEMA, BB, patterns candlestick commentés (CDLENGULFING, CDL3INSIDE…)
  • from technical import qtpylib : helpers (crossed_above, awesome_oscillator, heikinashi)
  • freqtrade.strategy : interface IStrategy, paramètres Hyperopt (IntParameter, …), utilitaires (merge_informative_pair, stoploss_from_absolute)

Paramètres de la stratégie

AttributValeurDescription
INTERFACE_VERSION3Version de l’interface de stratégie.
can_shortFalseAutorise la position short.
minimal_roi{"60":0.01,"30":0.02,"0":0.04}ROI minimal par période (surchargé par config.json).
stoploss-0.10Seuil de stoploss.
trailing_stopFalseActivation du trailing stoploss (désactivé).
timeframe"5m"Timeframe des bougies.
process_only_new_candlesTrueTraite uniquement les nouvelles bougies.
use_exit_signalTrueUtilise le signal interne de sortie.
exit_profit_onlyFalseSortie uniquement en cas de profit.
ignore_roi_if_entry_signalFalseIgnore le ROI si un nouveau signal d’entrée apparaît.
startup_candle_count200Nombre de bougies requises avant génération de signaux.
order_types{entry: "limit", exit: "limit", stoploss: "market"}Types d’ordres pour entrée, sortie et stoploss.
stoploss_on_exchangeFalseSi True, place le stoploss directement sur l’exchange (order book) ; sinon, géré localement par le bot.
order_time_in_force{entry: "GTC", exit: "GTC"}Règles Time In Force.
plot_configConfiguration des graphiques (MACD, RSI, etc.).

Hyperparamètres

ParamètreDéfautDescriptionHyperoptable
buy_rsi30Seuil RSI entrée long
sell_rsi70Seuil RSI sortie long
short_rsi70Seuil RSI entrée short
exit_short_rsi30Seuil RSI sortie short

Conditions d'entrée & sortie

SignalConditions
enter_longRSI > buy_rsi + TEMA ≤ bande médiane + TEMA croissante + volume > 0
exit_longRSI > sell_rsi + TEMA > bande médiane + TEMA décroissante + volume > 0
enter_shortRSI > short_rsi + TEMA > bande médiane + TEMA décroissante + volume > 0
exit_shortRSI > exit_short_rsi + TEMA ≤ bande médiane + TEMA croissante + volume > 0

Explication des conditions de sortie

  • exit_long : déclenché quand RSI croise au-dessus de sell_rsi (70), que TEMA se trouve au-dessus de la bande médiane et est décroissante, et que le volume > 0.
  • exit_short : déclenché quand RSI croise au-dessus de exit_short_rsi (30), que TEMA se trouve au-dessous (ou égal) de la bande médiane et est croissante, et que le volume > 0.

TEMA : Triple Exponential Moving Average (moyenne mobile exponentielle triple), un indicateur technique pour lisser les données tout en réduisant le décalage.

Personnalisation rapide

  • Indicateurs additionnels (uncomment pour activer) :
    • ADX : dataframe["adx"] = ta.ADX(dataframe)
    • DMI : ta.PLUS_DM, ta.PLUS_DI, ta.MINUS_DM, ta.MINUS_DI
    • Aroon & Oscillator : ta.AROON, ta.AROONOSC
    • Awesome Oscillator : qtpylib.awesome_oscillator(dataframe)
    • Keltner Channel : qtpylib.keltner_channel(dataframe)
    • Ultimate Oscillator : ta.ULTOSC(dataframe)
    • CCI : ta.CCI(dataframe)
    • Inverse Fisher RSI : dataframe["fisher_rsi"], dataframe["fisher_rsi_norma"]
    • Stochastic Fast : ta.STOCHF(dataframe)
    • Stochastic RSI : ta.STOCHRSI(dataframe)
    • MACD : ta.MACD(dataframe)
    • MFI : ta.MFI(dataframe)
    • ROC : ta.ROC(dataframe)
    • EMA (périodes 3,5,10,21,50,100) : ta.EMA
    • SMA (périodes 50,100) : ta.SMA
    • Parabolic SAR : ta.SAR(dataframe)
    • Bollinger Bands : qtpylib.bollinger_bands et pondérées : qtpylib.weighted_bollinger_bands

Personnalisation avancée

  • Candlestick patterns : ta.CDLHAMMER, ta.CDLDRAGONFLYDOJI, ta.CDLENGULFING, ta.CDLHARAMI, etc. (commentés)
  • Heikin Ashi : qtpylib.heikinashi(dataframe)
  • Orderbook : self.dp.orderbook(pair, 1) pour best_bid/best_ask
  • Trailing Stoploss : activez trailing_stop = True et configurez trailing_stop_positive et offsets
  • Multi-timeframe : utilisez @informative et merge_informative_pair()
  • Graphiques personnalisés : configurez plot_config (main_plot, subplots)

2. Prérequis

  • Python 3.8+ et virtualenv (python3 --version)
  • Installation de Freqtrade : voir guide d’installation détaillé
  • TA‑Lib et CCXT installés (pip install TA-Lib ccxt)
  • Créez et activez l’environnement virtuel : python3 -m venv .venv && source .venv/bin/activate

3. Emplacement du fichier

Placez SampleStrategy.py dans votre dossier de stratégies personnelles :

user_data/strategies/sample_strategy.py

Assurez-vous que le nom de la classe correspond au nom de fichier :

class SampleStrategy(IStrategy):
    ...

4. Configuration de config.json

Dans user_data/config.json, définissez au minimum :

{
  "strategy": "SampleStrategy",
  "timeframe": "5m",
  "stake_currency": "USDT",
  "stake_amount": "unlimited",
  "dry_run": true,
  "minimal_roi": { "60": 0.01, "30": 0.02, "0": 0.04 },
  "stoploss": -0.10,
  "use_exit_signal": true,
  "exit_profit_only": false,
  "ignore_roi_if_entry_signal": false,
  "max_open_trades": 3,
  "exchange": { "name": "binance" },
  "pair_whitelist": ["BTC/USDT", "ETH/USDT"]
}

Remarque : les paramètres minimal_roi, stoploss et timeframe peuvent aussi être définis ou surchargés directement dans la classe.

4.1 Configuration des commissions

Vous pouvez indiquer le coût de la commission dans votre config.json (et/ou le surcharger en CLI). Par exemple, pour Binance Spot :

{
  ...,
  "exchange": {
    "name": "binance",
    "fee": {
      "maker": 0.00075,   // 0.075 %
      "taker": 0.0025     // 0.25 %
    },
    ...
  }
}

Selon votre version de Freqtrade, vous pouvez aussi trouver ces clés au même niveau que "exchange" :

{
  ...,
  "maker_fee": 0.00075,
  "taker_fee": 0.0025,
  ...
}

En backtesting, vous pouvez en plus passer les frais en CLI :

freqtrade backtesting \
  --config user_data/config.json \
  --strategy SampleStrategy \
  --fee-maker 0.00075 \
  --fee-taker 0.0025

Ou simplement :

freqtrade backtesting … --fee 0.0025  # même taux pour maker & taker

De plus, Freqtrade reconnaît automatiquement la propriété fee (taker) globale définie dans config.json. Si vous lancez le backtesting sans spécifier de flags de frais, vous devriez voir :

Using fee 0.2500% - custom fee from config file.

5. Principes de la stratégie

  • Entry
    • Indicateur principal : RSI.
    • Achat : RSI croise au-dessus de buy_rsi (par défaut 30).
    • Short : RSI croise au-dessus de short_rsi (par défaut 70) avec filtration TEMA et Bollinger.
  • Exit
    • Long : RSI croise au-dessus de sell_rsi (par défaut 70).
    • Short : RSI croise au-dessus de exit_short_rsi (par défaut 30).
    • Filtre par position de la TEMA par rapport à la bande médiane.

Indicateurs calculés : RSI (TA-Lib), TEMA, Bandes de Bollinger, ADX (options commentées : Keltner, CCI…).

Paramètres hyperoptables : buy_rsi, sell_rsi, short_rsi, exit_short_rsi.

6. Lancer la stratégie

Schéma d’installation et d’exécution de SampleStrategy
Schéma d’installation et d’exécution de SampleStrategy

6.1 Mode simulation (backtesting)

Exemple de commande sur la période du 1er janvier 2025 au 1er décembre 2025 :

freqtrade backtesting \
  --config user_data/config.json \
  --strategy SampleStrategy \
  --timerange 20250101-20251201

6.2 Mode trade (dry-run)

Pour valider la stratégie en conditions de marché réel sans risque :

freqtrade trade \
  --config user_data/config.json \
  --strategy SampleStrategy

7. Optimisation des hyperparamètres

Pour optimiser les seuils RSI en backtesting :

freqtrade hyperopt \
  --config user_data/config.json \
  --strategy SampleStrategy \
  --spaces buy,sell \
  --epochs 100

Astuce : remplacez --spaces par exit ou roi, ou ajoutez --time-limit 3600.

8. Mode graphique (Web UI)

Préparation de l’UI :

freqtrade install-ui

Cette commande compile les sources du front-end (Vue.js) et place les fichiers statiques dans user_data/web_ui/.

Freqtrade propose une interface Web pour lancer les backtests, la recherche d’hyperparamètres et le mode trade/dry-run directement depuis un navigateur.

freqtrade webserver --config user_data/config.json

Puis ouvrez http://127.0.0.1:8080 dans votre navigateur.

9. Personnalisation

  • Timeframe : modifiez timeframe = "5m" dans la classe ou dans config.json.
  • Ajout d’indicateurs : éditez la méthode populate_indicators().
  • ROI / stoploss : mettez à jour les dictionnaires minimal_roi et stoploss.
  • Trailing stop : activez trailing_stop_positive et trailing_stop_positive_offset.

10. Bonnes pratiques

  • Effectuez des backtests sur plusieurs mois et différentes paires.
  • Surveillez les logs pour détecter les signaux inattendus.
  • Utilisez Hyperopt pour ajuster plusieurs espaces de paramètres.
  • Ne passez en réel qu’après validation en backtest et en dry-run.

11. Dépannage / FAQ

  • Erreur unrecognized arguments : mettez à jour Freqtrade ou vérifiez les options CLI.
  • Frais ignorés : utilisez la clé globale fee dans config.json.
  • Activer le mode debug : freqtrade -v et consultez user_data/logs.

12. Liens utiles

13. Conclusion

Prêt ? Lancez dès maintenant votre hyperopt ou passez en execution en dry-run pour valider votre configuration et créer votre première stratégie live !

Articles similaires