
La stratégie utilise un indice de tendance combiné à un indicateur aléatoire pour générer un signal de négociation. Les lignes DI+, DI- et ADX de l’indice de tendance sont utilisées pour déterminer la direction et la force de la tendance, et les lignes%K de l’indicateur aléatoire sont utilisées pour déterminer si un achat est trop élevé ou trop élevé. La stratégie génère un signal à plusieurs têtes lorsque DI+ est supérieur à DI-, ADX est supérieur à 25 et K est inférieur à 20%; et un signal à vide lorsque DI- est supérieur à DI+, ADX est supérieur à 25 et K est supérieur à 80%.
La logique centrale de cette stratégie repose sur les éléments suivants:
Indice de tendance pour juger des tendancesLorsque DI+ est supérieur à DI-, il s’agit d’une tendance à plusieurs têtes; lorsque DI- est supérieur à DI+, il s’agit d’une tendance à la tête nue. L’ADX est utilisé pour juger de la force d’une tendance. Plus la valeur est grande, plus la tendance est évidente.
Un indicateur aléatoire pour juger de l’achat et de la vente: La ligne %K dans l’indicateur aléatoire indique la position du prix de clôture actuel par rapport au prix le plus élevé et le prix le plus bas d’une période donnée, pour déterminer si le marché est en survente ou en survente. Lorsque%K est inférieur à 20, il est en survente et supérieur à 80, il est en survente.
Le signal est logique.: Combinant l’indicateur de tendance et l’indicateur aléatoire, la stratégie génère un signal de tête vide lorsque DI+ est supérieur à DI- ((trend à plusieurs têtes), ADX supérieur à 25 ((trend plus évident) et% K inférieur à 20 ((survente)); génère un signal de tête vide lorsque DI- est supérieur à DI+ ((trend à tête vide), ADX supérieur à 25 et% K supérieur à 80 ((survente)).
Mode d’arrêt dynamique: enregistre le prix le plus élevé et le prix le plus bas après le dernier point d’entrée et utilise cela comme un stop-loss dynamique. Ainsi, il est possible de verrouiller les bénéfices ou de contrôler les risques en fonction des fluctuations du marché.
Les principaux avantages de cette stratégie sont les suivants:
La combinaison de l’indicateur de tendance et de l’indicateur aléatoire permet une meilleure fiabilité. L’indicateur de tendance détermine la direction de la tendance principale, l’indicateur aléatoire capte les caractéristiques locales, les deux se complètent.
Un mécanisme d’arrêt dynamique innovant. Le point d’arrêt est défini en fonction des fluctuations récentes, permettant de contrôler le risque en fonction de la situation réelle du marché et d’obtenir un bon effet d’arrêt.
Les paramètres de stratégie sont moins nombreux et faciles à mettre en œuvre. Les paramètres principaux ne sont que la longueur de calcul des indicateurs, ce qui facilite l’ajustement et l’optimisation de la stratégie.
Cette stratégie peut être utilisée sur les marchés financiers tels que les actions, les devises et les crypto-monnaies.
Il est écrit en script pin et peut être appliqué directement sur une plateforme de trading, ce qui est pratique et rapide.
Cette stratégie comporte également des risques à prendre en compte:
Lorsque la tendance est instable, il est facile de générer de faux signaux. L’ADX est relativement faible à ce moment-là, il faut réduire la position pour éviter le risque.
L’indicateur aléatoire est lui-même un indicateur rétrospectif, le marché peut avoir été inversé au moment de la génération du signal. Il doit être combiné avec d’autres indicateurs précurseurs de manière appropriée.
Le mécanisme d’arrêt dynamique ne peut pas éviter complètement les chocs d’une situation de marché majeure. Il est recommandé de régler raisonnablement la distance entre les points d’arrêt.
Une mauvaise configuration des paramètres peut également affecter l’efficacité de la stratégie. Les paramètres de longueur d’indicateur appropriés doivent être choisis.
Il est nécessaire de suivre de près l’environnement global du marché. La stratégie doit être suspendue en cas d’événement majeur de Black Swan pour éviter des pertes anormales.
Cette stratégie peut être optimisée dans les domaines suivants:
Ajout d’autres indicateurs de jugement, formation de filtres multiples, amélioration de la fiabilité du signal. Par exemple, ajout d’une tendance de jugement d’équilibre, jugement de déviation du MACD, etc.
Optimiser les paramètres et choisir la meilleure combinaison de paramètres. La longueur de l’indicateur la plus appropriée peut être déterminée en remontant les données historiques.
Différents paramètres sont définis en fonction des variétés et des cycles de négociation. Les variétés adaptées aux transactions à haute fréquence peuvent réduire le cycle de calcul.
Combiné à la fonction getInfo et à la fonction d’enregistrement des journaux, il permet d’envoyer des données détaillées sur les journaux de transactions et les indicateurs pour faciliter l’analyse et l’optimisation des stratégies.
Ajout d’un graphique graphique dans l’éditeur de pines pour afficher les points de signaux de négociation.
Développement d’une fonction d’alerte, permettant d’envoyer des messages de rappel lorsque certaines conditions sont remplies, afin de faciliter l’intervention rapide des transactions.
Cette stratégie utilise les avantages de l’indice de tendance et des indicateurs aléatoires pour déterminer la direction de la tendance et localiser les zones de survente et de survente, afin de générer des signaux de négociation. En même temps, la conception innovante de la méthode d’arrêt dynamique des pertes rend le contrôle des risques plus intelligent et automatisé.
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DMI with Stochastic and Dynamic Stop-Loss", shorttitle="DMI_Stoch_SL", overlay=true)
length = input(14, title="DMI Length")
adxThreshold = input(25, title="ADX Threshold")
stochKLength = input(14, title="Stochastic %K Length")
stochDLength = input(3, title="Stochastic %D Length")
[diPlus, diMinus, adx] = ta.dmi(length, length)
stochKLine = ta.stoch(close, high, low, stochKLength)
var float lowestClose = na
var float highestClose = na
lowestClose := na(lowestClose) ? close : math.min(lowestClose, close)
highestClose := na(highestClose) ? close : math.max(highestClose, close)
longCondition = (diPlus > diMinus) and (adx > adxThreshold) and (stochKLine < 20)
shortCondition = (diMinus > diPlus) and (adx > adxThreshold) and (stochKLine > 80)
if longCondition
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", "Buy", stop=lowestClose)
if shortCondition
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", "Sell", stop=highestClose)