Diese Strategie bestimmt Kauf- und Verkaufssignale auf der Grundlage der Kreuzung zwischen dem RSI-Indikator und seinem gleitenden Durchschnitt, die zu kurzfristigen Handelsstrategien gehören. Sie kauft, wenn der RSI niedriger als sein MA ist, und verkauft, wenn der RSI höher als sein MA ist, was eine typische Low-Buy-High-Sell-Strategie ist.
Dies ist eine typische Mittelumkehrstrategie, die die Überkauf/Überverkaufseigenschaften des RSI-Indikators zur Bestimmung von Handelssignalen nutzt.
Zusammenfassend ist es eine einfache und praktische kurzfristige Handelsstrategie.
Es gibt einige Risiken, die zu beachten sind:
Diese Risiken können durch Parameter-Tuning, Filter hinzufügen usw. gemindert werden.
Die Strategie kann in folgenden Aspekten optimiert werden:
Eine signifikante Leistungssteigerung kann durch Multi-Indikator-Combos, Stop-Loss-Management, Parameteroptimierung usw. erreicht werden.
Zusammenfassend ist dies eine sehr typische und praktische kurzfristige Handelsstrategie. Sie profitiert von überkauften/überverkauften RSI-Leveln, um Ein- und Ausgänge zu bestimmen, mit zusätzlichem MA-Filter. Die Logik ist einfach und klar, die Parameter flexibel, einfach umzusetzen. Es gibt bestimmte Marktrisiken, die jedoch durch die Verfeinerung von Ein-/Ausgangmechanismen, Parameter-Tuning usw. angegangen werden können.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © I11L //@version=5 strategy("I11L - Meanreverter 4h", overlay=false, pyramiding=3, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash,process_orders_on_close=false, calc_on_every_tick=false) frequency = input.int(10) rsiFrequency = input.int(40) buyZoneDistance = input.int(5) avgDownATRSum = input.int(3) useAbsoluteRSIBarrier = input.bool(true) barrierLevel = 50//input.int(50) momentumRSI = ta.rsi(close,rsiFrequency) momentumRSI_slow = ta.sma(momentumRSI,frequency) isBuy = momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) //and (momentumRSI < barrierLevel or not(useAbsoluteRSIBarrier)) isShort = momentumRSI > momentumRSI_slow*(1+buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier)) momentumRSISoftClose = (momentumRSI > momentumRSI_slow) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier)) isClose = momentumRSISoftClose plot(momentumRSI,color=isClose ? color.red : momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) ? color.green : color.white) plot(momentumRSI_slow,color=color.gray) plot(barrierLevel,color=useAbsoluteRSIBarrier ? color.white : color.rgb(0,0,0,0)) plot(momentumRSI_slow*(1-buyZoneDistance/100),color=color.gray) plot(momentumRSI_slow*(1+buyZoneDistance/100),color=color.gray) plot(momentumRSI_slow*(1+(buyZoneDistance*2)/100),color=color.gray) // plot(strategy.wintrades - strategy.losstrades) if(isBuy) strategy.entry("Buy",strategy.long, comment="#"+str.tostring(strategy.opentrades+1)) // if(isShort) // strategy.entry("Sell",strategy.short, comment="#"+str.tostring(strategy.opentrades+1)) if(isClose) strategy.exit("Close",limit=close)