Handelsstrategie mit doppeltem MACD StochRSI

Schriftsteller:ChaoZhang, Datum: 22.09.2023
Tags:

Übersicht

Diese Strategie kombiniert doppelte MACD-Indikatoren und den StochRSI-Oszillator für Handelssignale. Der doppelte MACD verwendet verschiedene Parameter für schnelle und langsame Effekte, während StochRSI die Momentumdivergenz überprüft.

Strategie Logik

Die Handelssignale basieren auf:

  • Doppel MACD: Der schnelle MACD verwendet eine kurze Rückblickperiode, der langsame MACD verwendet eine lange Rückblickperiode für Glättungseffekte.

  • StochRSI: Berechnet den RSI-Hoch-/Niedrigbereich, um überkaufte/überverkaufte RSI-Niveaus zu ermitteln.

Eintrittsregeln:

  • Lang: Der schnelle MACD überschreitet die Nulllinie und der langsame MACD überschreitet die Nulllinie.

  • Kurz: Der schnelle MACD überschreitet die Nulllinie und der langsame MACD überschreitet die Nulllinie.

Vorteile

  • Der doppelte MACD verhindert falsche Ausbrüche für eine höhere Signalqualität.

  • StochRSI identifiziert Überkauf-/Überverkaufswerte, um Verfolgung zu vermeiden.

  • Überwacht die allgemeine Trendrichtung, um Gegentrendverluste zu reduzieren.

  • Durch die Zeiträumübergreifende Validierung wird die Signalwirksamkeit verbessert.

  • Stoppverluste kontrollieren das Risiko.

Risiken

  • MACD ist anfällig für falsche Signale, muss weiter überprüft werden.

  • Schlechte StochRSI-Parameter können Trades verpassen.

  • Die Stop-Loss-Level können zu konservativ oder aggressiv sein.

  • Es fehlt die Positionsverwaltung für dynamische Stopps.

Verbesserungen

  1. Fügen Sie Filter wie Lautstärke oder MA-Neigung hinzu.

  2. Optimieren oder hinzufügen von anderen Oszillatoren.

  3. Dynamische Stop-Loss-Verfolgung.

  4. Zusätzliche Positionsgröße basierend auf der Leistung.

Optimierung

Hauptbereiche zur Optimierung:

  1. Optimieren Sie die Indikatorparameter.

  2. Fügen Sie Filter hinzu, um falsche Signale zu entfernen.

  3. Optimieren Sie die Haltestellen für dynamisches Nachfahren.

  4. Einbeziehung der Positionsgröße basierend auf der Strategieleistung.

  5. Fügen Sie maschinelles Lernen zur automatischen Optimierung hinzu.

Zusammenfassung

Die Strategie kombiniert mehrere Indikatoren für stärkere Signale, benötigt aber Optimierung in den Parametern, Filtern, dynamischen Stops, um unerwünschte Trades zu reduzieren und die Rentabilität zu verbessern.


/*backtest
start: 2023-09-14 00:00:00
end: 2023-09-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2



//This strategy is an ongoing work in progress. Last updated 8/6/16.
//Feel free to modify it as you see fit, if you do borrow code then send me a link so I 
//can see and maybe borrow some of your code to improve this.
//Thanks to ChrisMoody who I stole the code for setting custom resolution from.
//
//more info in comments at end of script





strategy("MACDouble & StochRSI w/ safeties v0.3", overlay=true)

source = close
useCurrentRes = input(true, title="Uncheck to use custom res./intrv. for 2nd MACD indicator")
resCustom = input(title="Resolution/interval to use for 2nd MACD:",  defval="45")
res = useCurrentRes ? timeframe.period : resCustom

useCurrentRes2 = input(true, title="Uncheck to use custom res/intrv for StochRSI")
resCustom2 = input(title="Resolution to use for StochRSI indicator:",  defval="45")
res2 = useCurrentRes2 ? timeframe.period : resCustom2


//MACD1
fastLength = input(10, title="MACD fast length")
slowlength = input(21, title="MACD slow length")
sigLength = input(9, title="MACD signal length")

MACD = ema(source, fastLength) - ema(source, slowlength)
signal = sma(MACD, sigLength)
delta = MACD - signal



//MACD2
fastLength2 = input(31, title= "2nd MACD fast length")
slowlength2 = input(63, title= "2nd MACD slow length")
sigLength2 = input(30, title= "2nd MACD signal length")

MACD2 = ema(source, fastLength2) - ema(source, slowlength2)
signal2 = sma(MACD2, sigLength2)
delta2 = MACD2 - signal2

MACDRes = security(syminfo.tickerid, res, MACD2)
signalRes = security(syminfo.tickerid,res, signal2)
deltaRes = security(syminfo.tickerid, res, delta2)


uptrend = (close + high)/(close[1] + high[2])
downtrend = (close + low)/(close[1] + low[2])

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(11, minval=1)
lengthStoch = input(11, minval=1)
src = close

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
RSI_buyTrig = input(90)
RSI_sellTrig = input(20)

kRes = security(syminfo.tickerid, res2, k)
dRes = security(syminfo.tickerid, res2, d)


if (delta > 0) and (year>2012) and (deltaRes > 0) and (uptrend > 1) and (  kRes and dRes < RSI_buyTrig) and (kRes > dRes)
    strategy.entry("buy", strategy.long, comment="buy")
    

if (delta < 0) and (year>2012) and (deltaRes < 0) and (downtrend < 1) and ( kRes and dRes > RSI_sellTrig) and (kRes < dRes)
    strategy.entry("sell", strategy.short, comment="sell")
	strategy.exit("sell", loss = 9000)



//  RELEASE NOTES, ETC
//
// The core starting idea for this backtesting script came from the desire to have two traditional
//MACD indicators: one 'fast' and one 'slow'. The slow one is to pretty much smooth out noisy signals
//so that short term changes in price are ignored (ideally). 
//	A brief version history
//		v0.1 - Basic two MACD indicators script
//      v0.2 - Added StochRSI indicator
//      v0.21- Added primitive uptrend/downtrend safety condition 
//      v0.22- Added changable time resolution for MACDslow
//      v0.23- Added exit safeties conditional on loss threshold   
//      v0.3 - Added changeable resolution for StochRSI
//	Future changes planned for next release:
//		-Fine tuning exit safeties
//      -Major overhaul of trade logic/triggers (may be forked as a different script)
//
//I am more than happy to discuss any difficulties you are having, questions about the script, or improvement suggestions.
//I am not a coder and my background is actually in economics, so feel free to debug ;)
//Feel free to tip me on the indcluded bitcoin address on TV as well
// tradingview.com/u/RyanMartin 
// rjmarti2@millersville.edu


Mehr