Stratégie de suivi de tendance basée sur Renko et l'indice de vigueur relative


Date de création: 2024-02-04 15:49:19 Dernière modification: 2024-02-04 15:49:19
Copier: 1 Nombre de clics: 686
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance basée sur Renko et l’indice de vigueur relative

Aperçu

La stratégie combine deux indicateurs, le graphique Renko et l’indice de dynamique relative (RVI), dans le but de capturer la plupart des principales tendances du marché.

Principe de stratégie

La stratégie utilise un ATR de 9 périodes pour construire un Renko Wall, en vert, lorsque le prix de clôture dépasse le sommet du précédent Renko Wall, et en rouge, lorsque le prix de clôture est inférieur au sommet du précédent Renko Wall. La direction de la tendance est déterminée par l’indicateur RVI.

L’indicateur RVI est utilisé pour juger de l’intensité relative de la force à plusieurs têtes et de la force à vide. Les valeurs RVI oscillent entre 0 et 1, plus de 0,5 signifie que la force à plusieurs têtes est plus forte que la force à vide; moins de 0,5 signifie que la force à vide est plus forte que la force à plusieurs têtes.

Les signaux de coupe de plus combinés de la direction de Renko et de l’indicateur RVI entrent dans les positions de coupe ou de coupe correspondantes.

Avantages stratégiques

  1. Renko s’éloigne des fluctuations normales du marché et ne s’intéresse qu’aux fluctuations plus importantes des prix pour ne pas être pris au dépourvu.
  2. L’indicateur RVI détermine le moment où la tendance a été inversée et bloque davantage les signaux de transaction.
  3. La combinaison de deux indicateurs permet de filtrer les principales tendances du marché et de filtrer une partie du bruit.

Analyse des risques

  1. La taille de Renko affecte directement la fréquence des transactions, et la taille de Renko est une occasion manquée, tandis que la taille de Renko augmente la fréquence des transactions et les frais.
  2. Une mauvaise configuration des paramètres de l’indicateur RVI peut également entraîner un signal manqué ou un faux signal amplifié.
  3. Les filtres à double indice manquent certains signaux et ne peuvent pas saisir la totalité de la situation.

Direction d’optimisation

  1. La taille de Renko est optimisée pour s’adapter aux fluctuations du marché.
  2. Optimiser les paramètres de l’indicateur RVI pour trouver le point d’équilibre optimal
  3. Essayez différentes combinaisons de variétés et de paramètres cycliques pour évaluer la stabilité.

Résumer

Cette stratégie combine les avantages de deux types d’indicateurs différents, dans le but de saisir les tendances dominantes du marché. Une plus grande stabilité peut être obtenue en optimisant les paramètres Renko et RVI.

Code source de la stratégie
/*backtest
start: 2023-01-28 00:00:00
end: 2024-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Lancelot RR Strategy", overlay=false)
p=9
CO=close-open
HL=high-low
value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6
value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6
num=sum(value1,p)
denom=sum(value2,p)
RVI=denom!=0?num/denom:0
RVIsig=(RVI+ 2*RVI[1] + 2*RVI[2] + RVI[3])/6

rvicloselongcondition = crossunder(RVI, RVIsig)
rvicloseshortcondition = crossover(RVI, RVIsig)

plot(RVI,color=green,style=line,linewidth=1)
plot(RVIsig,color=red,style=line,linewidth=1)
bgcolor(rvicloseshortcondition ? green : na, transp = 75)
bgcolor(rvicloselongcondition ? red : na, transp = 75)

///Renko///
TF = input(title='TimeFrame', defval="D")
ATRlength = input(title="ATR length",  defval=9, minval=2, maxval=100)
SMAlength = input(title="SMA length",  defval=5, minval=2, maxval=100)
SMACurTFlength = input(title="SMA CurTF length",  defval=20, minval=2, maxval=100)

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, atr(ATRlength))
SMA = request.security(syminfo.tickerid, TF, sma(close, SMAlength))
SMACurTF = sma(close, SMACurTFlength)

RENKOUP = na
RENKODN = na
H = na
COLOR = na
BUY = na
SELL = na
UP = na
DN = na
CHANGE = 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]) ? white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

if(not CHANGE and close >= RENKOUP[1]+H*3)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*3
    RENKODN := RENKOUP[1]+ATR*2
    COLOR := lime
    SELL := 0
    BUY := BUY+3

if(not CHANGE and close >= RENKOUP[1]+H*2)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR*2
    RENKODN := RENKOUP[1]+ATR
    COLOR := lime
    SELL := 0
    BUY := BUY+2

if(not CHANGE and close >= RENKOUP[1]+H)
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1]+ATR
    RENKODN := RENKOUP[1]
    COLOR := lime
    SELL := 0
    BUY := BUY+1

if(not CHANGE and close <= RENKODN[1]-H*3)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*3
    RENKOUP := RENKODN[1]-ATR*2
    COLOR := red
    BUY := 0
    SELL := SELL+3

if(not CHANGE and close <= RENKODN[1]-H*2)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR*2
    RENKOUP := RENKODN[1]-ATR
    COLOR := red
    BUY := 0
    SELL := SELL+2

if(not CHANGE and close <= RENKODN[1]-H)
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1]-ATR
    RENKOUP := RENKODN[1]
    COLOR := red
    BUY := 0
    SELL := SELL+1
    
plotshape(UP, style=shape.arrowup, location=location.bottom, size=size.normal)

renkolongcondition = UP
renkoshortcondition = DN

///Long Entry///
longcondition = UP
if (longcondition)
    strategy.entry("Long", strategy.long)
    
///Long exit///
closeconditionlong = rvicloselongcondition
if (closeconditionlong)
    strategy.close("Long")