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.
Cette stratégie consiste principalement à déterminer les zones de prix et à rechercher des opportunités de transaction par les étapes suivantes:
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.
Par rapport aux stratégies traditionnelles qui se concentrent sur un seul cycle de temps, cette stratégie présente les avantages suivants:
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.
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.
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.
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.
Les principaux risques de cette stratégie sont les suivants:
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.
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.
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.
Il y a encore beaucoup à améliorer dans cette stratégie, principalement en ce qui concerne les points suivants:
L’optimisation des paramètres de la période. Vous pouvez tester plus de combinaisons de périodes pour trouver les meilleurs paramètres.
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.
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.
Optimisation des mécanismes de stop-loss. Les points de stop-loss peuvent être ajustés dynamiquement en fonction des retraits.
Optimisation de la gestion des positions. Une gestion plus scientifique et rationnelle des positions spécifiques de chaque transaction.
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.
/*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)