Stratégie de rupture de zone de valeur inter-cycle


Date de création: 2023-12-12 10:58:22 Dernière modification: 2023-12-12 10:58:22
Copier: 0 Nombre de clics: 360
1
Suivre
1212
Abonnés

Stratégie de rupture de zone de valeur inter-cycle

Aperçu

L’idée centrale de cette stratégie est de combiner les indicateurs RSI de différentes périodes pour déterminer la zone de prix actuelle et de prendre des actions d’achat ou de vente correspondantes dans les petites périodes lorsque l’indicateur RSI de la plus grande période est détecté. La stratégie utilise les avantages des indicateurs techniques de différentes périodes pour déterminer la valeur relative des prix actuels à travers plusieurs dimensions temporelles et rechercher un meilleur point d’entrée.

Principe de stratégie

Cette stratégie consiste principalement à déterminer les zones de prix et à rechercher des opportunités de transaction par les étapes suivantes:

  1. Calculer les hauts (Swing High) et les bas (Swing Low) du RSI sur une période plus longue (par exemple, la ligne du jour)
  2. Déterminer si le RSI de la plus grande période a atteint un sommet ou un creux au cours d’une période de révision donnée
  3. Si une rupture se produit, le cours est jugé sur une période plus courte (par exemple, la ligne de 5 minutes) et des opérations d’achat ou de vente correspondantes sont effectuées.

Par exemple, si le RSI de la journée atteint un nouveau sommet, nous jugerons qu’il est en position de bullish, et si le RSI de la journée atteint un nouveau bas, nous jugerons qu’il est en position de bearish. Dans les deux cas, nous effectuerons des opérations d’achat et de vente sur la ligne de 5 minutes.

Analyse des avantages

Par rapport aux stratégies traditionnelles qui se concentrent sur un seul cycle de temps, cette stratégie présente les avantages suivants:

  1. L’évaluation de la valeur relative des prix actuels est plus précise. Les indicateurs à cycle plus large tels que la ligne du jour permettent de filtrer le bruit du marché à court terme et de juger des tendances à cycle plus large et des zones de valeur.

  2. La combinaison de différents indicateurs de périodes de temps améliore la fiabilité du signal. Il est facile d’obtenir des signaux erronés en s’appuyant uniquement sur un seul indicateur de périodes, alors que plusieurs indicateurs de périodes émettent simultanément des signaux plus fiables.

  3. Il est plus efficace de saisir les opportunités à court terme. Les grandes périodes comme celle de la Lune nous indiquent les grandes directions, alors que nous n’avons qu’à chercher des opportunités à court terme comme celle de 5 minutes pour en tirer profit.

  4. Les retraits sont plus petits. La combinaison de périodes de temps intermédiaires aide à éviter d’être piégé. Lorsque l’indicateur de grande période se déplace, nous arrêterons les pertes en temps opportun.

Analyse des risques

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

  1. Les indicateurs à grande périodicité produisent des erreurs de jugement. Des indicateurs comme le RSI de la ligne de jour ne peuvent pas déterminer efficacement la zone de valeur, ce qui entraîne des erreurs de signal. Cela nécessite un paramètre optimisé pour le RSI.

  2. Les tendances du petit cycle ne correspondent pas au jugement du grand cycle. Parfois, les mouvements de prix du petit cycle vont à l’encontre de la tendance du grand cycle, ce qui nécessite de mettre en place des arrêts de perte pour contrôler les pertes.

  3. Une mauvaise gestion des fonds. Si la gestion des risques est mauvaise, une perte unique est trop importante, ce qui rend difficile la récupération. Cela nécessite une gestion de position raisonnable.

Direction d’optimisation

Il y a encore beaucoup à améliorer dans cette stratégie, principalement en ce qui concerne les points suivants:

  1. L’optimisation des paramètres de la période. Vous pouvez tester plus de combinaisons de périodes pour trouver les meilleurs paramètres.

  2. Optimisation des paramètres du RSI. Vous pouvez ajuster les paramètres du RSI pour voir si cela améliore l’exactitude de votre jugement.

  3. Ajouter d’autres indicateurs. Vous pouvez ajouter plus d’indicateurs pour les combiner, par exemple en ajoutant une ligne moyenne pour déterminer la direction de la tendance.

  4. Optimisation des mécanismes de stop-loss. Les points de stop-loss peuvent être ajustés dynamiquement en fonction des retraits.

  5. Optimisation de la gestion des positions. Une gestion plus scientifique et rationnelle des positions spécifiques de chaque transaction.

Résumer

Cette stratégie permet de réaliser un arbitrage de valeur entre les différentes dimensions temporelles en évaluant la hausse de l’indicateur RSI sur plusieurs périodes. Cette approche de jugement sur plusieurs périodes mérite d’être explorée plus avant, et nous pouvons l’améliorer continuellement en utilisant des méthodes telles que l’optimisation des paramètres, l’optimisation des arrêts de perte et l’optimisation de la combinaison.

Code source de la stratégie
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
//
otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)")
otf = input(defval="180", title="Second Momentum Timeframe")

// Function to dectect a new bar
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? true : false

// Check how many bars are in our upper timeframe
since_new_bar = barssince(is_newbar(otf))
otf_total_bars = na
otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1]

//Calculate RSI Values
ctf_rsi = rsi(open, otf_period)

breakline=input(title="Breaks in lines", defval = true, type=bool)

so = request.security(syminfo.tickerid, otf, rsi(open, otf_period))
sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period))


final_otf_so = na
final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so

final_otf_sc = na
final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc

barsback = input(11, title='Bars back to check for a swing')
// showsig = input(false, title='Show Signal Markers')
 
swing_detection(index)=>
    swing_high = false
    swing_low = false
    start = (index*2) - 1 // -1 so we have an even number of
    swing_point_high = final_otf_so[index]
    swing_point_low = final_otf_sc[index]
    
    //Swing Highs
    for i = 0 to start
        swing_high := true
        if i < index 
            if final_otf_so[i] > swing_point_high 
                swing_high := false
                break
        // Have to do checks before pivot and after seperately because we can get
        // two highs of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_so[i] >= swing_point_high 
                swing_high := false
                break
        
    //Swing lows
    for i = 0 to start
        swing_low := true
        if i < index
            if final_otf_sc[i] < swing_point_low 
                swing_low := false
                break  
        // Have to do checks before pivot and after seperately because we can get
        // two lows of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_sc[i] <= swing_point_low 
                swing_low := false
                break 
        
    [swing_high, swing_low]
 
// Check for a swing
[swing_high, swing_low] = swing_detection(barsback)
 

long =  final_otf_so > final_otf_sc
short = final_otf_so < final_otf_sc

if swing_low and long
    strategy.entry("My Long Entry Id", strategy.long)


if swing_high and short
    strategy.entry("My Short Entry Id", strategy.short)