
La stratégie d’arrêt de tendance dynamique de suivi de tendance par la détection de la tendance à long terme et de la reprise à court terme, pour réaliser des achats bas et des ventes élevées, pour la poursuite de la tendance à la hausse. La stratégie utilise également des unités de volatilité pour détecter la taille des gains et des pertes, ce qui la rend applicable à toutes les pièces sans avoir à se soucier des variations en pourcentage.
La logique d’achat de cette stratégie est la suivante: acheter et ouvrir une position lorsque des tendances à la hausse à long terme ((l’EMA à 200 jours est supérieure à 51 au RSI à 200 jours)) et une correction à la baisse à court terme ((les 2 dernières lignes K sont en baisse)) apparaissent.
La logique du selling est la suivante: arrêtez lorsque le prix augmente de plus d’une unité de fluctuation; arrêtez lorsque le prix baisse de plus de deux unités de fluctuation.
L’unité de fluctuation est calculée en utilisant 2 fois la différence de la norme de clôture de 50 jours comme unité de fluctuation de base. Ainsi, il est possible de détecter les fluctuations propres aux différentes monnaies sans avoir à définir de pourcentage.
Le plus grand avantage de cette stratégie est qu’il est possible de détecter dynamiquement la taille des fluctuations de différentes pièces, en réglant les unités de stop-loss en fonction des fluctuations de la pièce elle-même. Cela évite le problème du réglage fixe du stop-loss en pourcentage et permet de s’adapter automatiquement à plus de pièces.
Un autre avantage est que la combinaison de jugements à court et à long terme permet de filtrer efficacement les fausses ruptures. L’utilisation de tendances à long terme permet de déterminer les pièces qui pourraient augmenter à l’avenir, et la combinaison de signaux de rétroaction à court terme permet d’éviter efficacement les fausses signaux tels que le squeeze de la bande de Brin.
Le plus grand risque de cette stratégie réside dans la définition de l’unité de stop loss. Si l’oscillation est trop grande, la distance d’arrêt peut être trop proche et ne peut pas être suivie de manière continue; si l’oscillation est trop petite, la perte peut être trop rapide. Cela nécessite une plus longue période d’EMA comme auxiliaire pour éviter des erreurs de jugement de l’unité d’oscillation.
Un autre risque est la dépendance de la stratégie à l’égard des jugements de tendance à court terme. Si une hausse à long terme se produit mais qu’il n’y a pas de correction à court terme, le moment d’entrée est manqué. Cela peut nécessiter l’ajout d’autres indicateurs de jugement auxiliaires.
Cette stratégie peut être optimisée dans les directions suivantes:
Augmentation de l’évaluation des EMA à plus long terme pour éviter les erreurs de fluctuation
Augmenter les indicateurs de tendance tels que le volume des transactions et réduire la dépendance à la ligne k à court terme
Optimiser les conditions d’ouverture et de placement des positions, en établissant des règles d’entrée plus strictes
Un meilleur taux de réussite grâce à une combinaison d’algorithmes d’apprentissage automatique et de détection de tendances
L’idée générale de la stratégie de suivi des tendances en stop-loss dynamique est claire, son cœur réside dans la définition d’unités de fluctuation dynamique. La stratégie peut s’adapter automatiquement aux unités de gain et de perte de différentes devises, sans avoir besoin de définir manuellement le pourcentage.
/*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)