RSI der MACD-Umkehrstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-15 12:33:14
Tags:

img

Übersicht

Diese Strategie basiert auf den RSI-Werten des MACD-Indikators, um Kauf- und Verkaufssignale zu bestimmen.

Strategieprinzip

Diese Strategie vereint die Vorteile der MACD- und RSI-Indikatoren.

Zuerst werden die drei Kurven des MACD-Indikators berechnet, einschließlich der DIF-, DEA- und MACD-Linien. Dann wird der RSI-Indikator auf der MACD-Linie berechnet, um den RSI des MACD zu bilden.

Wenn der RSI des MACD-Indikators den Überkaufbereich von 30 oder 35 überschreitet, wird ein Kaufsignal erzeugt, das anzeigt, dass die MACD-Linie in den Überkaufbereich eingetreten ist und der Kurstrend zu einem Aufschwung begann. Wenn der RSI des MACD-Indikators erneut unter den Überkaufbereich von 15 fällt, wird ein Verkaufssignal erzeugt, das anzeigt, dass die Trendwende beendet ist.

Wenn der RSI des MACD-Indikators die Überkaufgrenze von 80 überschreitet, kann ein Teil der Position verkauft werden, um teilweise Gewinne zu erzielen.

Analyse der Vorteile

  • Verwendung des MACD-Indikators zur Bestimmung von Trendumkehrpunkten
  • Verwenden Sie den RSI-Indikator zur Bestimmung von Überkauf-/Überverkaufswerten, um falsche Signale zu filtern
  • Kombination von zwei Indikatoren für genaue Kauf-/Verkaufspunkte
  • Teilweise Gewinnentnahme zur Verhinderung von Verlusten

Risikoanalyse

  • Ungenaue Beurteilung des Trends bei fehlerhaften MACD-Parametern
  • Ungenaue Beurteilung von überkauften/überverkauften Zonen bei falschen RSI-Parametern
  • Potenziell fehlende größere Aufwärtswirkung, wenn die Gewinnentnahme zu aggressiv ist

Lösungen:

  • Optimieren der MACD-Parameter, um die beste Kombination zu finden
  • Optimierung der RSI-Parameter zur Verbesserung der Genauigkeit
  • Kriterien für die Gewinnentnahme entspannen, um höhere Renditen zu erzielen

Optimierungsrichtlinien

Die Strategie kann auch in folgenden Aspekten optimiert werden:

  1. Hinzufügen einer Stop-Loss-Strategie zur weiteren Kontrolle der Abwärtsrisiken
  2. Hinzufügen eines Positionsgrößenmoduls, um Positionen im Zuge der Kursbewegung schrittweise zu erhöhen
  3. Integration von maschinellen Lernmodellen, die auf historischen Daten ausgerichtet sind, um die Genauigkeit der Kauf-/Verkaufspunkte weiter zu verbessern
  4. Versuch, in kürzeren Zeitrahmen wie 15 oder 5 Minuten zu laufen, um die Strategiefrequenz zu verbessern

Schlussfolgerung

Die allgemeine Strategieentwurfsphilosophie ist klar, wobei die Kernidee darin besteht, die MACD-Umkehrung in Kombination mit dem RSI-Filter zu verwenden, um Kauf-/Verkaufspunkte zu bestimmen.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
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/
// © mohanee

//@version=4

strategy(title="RSI of MACD Strategy[Long only]",  shorttitle="RSIofMACD" , overlay=false, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

	

/////////////////////////////////////////////////////////////////////////////////



// MACD Inputs ///
fastLen = input(12, title="Fast Length")
slowLen = input(21, title="Slow Length")
sigLen  = input(9, title="Signal Length")

rsiLength  = input(14, title="RSI of MACD Length")




riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(3,title="Stop Loss",minval=1)

takeProfit=input(false, title="Take Profit")


[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)

rsiOfMACD = rsi(macdLine, rsiLength)
emaSlow = ema(close, slowLen)



//drawings
/////////////////////////////////////////////////////////////////////////////////


obLevelPlot = hline(80, title="Overbought / Profit taking line",  color=color.blue , linestyle=hline.style_dashed)
osLevelPlot = hline(30, title="Oversold / entry line", color=color.green, linestyle=hline.style_dashed)

exitLinePlot = hline(15, title="Exit line", color=color.red, linestyle=hline.style_dashed)




plot(rsiOfMACD, title = "rsiOfMACD" ,  color=color.purple)


//drawings
/////////////////////////////////////////////////////////////////////////////////




//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


strategy.entry(id="RSIofMACD", long=true,   qty=qty1,  when =  ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35)  ) and close>=emaSlow )



bgcolor(abs(strategy.position_size)>=1 ? color.blue : na , transp=70)


barcolor(abs(strategy.position_size)>=1 and  ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35) ) ? color.purple : abs(strategy.position_size)>=1 ? color.blue : na  )


//partial exit
strategy.close(id="RSIofMACD", comment="PExit Profit is "+tostring(close - strategy.position_avg_price,  "###.##")  ,  qty=strategy.position_size/3, when= takeProfit and abs(strategy.position_size)>=1 and close > strategy.position_avg_price and crossunder(rsiOfMACD,80) )

//Close All
strategy.close(id="RSIofMACD", comment="Close All   Profit is "+tostring(close - strategy.position_avg_price,  "###.##"), when=abs(strategy.position_size)>=1 and crossunder(rsiOfMACD,15) ) //and close > strategy.position_avg_price )


//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////



Mehr