Stratégie de suivi de la tendance de rupture des chaînes ATR

Auteur:ChaoZhang est là., Date: 2024-01-03 11:53:52 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise le canal ATR et la théorie de la rupture pour suivre les tendances en entrant lorsque le canal est cassé. Elle appartient aux stratégies de suivi des tendances.

Principe

Cette stratégie construit des bandes supérieures et inférieures avec des prix élevés, bas, rapprochés et l'indicateur ATR pour former un canal ATR. La largeur du canal est déterminée par la taille du paramètre ATR. Lorsque le prix traverse le canal, il est jugé comme le début d'une tendance, aux points où des positions longues ou courtes sont entrées. La stratégie a deux niveaux de signaux de trading. Lorsque le prix traverse une largeur ATR, il est considéré comme une tendance émergente, déclenchant le premier niveau de points d'achat/vente. Lorsque le prix traverse deux largeurs ATR, il est considéré comme une tendance accélérée, déclenchant le deuxième niveau de points d'achat/vente.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L'utilisation d'indicateurs ATR pour construire des canaux prend en compte la volatilité du marché mieux que les moyennes mobiles simples.
  2. Les points d'achat/de vente à deux niveaux permettent une entrée progressive avec des risques contrôlables.
  3. La théorie de l'évolution détermine avec précision les points clés de la tendance.
  4. Le code concis est facile à comprendre et à mettre en œuvre.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Le fait de s'appuyer sur un seul indicateur signifie une forte probabilité d'échec si l'ATR échoue.
  2. L'absence de stop loss et de gestion des positions conduit à un contrôle insuffisant des risques.
  3. L'utilité a besoin d'être vérifiée et peut être sous-performante dans des conditions de négociation en direct.
  4. Des paramètres incorrects peuvent provoquer des sacs à épée ou des surtensions.

Directions d'optimisation

Les orientations d'optimisation de cette stratégie comprennent:

  1. Ajout de filtres avec plusieurs indicateurs pour éviter les erreurs de jugement.
  2. Ajout de modules stop loss pour améliorer le contrôle des risques.
  3. Ajout de contrôle de position et de gestion de l'argent.
  4. Paramètre de réglage pour différents produits.
  5. Réduction de la fréquence des transactions et de la taille des positions pour les transactions en direct.

Résumé

Le cadre général de cette stratégie est clair et utilisable comme preuve de concept. Mais il existe des lacunes du trading en direct qui permettent des optimisations substantielles. Si les contrôles des risques et les fréquences de trading peuvent être encore améliorés, les perspectives d'application seraient bonnes.


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Myhaj_Lito

//@version=5
strategy("Renko Trend Strategy",shorttitle = "RENKO-Trend str.",overlay = true)
TF = input.timeframe(title='TimeFrame', defval="60")
ATRlength = input.int(title="ATR length", defval=60, minval=2, maxval=1000)

HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, ta.atr(ATRlength))


RENKOUP = float(na)
RENKODN = float(na)
H = float(na)
COLOR = color(na)
BUY = int(na)
SELL = int(na)
UP = bool(na)
DN = bool(na)
CHANGE = bool(na)

RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1]
COLOR := na(COLOR[1]) ? color.white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

// calculating 
if not CHANGE and close >= RENKOUP[1] + H * 2
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 2
    RENKODN := RENKOUP[1] + ATR
    COLOR := color.rgb(0, 255, 170,60)
    SELL := 0
    BUY += 2
    BUY


if not CHANGE and close >= RENKOUP[1] + H
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR
    RENKODN := RENKOUP[1]
    COLOR := color.rgb(0, 230, 38,60)
    SELL := 0
    BUY += 1
    BUY

if not CHANGE and close <= RENKODN[1] - H * 2
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 2
    RENKOUP := RENKODN[1] - ATR
    COLOR := color.rgb(255, 92, 43,60)
    BUY := 0
    SELL += 2
    SELL
if not CHANGE and close <= RENKODN[1] - H
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR
    RENKOUP := RENKODN[1]
    COLOR := color.rgb(245, 69, 69,60)
    BUY := 0
    SELL += 1
    SELL
//// STRATEGY 
if(UP)
    strategy.entry("Long",strategy.long)
if(DN)
    strategy.entry("Short",strategy.short)


// ploting 

bgcolor(COLOR)


Plus de