La stratégie de suivi de la réversion extrême suit les points extrêmes de la fourchette de fluctuation des prix et effectue des positions longues/courtes d'inversion aux points extrêmes pour suivre les tendances.
La stratégie repose principalement sur les principes suivants:
Utiliser la fonction de sécurité pour obtenir les prix élevés et bas de différentes lignes K du cycle afin de détecter si elles sont égales aux lignes précédentes, afin de juger si de nouveaux points extrêmes sont atteints.
Lorsque de nouveaux points extrêmes sont détectés, effectuez une position courte si le marché est actuellement haussier et une position longue si le marché est actuellement baissier.
Définir le point de stop loss comme le nouveau point extrême formé après que la position longue/courte ait été établie pour suivre les tendances avec stop loss.
Définir la fourchette de temps effective de la stratégie en configurant l'année de début, le mois et la date pour effectuer des ajustements pour différentes périodes.
Les principaux avantages de cette stratégie sont les suivants:
Capter efficacement les points extrêmes des variations de prix et faire des positions d'inversion pour suivre les tendances.
Configurer la gestion du temps et des risques pour contrôler le temps d'utilisation et le capital de la stratégie afin de réduire les risques.
Utiliser de nouveaux points extrêmes comme points de stop loss pour ajuster dynamiquement les positions de stop loss en fonction de la nouvelle plage de fluctuation des prix.
Une logique de stratégie simple et claire pour une compréhension, un débogage et une optimisation faciles.
Cette stratégie comporte également certains risques:
Il pourrait y avoir une erreur de jugement dans la détermination des points extrêmes, provoquant des erreurs dans les positions longues / courtes.
La position stop loss est proche du point d'entrée, ce qui augmente la probabilité d'un stop loss déclenché.
Aucune considération sur les positions pyramidales le long des tendances et les positions inverses, moins rentables sur les marchés en tendance.
La configuration de la devise et de l'intervalle de temps est assez rigide, ne peut pas effectuer d'ajustements dynamiques.
La stratégie peut être optimisée dans les aspects suivants:
Optimisez la logique du point extrême avec plus de filtres pour éviter les erreurs de jugement.
Ajouter un mécanisme de stop loss flottant basé sur les variations de prix et de volatilité pour ajuster la distance de stop loss.
Mettre en place des modules pyramidaux et de position inversée basés sur les tendances et la volatilité pour améliorer la rentabilité.
Mettre en place un mécanisme d'optimisation des paramètres pour les tests automatiques et le réglage des paramètres.
Incorporer des modèles d'apprentissage automatique pour faciliter la prise de décision stratégique.
La stratégie de suivi de l'extrême inversion fonctionne en capturant les extrêmes de prix et en suivant les tendances, adaptable et rentable.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Extremum Strategy v1.0", shorttitle = "Extremum str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") tf = input('W', title = 'Timeframe for extremums') fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Levels highm = request.security(syminfo.tickerid, tf, high[1]) lowm = request.security(syminfo.tickerid, tf, low[1]) upcolorm = highm == highm[1] ? lime : na dncolorm = lowm == lowm[1] ? red : na plot(highm, color = upcolorm, linewidth = 3) plot(lowm, color = dncolorm, linewidth = 3) //Signals size = strategy.position_size up = size > 0 ? highm * 1000000 : highm != highm[1] ? highm : up[1] dn = size < 0 ? 0 : lowm != lowm[1] ? lowm : dn[1] exit = true //Trading lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if highm > 0 and high[1] < highm and highm == highm[1] strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = up) if lowm > 0 and low[1] > lowm and lowm == lowm[1] strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dn) if exit strategy.close_all()