Stratégie de swing trading

Auteur:ChaoZhang est là., Date: 2023-10-11 16:29:37 Je suis désolé
Les étiquettes:

Résumé

Il s'agit d'une stratégie de suivi des tendances basée sur un croisement des moyennes mobiles, combinée à une gestion des arrêts de pertes/prêts et à un effet de levier, visant à identifier les tendances sur plusieurs marchés et à maximiser les bénéfices.

La logique de la stratégie

La stratégie utilise le croisement des moyennes mobiles rapides et lentes comme signaux de trading.

Pour filtrer les transactions bruyantes des tendances mineures, il utilise également un MA de 200 jours comme filtre de tendance.

La stratégie utilise des arrêts de négociation de gamme. Après l'entrée, des niveaux de stop loss et de take profit à pourcentage fixe sont définis, par exemple 1% de stop loss et 1% de take profit. Les positions seront fermées lorsque le prix atteint le stop loss ou le take profit.

L'effet de levier est utilisé pour amplifier les bénéfices commerciaux.

Analyse des avantages

  • L'un des avantages est qu'il peut identifier les tendances sur plusieurs marchés, y compris les crypto, les actions et les contrats à terme, ce qui rend la stratégie largement applicable.

  • L'utilisation d'un croisement MA rapide/lente et d'un filtre de tendance permet de mieux identifier la direction de la tendance et d'obtenir un bon taux de gain sur les marchés en tendance.

  • Les arrêts de négociation de gamme aident à contrôler les pertes d'une seule transaction dans la gamme supportable, ce qui permet un fonctionnement stable de la stratégie.

  • L'effet de levier amplifie les bénéfices commerciaux, en utilisant pleinement l'avantage stratégique.

  • La conception d'interfaces visuelles avec différentes couleurs de fond pour les marchés taureau/ours offre une vision intuitive du marché.

Analyse des risques

  • La stratégie est orientée vers la tendance et peut donc être sous-performante sur les marchés instables et en marge.

  • Les niveaux doivent être ajustés en fonction de la volatilité spécifique du marché.

  • L'effet de levier amplifie la taille de la position ainsi que les risques.

  • La nature en retard des moyennes mobiles peut entraîner des signaux de trading retardés.

Directions d'optimisation

  • Tester différentes combinaisons de paramètres et sélectionner les longueurs optimales de MA rapide/lente.

  • Incorporer d'autres indicateurs ou modèles comme signaux filtrants pour améliorer la précision, par exemple arrêt ATR, RSI, etc.

  • Recherchez d'autres outils d'identification des tendances comme ADX pour améliorer davantage la capacité de capture des tendances.

  • Utiliser des modèles d'apprentissage automatique pour optimiser les signaux stratégiques et trouver des points d'entrée/sortie plus efficaces.

  • Considérez un stop loss/take profit dynamique basé sur la volatilité et les conditions du marché pour des stops plus raisonnables.

Résumé

La stratégie utilise une approche systématique de suivi des tendances et utilise des arrêts / prise de profit et l'effet de levier pour contrôler le risque et augmenter les bénéfices.


/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////////////////////////////////////////////
// Bozz Strategy
// Developed for Godstime
// Version 1.1
// 11/28/2021
////////////////////////////////////////////////////////////////////////////////

//@version=4
// strategy("Bozz Strategy", "", true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, margin_long=0, margin_short=0)

// ----------------------------- Inputs ------------------------------------- //
source_ma_type = input("EMA", "Source MA Type", options=["SMA", "EMA"])
source_ma_length = input(50, "Source MA Length")
fast_ma_length = input(20, "Fast MA Length")
slow_ma_length = input(50, "Slow MA Length")
use_trend_filter = input(true, "Trend Filter")
trend_filter_ma_type = input("EMA", "Trend Filter MA Type", options=["SMA", "EMA"])
trend_filter_ma_length = input(200, "Trend Filter MA Period")
show_mas = input(true, "Show MAs")
swing_trading_mode = input(false, "Swing Trading")

// -------------------------- Calculations ---------------------------------- //
fast_ma = ema(close, fast_ma_length)
slow_ma = ema(close, slow_ma_length)
source_ma = source_ma_type == "EMA"? ema(close, source_ma_length): 
                                     sma(close, source_ma_length)
trend_filter_ma = trend_filter_ma_type == "EMA"? ema(close, trend_filter_ma_length): 
                                                 sma(close, trend_filter_ma_length)

// --------------------------- Conditions ----------------------------------- //
uptrend = not use_trend_filter or close > trend_filter_ma
buy_cond = crossover(fast_ma, slow_ma) and uptrend

downtrend = not use_trend_filter or close < trend_filter_ma
sell_cond = crossunder(fast_ma, slow_ma) and downtrend

// ---------------------------- Plotting ------------------------------------ //
bgcolor(use_trend_filter and downtrend? color.red: use_trend_filter? color.green: na)
plot(show_mas? fast_ma: na, "Fast MA", color.green)
plot(show_mas? slow_ma: na, "Slow MA", color.red)
plot(show_mas? source_ma: na, "Source MA", color.purple)
plot(show_mas? trend_filter_ma: na, "Trend Filter MA", color.blue)


// ---------------------------- Trading  ------------------------------------ //
// Inputs
sl_perc = input(1.0, "Stop Loss (in %)", group="Backtest Control")/100
tp_perc = input(1.0, "Take Profit (in %)", group="Backtest Control")/100
leverage = input(10, "Leverage", maxval=100, group="Backtest Control")
bt_start_time = input(timestamp("2021 01 01"), "Backtest Start Time", input.time, group="Backtest Control")
bt_end_time = input(timestamp("2021 12 31"), "Backtest End Time", input.time, group="Backtest Control")

// Trading Window
in_trading_window = true
trade_qty = (strategy.equity * leverage) / close 

// Long Side
strategy.entry("Long Entry", strategy.long,  when=buy_cond and in_trading_window)
long_tp = strategy.position_avg_price * (1 + tp_perc)
long_sl = strategy.position_avg_price * (1 - sl_perc)
if not swing_trading_mode
    strategy.exit("Long Exit", "Long Entry", limit=long_tp, stop=long_sl)

// Short Side
strategy.entry("Short Entry", strategy.short, when=sell_cond and in_trading_window)
short_tp = strategy.position_avg_price * (1 - tp_perc)
short_sl = strategy.position_avg_price * (1 + sl_perc)
if not swing_trading_mode
    strategy.exit("Short Exit", "Short Entry", limit=short_tp, stop=short_sl)

// End of trading window close
strategy.close_all(when=not in_trading_window)

Plus de