La stratégie Take Profit on Trend vise à détecter les tendances à long terme et les retombées à court terme, en prenant des positions longues pendant les tendances globales à la hausse tout en capturant les baisses à court terme, avec des niveaux de stop loss et de profit raisonnables définis pour suivre la tendance et réaliser des bénéfices en temps opportun.
La stratégie utilise principalement l'EMA et le RSI pour déterminer les tendances à long terme et à court terme. Plus précisément, elle utilise l'EMA de 50 jours et l'EMA de 200 jours pour juger des tendances à long terme et le RSI pour mesurer la force de la tendance.
Après avoir entré dans une position, la stratégie définit des conditions de stop loss et de take profit. Lorsque le prix augmente de plus de 2x unités BHD au-dessus du prix d'entrée, les bénéfices sont pris. Lorsque le prix tombe de plus de 3x unités BHD en dessous du prix d'entrée, la position est arrêtée. L'unité BHD est calculée en fonction de l'amplitude des 200 derniers chandeliers.
De cette façon, la stratégie tient pleinement compte des caractéristiques de tendance à long et à court terme, en augmentant les bénéfices tout en contrôlant les risques, en suivant la tendance tout en réalisant des bénéfices en temps opportun.
La stratégie présente les avantages suivants:
Considère les tendances à long et à court terme, combinées à des indicateurs de force, évite les entrées aveugles sur des marchés variés.
Les entrées suivent la tendance, taux de victoire plus élevé.
Les points de prise de profit et de stop loss permettent une prise de profit et un contrôle des risques en temps opportun.
TP et SL sont dynamiques, basées sur la volatilité, relativement raisonnables.
Les tests antérieurs montrent de bons rendements et de la stabilité à travers les symboles et les délais.
Une logique simple et claire, facile à comprendre et à mettre en œuvre pour tous les niveaux de compétences.
La stratégie comporte également certains risques:
Une erreur de jugement à long terme ou à court terme conduisant à une mauvaise direction d'entrée.
Des chutes de marché de type falaise peuvent pénétrer les arrêts.
Un mauvais paramètre affecte négativement les performances.
Le TP est trop serré, il peut sortir prématurément.
Le backtest ≠ les performances en direct, une optimisation continue est nécessaire.
Les solutions:
Optimiser les paramètres, ajuster les périodes de validation, ajouter des indicateurs de validation croisée.
Des arrêts plus larges, des mesures de position, d'autres contrôles de risque.
Des tests antérieurs pour évaluer les paramètres.
Optimisation dynamique des TP en fonction des conditions du marché.
Tests en cours, optimisation, réglage en direct.
La stratégie peut être encore optimisée par:
Paramètre de réglage, périodes MA, périodes unités BHD, etc.
Ajout d'indicateurs, MACD, KD, etc. pour une meilleure précision à court terme.
Optimisation du TP/SL, taille dynamique basée sur la volatilité, etc.
Ajout d'un dimensionnement des positions basé sur la force de la tendance.
Je teste la robustesse sur plus de symboles et de délais.
Ajout de filtres comme prix de clôture > ouvert pour éviter les pièges.
Incorporer l'apprentissage automatique pour une automatisation et une intelligence accrues.
Ils peuvent améliorer le taux de réussite, le rendement, la stabilité, l'adaptabilité, etc.
Dans l'ensemble, la stratégie Take Profit on Trend présente les avantages de considérer les tendances longues/courtes, les tendances suivantes, le TP/SL clair. C'est une approche de suivi de tendance stable et efficace. Mais des risques existent, nécessitant une optimisation continue et un ajustement en direct. La logique est claire et facile à mettre en œuvre. Il vaut la peine d'étudier et d'appliquer pour les traders. Avec une optimisation ultérieure, elle peut devenir une stratégie quantitative robuste.
/*backtest start: 2023-08-26 00:00:00 end: 2023-09-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // 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 // @version=5 strategy( shorttitle = 'Take Profit On Trend', title = 'Take Profit On Trend (by BHD_Trade_Bot)', overlay = true, calc_on_every_tick = true, calc_on_order_fills = true, use_bar_magnifier = true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.1) // Backtest Time Period start_year = input(title='Start year' ,defval=2021) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_time = timestamp(start_year, start_month, start_day, 00, 00) end_year = input(title='end year' ,defval=2050) end_month = input(title='end month' ,defval=1) end_day = input(title='end day' ,defval=1) end_time = timestamp(end_year, end_month, end_day, 23, 59) is_back_test_time() => true // EMA ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) // RSI rsi200 = ta.rsi(close, 200) // EMA_CD emacd = ema50 - ema200 emacd_signal = ta.ema(emacd, 50) hist = emacd - emacd_signal // BHD Unit bhd_unit = ta.rma(high - low, 200) * 2 bhd_upper = ema200 + bhd_unit bhd_lower = ema200 - 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 CONDITIONS // Long-term uptrend entry_condition1 = rsi200 > 51 and hist > 0 // Short-term downtrend entry_condition2 = all_body_decrease(2) ENTRY_CONDITIONS = entry_condition1 and entry_condition2 if ENTRY_CONDITIONS and is_back_test_time() strategy.entry('entry', strategy.long) // CLOSE CONDITIONS // Price increase 2 BHD unit take_profit = close > strategy.position_avg_price + bhd_unit * 2 // Price decrease 3 BHD unit stop_loss = close < strategy.position_avg_price - bhd_unit * 3 CLOSE_CONDITIONS = take_profit or stop_loss if CLOSE_CONDITIONS strategy.close('entry') // Draw plot(ema50, color=color.orange, linewidth=2) plot(ema200, color=color.purple, linewidth=2) bhd_upper_line = plot(bhd_upper, color=color.teal) bhd_lower_line = plot(bhd_lower, color=color.teal) fill(bhd_upper_line, bhd_lower_line, color=color.new(color.teal, 90))