Momentum-Indikator-Trend nach Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-12 14:52:11
Tags:

img

Übersicht

Diese Strategie erstellt Handelssignale auf der Grundlage des Momentum-Indikators RSI und des exponentiellen gleitenden Durchschnitts (EMA) und des einfachen gleitenden Durchschnitts (SMA).

Strategieprinzip

Die Strategie verwendet 3 Bedingungen, um Handelssignale zu generieren:

  1. RSI > 45: RSI-Wert größer als 45 gilt als gutes Kaufsignal
  2. EMA (RSI) > SMA (RSI): Eine EMA-Linie, die größer ist als die SMA-Linie, zeigt, dass der RSI nach oben beschleunigt, was ein gutes Impulssignal ist.
  3. EMA (close) > SMA (close): Eine EMA-Linie, die größer als die SMA-Linie ist, zeigt eine Beschleunigung der Kursentwicklung nach oben an

Die Erfüllung von zwei der oben genannten drei Bedingungen erzeugt ein Kaufsignal; wenn keines erfüllt ist, wird ein Verkaufssignal erzeugt.

Die Strategie bietet auch einen "immer kaufen"-Modus, um die Leistung des Systems im Vergleich zum breiten Markt zu testen.

Analyse der Vorteile

  1. Die Verwendung des Momentum-Indikators RSI zur Beurteilung der Marktbedingungen kann Positionen bei Marktschwankungen reduzieren
  2. Die Kombination von EMA und SMA zur Bestimmung der Trendrichtung kann die Preisänderung rechtzeitig erfassen
  3. Einfache und klare bedingte Regeln, leicht verständlich und optimierbar
  4. Bietet always buy-Modus zum Testen von Systemvorteilen

Risikoanalyse

  1. Verlässt sich auf Parameter-Einstellungen, falsche Parameter führen zum häufigen Handel oder verpassen gute Handelsmöglichkeiten
  2. Wichtige Nachrichten auf dem breiten Markt können kurzfristig zu einer enormen Volatilität führen, die zu einem Stop-Loss führen wird.
  3. Die Strategie selbst kann nicht beurteilen, wann ein Trend umzukehren droht, andere Indikatoren müssen verwendet werden, um zu bestimmen, ob ein Trend umgekehrt wird.

Optimierungsrichtlinien

  1. Optimieren der Parameter des RSI, EMA und SMA, um die beste Parameterkombination zu finden
  2. Erhöhen Sie andere technische Indikatoren wie Volumen, MACD usw. um die Regelbedingungen zu bereichern
  3. Steigerung der Trendumkehrindikatoren zur Verringerung der Verlustwahrscheinlichkeit

Schlussfolgerung

Zusammenfassend gehört diese Strategie zu einer mittelfrequenten Handelsstrategie, die darauf abzielt, mittelfristige Preistrends zu erfassen und gleichzeitig kurzfristige Marktschwankungen zu vermeiden. Ihre Vorteile und Risikopunkte sind ganz offensichtlich.


/*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=5
strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.")
compoundingMode = input.bool(false)
leverage = input.float(1.0,step=0.1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100
TPFactor = input.float(2, step=0.1)




var disableAdditionalBuysThisDay = false
var lastTrade = time
if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy")
    disableAdditionalBuysThisDay := false

if(strategy.position_size != strategy.position_size[1])
    lastTrade := time
    disableAdditionalBuysThisDay := true

//Trade Logic
SCORE = 0

//rsi momentum
RSIFast = ta.ema(ta.rsi(close,50),24)
RSISlow = ta.sma(ta.rsi(close,50),24)
RSIMomentum = RSIFast / RSISlow
goodRSIMomentum = RSIMomentum > 1
SCORE := goodRSIMomentum ? SCORE + 1 : SCORE

//rsi trend
RSITrend = RSISlow / 45
goodRSI = RSITrend > 1
SCORE := goodRSI ? SCORE + 1 : SCORE

//price trend
normalTrend = ta.ema(close,50) / ta.sma(close,50)
goodTrend = normalTrend > 1
SCORE := goodTrend ? SCORE + 1 : SCORE



isBuy =  SCORE > 1 or tradingMode == "Always Buy"
isSell = false //SCORE == 0

//plot(SCORE, color=isBuy ? color.green : #ffffff88)
//reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow
plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10)
plot(1 - (1 - RSIMomentum) * 6,color=#00F569)
plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B)
plot(1 - (1 - normalTrend) * 20,color=#00F5EE)


strategy.initial_capital = 50000
if(isBuy and not(disableAdditionalBuysThisDay))
    if(compoundingMode)
        strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage)
    else
        strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)


if(strategy.position_size != 0)
    strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))




Mehr