Cette stratégie suit la tendance des prix des crypto-monnaies en fixant des prix élevés et bas de rupture.
Cette stratégie utilise principalement la méthode de la moyenne mobile pondérée pour déterminer s'il y a une tendance à la hausse ou à la baisse évidente. Plus précisément, elle enregistrera les prix les plus élevés et les plus bas sur une certaine période. Lorsque le prix de négociation réel dépasse le prix le plus élevé enregistré, on juge qu'une tendance à la hausse s'est produite et qu'elle sera longue. Lorsque le prix de négociation réel est inférieur au prix le plus bas enregistré, on juge qu'une tendance à la baisse s'est produite et qu'il sera court.
Les prix d'ouverture pour long et court sont définis par le paramètre d'entrée
Plus précisément, la logique principale de la stratégie est la suivante:
Grâce à cette boucle logique, il peut capturer les tendances à la hausse et à la baisse du prix et atteindre la tendance suivante.
Le plus grand avantage de cette stratégie est qu'en ajustant les paramètres, elle peut capturer automatiquement les tendances des prix sans avoir besoin d'un jugement manuel de la direction de la tendance.
En outre, cette stratégie est très adaptée au trading quantitatif et peut facilement réaliser un placement d'ordres automatisé.
Enfin, cette stratégie peut également maximiser les rendements en ajustant les paramètres.
Le plus grand risque de cette stratégie est que des paramètres mal réglés puissent entraîner des transactions trop fréquentes, des frais de négociation plus élevés et des pertes par glissement.
En outre, un ajustement inapproprié des paramètres peut également entraîner l'échec de la capture des tendances des prix dans le temps, manquant des opportunités de trading.
Enfin, cette stratégie est trop sensible au bruit de marché à court terme, qui peut générer des signaux de négociation erronés.
Les aspects suivants peuvent être encore optimisés pour cette stratégie:
Ajoutez une logique de stop-loss. Cela permet d'arrêter la perte lorsque les pertes dépassent un certain pourcentage pour éviter des pertes plus importantes.
Ajoutez des filtres d'indicateurs techniques tels que la moyenne mobile, KDJ pour juger de la tendance globale afin d'éviter trop de trading en raison du bruit à court terme.
Optimiser la logique de réglage des paramètres. Le mécanisme de changement adaptatif peut être réglé pour les paramètres ENTRY et EXIT plutôt que pour le réglage statique afin qu'ils puissent s'ajuster en fonction des conditions du marché.
Utilisez l'apprentissage automatique pour former des paramètres optimaux. Obtenez les paramètres d'entrée et de sortie optimaux pour l'environnement actuel du marché grâce à une formation massive de données historiques.
Le plus grand avantage de cette stratégie est qu'en capturant les tendances des prix, elle permet de réaliser un trading automatisé, ce qui peut réduire l'impact des émotions humaines sur le trading, réduire les risques et améliorer l'efficacité.
Les principaux risques de la stratégie sont les paramètres mal réglés et la sursensibilité au bruit du marché, qui doivent être améliorés par des filtres d'indicateurs, une optimisation adaptative des paramètres, etc.
Dans l'ensemble, il s'agit d'une tendance simple et efficace suivant une stratégie adaptée au trading quantitatif et automatisé.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h 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/ // © JstMtlQC //@version=4 strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) /////////////// INPUT ENTRY EXIT entry= input(100, "ENTRY H/L") exit= input(50, "EXIT H/L") /////////////// Backtest Input FromYear = input(2015, "Backtest Start Year") FromMonth = input(1, "Backtest Start Month") FromDay = input(1, "Backtest Start Day") ToYear = input(2999, "Backtest End Year") ToMonth = input(1, "Backtest End Month") ToDay = input(1, "Backtest End Day") /////////////// Backtest Setting start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false /////////////// BUY OPEN PLOT highestpricelong = highest(high,entry)[1] plot(highestpricelong, color=color.green, linewidth=2) /////////////// BUY CLOSE PLOT lowestpricelong = lowest(high,exit)[1] plot(lowestpricelong, color=color.green, linewidth=2) /////////////// SHORT OPEN PLOT lowestpriceshort = lowest(low,entry)[1] plot(lowestpriceshort, color=color.red, linewidth=2) /////////////// SHORT CLOSE PLOT highestpriceshort = highest(low,exit)[1] plot(highestpriceshort, color=color.red, linewidth=2) /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// CONDITION LONG SHORT ////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////// SHORT entryshort= crossunder(close, lowestpriceshort) exitshort= crossover(close,highestpriceshort) /////////////// LONG exitlong= crossover(close, lowestpricelong) entrylong= crossover(close,highestpricelong) /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// LONG and SHORT ORDER ////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////// LONG if (entrylong) strategy.entry("LongEntry", strategy.long, when = window()) if (exitlong or entryshort) strategy.close("LongEntry", when=window()) /////////////// SHORT if (entryshort) strategy.entry("short", strategy.short, when = window()) if (exitshort or entrylong) strategy.close("short", when=window())