Trendfolgestrategie basierend auf Renko und Relative-Vigor-Index


Erstellungsdatum: 2024-02-04 15:49:19 zuletzt geändert: 2024-02-04 15:49:19
Kopie: 1 Klicks: 686
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie basierend auf Renko und Relative-Vigor-Index

Überblick

Die Strategie kombiniert Renko Chart und Relative Vibration Index (RVI) zwei Indikatoren, um den größten Teil der wichtigsten Trends des Marktes zu erfassen.

Strategieprinzip

Die Strategie nutzt die 9-Perioden-ATR-Strategie, um einen Renko-Ring zu bauen, der grün ist, wenn der Schlusskurs den vorherigen Renko-Ring-Hochpunkt überschreitet, um einen neuen Ring zu bauen, der rot ist, wenn der Schlusskurs den vorherigen Renko-Ring-Tiefpunkt überschreitet. Die Richtung des Trends wird durch die Kombination des RVI-Indikators bestimmt.

Der RVI-Wert schwankt zwischen 0 und 1, wenn er höher als 0,5 ist, ist er stärker als der Flachkopf. Wenn der RVI über seine gleitende bewegliche Mittelwert geht, ist der Flachkopf schwächer und der Flachkopf stärker und gibt mehr Signal. Wenn der RVI unter seine gleitende bewegliche Mittelwert geht, ist der Flachkopf schwächer und der Flachkopf stärker und gibt mehr Signal.

Die Kombination von Renko-Ring-Richtung und dem RVI-Indikator gibt mehr als ein Shorting-Signal, um in die entsprechende Mehrkopf- oder Leerkopf-Position zu gelangen.

Strategische Vorteile

  1. Renko isoliert sich von normalen Marktbewegungen und achtet auf größere Preisbewegungen, um nicht eingeklemmt zu werden.
  2. Der RVI-Indikator beurteilt die Zeit, in der sich der Trend umkehrt, und lockt die Handelssignale weiter ein.
  3. Die Kombination der beiden Indikatoren filtert die wichtigsten Trends des Marktes und filtert den Lärm aus.

Risikoanalyse

  1. Die Größe der Renko-Münze beeinflusst die Häufigkeit der Transaktionen, die von der FTC verpasst werden, und die zu geringe Menge erhöht die Häufigkeit der Transaktionen und die Gebühren.
  2. Die falsche Einstellung der RVI-Indikatorparameter kann zu Fehlschlägen oder Vergrößerung falscher Signale führen.
  3. Die Doppel-Indikator-Filter verpassen bestimmte Signale und können nicht die ganze Situation erfassen.

Optimierungsrichtung

  1. Dynamische Optimierung der Renko-Kühlchengröße, damit sie sich an die Schwankungen des Marktes anpasst.
  2. Optimierung der RVI-Indikatorparameter zur Suche nach dem optimalen Ausgleichspunkt.
  3. Versuchen Sie, verschiedene Sorten und Kombinationen von Periodenparametern zu verwenden, um die Stabilität zu bewerten.

Zusammenfassen

Die Strategie kombiniert die Vorzüge zweier verschiedener Arten von Indikatoren mit dem Ziel, die Markttrends zu erfassen. Durch die Optimierung der Renko- und RVI-Parameter kann eine höhere Stabilität erzielt werden. Kein Modell ist jedoch perfekt und es ist unvermeidlich, bestimmte Signale zu verpassen.

Strategiequellcode
/*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")