Diese Strategie basiert auf den RSI-Werten des MACD-Indikators, um Kauf- und Verkaufssignale zu bestimmen.
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.
Lösungen:
Die Strategie kann auch in folgenden Aspekten optimiert werden:
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 /////////////////////////////////////////////////////////////////////////////////