Profit dynamique suivant la stratégie de tendance

Auteur:ChaoZhang est là., Date: 2023-12-29 16:06:54 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie Dynamic Take Profit Following Trend détecte les tendances à long terme et les retraits à court terme pour atteindre l'achat bas et la vente élevée, dans le but de poursuivre les tendances haussières.

La logique de la stratégie

La logique d'achat de cette stratégie est la suivante: lorsqu'une tendance à la hausse à long terme apparaît (EMA à 200 jours augmente, RSI à 200 jours supérieur à 51) et qu'un recul à court terme se produit (les 2 derniers chandeliers montrent des prix de clôture en baisse), des positions longues sont ouvertes.

La logique de vente est la suivante: tirer profit lorsque le prix augmente de plus d'une unité de volatilité; arrêter la perte lorsque le prix diminue de plus de 2 unités de volatilité.

L'unité de volatilité est calculée comme: 2 fois l'écart type des prix de clôture au cours des 50 derniers jours.

Analyse des avantages

Le plus grand avantage de cette stratégie est qu'elle peut détecter dynamiquement les tailles de volatilité de différentes pièces et définir des niveaux de stop loss/take profit en conséquence.

Un autre avantage est que la combinaison de jugements à long terme et à court terme peut filtrer efficacement les fausses ruptures.

Analyse des risques

Le plus grand risque de cette stratégie est le paramétrage de l'unité stop loss/take profit. Si la volatilité est trop élevée, les distances de prise de profit peuvent être trop proches pour poursuivre la tendance haussière; si la volatilité est trop faible, le stop loss peut être déclenché trop rapidement.

Un autre risque réside dans la dépendance de la stratégie aux tendances à court terme.S'il y a une tendance haussière à long terme sans recul à court terme, le moment d'entrée serait manqué.Cela peut nécessiter des indicateurs d'aide supplémentaires.

Directions d'optimisation

La stratégie peut être optimisée dans les directions suivantes:

  1. Ajouter des jugements de l'EMA à plus longue période pour éviter les erreurs unitaires de volatilité

  2. Ajouter des indicateurs comme le volume des transactions pour juger des tendances, réduire la dépendance aux bougies à court terme

  3. Optimiser les conditions d'entrée et de sortie, fixer des règles d'entrée plus strictes

  4. Combiner des algorithmes d'apprentissage automatique pour déterminer la direction de la tendance, obtenir un taux de victoire plus élevé

Conclusion

La stratégie Dynamic Take Profit Following Trend Strategy a une logique claire dans son noyau: définir dynamiquement les unités stop loss/take profit. Cette stratégie peut adapter automatiquement les paramètres entre les pièces sans avoir besoin d'entrées de pourcentage manuelles. Pendant ce temps, la combinaison de la double confirmation des tendances à long terme et à court terme peut filtrer efficacement les faux signaux. Avec des optimisations supplémentaires, cette stratégie peut devenir une stratégie de poursuite de tendance très efficace.


/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot

strategy(shorttitle='Take Profit On Trend',
 title='Take Profit On Trend (by BHD_Trade_Bot)',
 overlay=true,
 initial_capital = 15,
 default_qty_type = strategy.cash,
 default_qty_value = 15,
 commission_type=strategy.commission.percent,
 commission_value=0.1)



//Backtest Time
start_day = 1
start_month = 1
start_year = 2021
end_day = 1
end_month = 1
end_year = 2050
start_time = timestamp(start_year, start_month, start_day, 00, 00)
end_time = timestamp(end_year, end_month, end_day, 23, 59)
is_back_test_time() =>
    time >= start_time and time <= end_time ? true : false

// Last bar
h1_last_bar = (timenow - time)/1000/60/60 < 2



// EMA
ema50 = ema(close, 50)
ema200 = ema(close, 200)

// RSI length 200
rsi200 = rsi(close, 200)

// Bollinger Bands length 50
bb50 = 2 * stdev(close, 50)

// BHD Unit
bhd_unit = sma(bb50, 100)
bb50_upper = ema50 + bhd_unit
bb50_lower = ema50 - bhd_unit



// All n candles is going down
all_body_decrease(n) =>
    isValid = true
    for i = 0 to (n - 1)
        if (close[i] > close[i + 1])
            isValid := false
            break
    isValid



// ENTRY

// Long-term uptrend
entry_condition1 = rsi200 > 51 

// Short-term downtrend
entry_condition2 = all_body_decrease(2) 

ENTRY_CONDITION = entry_condition1 and entry_condition2

if (ENTRY_CONDITION and is_back_test_time())
    strategy.entry("entry", strategy.long)



// CLOSE CONDITIONS

// Price increase 1 BHD unit
TAKE_PROFIT = close > strategy.position_avg_price + bhd_unit

// Price decrease 2 BHD unit
STOP_LOSS = close < strategy.position_avg_price - bhd_unit * 2

CLOSE_CONDITION = TAKE_PROFIT or STOP_LOSS

if (CLOSE_CONDITION or h1_last_bar)
    strategy.close("entry")



// Draw
plot(ema50)
plot(ema200, color=color.yellow)
plot(bb50_upper)
plot(bb50_lower)


Plus de