Stratégie de trading de volume récursif


Date de création: 2024-01-31 16:56:31 Dernière modification: 2024-01-31 16:56:31
Copier: 0 Nombre de clics: 596
1
Suivre
1617
Abonnés

Stratégie de trading de volume récursif

Aperçu

Cette stratégie est basée sur une stratégie de suivi de tendance et de rupture de l’indicateur des bandes récurrentes développée par Alex Grover. La stratégie utilise les bandes récurrentes pour déterminer la tendance des prix et les niveaux de résistance de soutien critique, combinée à des conditions de dynamisme pour filtrer les fausses ruptures, permettant des entrées de faible fréquence mais de haute qualité.

Principe de stratégie

Calcul de l’indicateur de bande récurrente

L’indicateur de la bande récurrente est composé de la bande supérieure, de la bande inférieure et de la ligne médiane. Le calcul de l’indicateur est le suivant:

Bande supérieure = valeur maximale de la première ligne K, prix de clôture + n*Le taux de volatilité Bande inférieure = valeur minimale de la bande inférieure de la ligne K précédente, prix de clôture - n*Le taux de volatilité
La ligne médiane est égale à (la bande supérieure + la bande inférieure) / 2

où n est un coefficient d’agrandissement, la fluctuation peut choisir l’ATR, l’écart-type, le canal moyen et une méthode RFV spéciale. La sensibilité de l’indicateur est contrôlée par le paramètre de longueur, et plus la valeur est grande, moins l’indicateur est susceptible d’être déclenché.

Règles de négociation stratégique

La stratégie consiste d’abord à détecter si la bande inférieure continue à monter et si la bande supérieure continue à descendre, afin d’éliminer les fausses ruptures.

Quand le prix est au-dessous de la barre, faites plus; quand le prix est au-dessus de la barre, faites moins.

La stratégie a également une logique de stop-loss.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Utilisation d’un cadre récurrent pour calculer les indicateurs de manière efficace et éviter les doubles calculs
  2. Les paramètres de l’indicateur sont réglables pour s’adapter à différents environnements de marché
  3. Combiner les tendances et les percées pour éviter les fausses percées
  4. Filtrage des conditions de mouvement pour assurer la qualité des signaux de transaction

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Une mauvaise configuration des paramètres peut entraîner une fréquence de transaction trop élevée ou une mauvaise qualité du signal
  2. Les changements de tendance macro-cyclique peuvent entraîner des pertes plus importantes
  3. Le manque de contrôle sur les points de basculement des tendances extrêmes pourrait amplifier les pertes.

Ces risques peuvent être maîtrisés par l’optimisation des paramètres, la mise en place de stop-loss et l’augmentation des points de glissement.

Direction d’optimisation

Cette stratégie peut également être optimisée dans les directions suivantes:

  1. Combinaison de plusieurs indicateurs cycliques pour une transaction à plusieurs périodes
  2. Ajout de modules d’apprentissage automatique pour optimiser l’adaptation des paramètres
  3. Augmentation de l’analyse de corrélation quantitative pour trouver la meilleure combinaison de paramètres
  4. Utilisation de l’apprentissage en profondeur pour améliorer la précision des signaux de prévision des trajectoires de prix

Résumer

Cette stratégie est globalement une stratégie de suivi de tendance très pratique et efficace. Elle est combinée à un cadre récurrent pour économiser des ressources de calcul, utilise la résistance de la tendance pour déterminer la direction de la grande tendance et augmente le filtrage des fausses ruptures de conditions de mouvement, garantissant ainsi la qualité du signal de négociation.

Code source de la stratégie
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// Original indicator by alexgrover
strategy('Extended Recursive Bands Strategy', overlay=true, commission_type=strategy.commission.percent,commission_value=0.06,default_qty_type =strategy.percent_of_equity,default_qty_value = 100,initial_capital =1000)
length = input.int(260, step=10, title='Length')
src = input(close, title='Source')
method = input.string('Classic', options=['Classic', 'Atr', 'Stdev', 'Ahlr', 'Rfv'], title='Method')
bandDirectionCheck = input.bool(true, title='Bands Hold Direction')
lookback = input(3)
//----
atr = ta.atr(length)
stdev = ta.stdev(src, length)
ahlr = ta.sma(high - low, length)
rfv = 0.
rfv := ta.rising(src, length) or ta.falling(src, length) ? math.abs(ta.change(src)) : rfv[1]
//-----
f(a, b, c) =>
    method == a ? b : c
v(x) =>
    f('Atr', atr, f('Stdev', stdev, f('Ahlr', ahlr, f('Rfv', rfv, x))))
//----
sc = 2 / (length + 1)
a = 0.
a := math.max(nz(a[1], src), src) - sc * v(math.abs(src - nz(a[1], src)))
b = 0.
b := math.min(nz(b[1], src), src) + sc * v(math.abs(src - nz(b[1], src)))
c = (a+b)/2

// Colors
beColor = #675F76
buColor = #a472ff

// Plots
pA = plot(a, color=color.new(beColor, 0), linewidth=2, title='Upper Band')
pB = plot(b, color=color.new(buColor, 0), linewidth=2, title='Lower Band')
pC = plot(c, color=color.rgb(120,123,134,0), linewidth=2, title='Middle Band')
fill(pC, pA, color=color.new(beColor,90))
fill(pC, pB, color=color.new(buColor,90))

// Band keeping direction
// By Adulari
longc = 0
shortc = 0
for i = 0 to lookback-1
    if b[i] > b[i+1]
        longc:=longc+1
    if a[i] < a[i+1]
        shortc:=shortc+1
bhdLong = if bandDirectionCheck
    longc==lookback
else
    true
bhdShort = if bandDirectionCheck
    shortc==lookback
else
    true

// Strategy
if b>=low and bhdLong
    strategy.entry(id='Long',direction=strategy.long)
if high>=a and bhdShort
    strategy.entry(id='Short',direction=strategy.short)

// TP at middle line
//if low<=c and strategy.position_size<0 and strategy.position_avg_price>close
    //strategy.exit(id="Short",limit=close)
//if high>=c and strategy.position_size>0 and strategy.position_avg_price<close
    //strategy.exit(id="Long",limit=close)