Die Ressourcen sind geladen. Beförderung...

Multi-Indikator-Konvergenzhandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-09-12 14:27:41
Tags:

Die Multi-Indicator Convergence Trading Strategy kombiniert Signale von RSI, TD Sequential, MACD und Bollinger Bands, um Hochwahrscheinlichkeits-Setups während der Trendmärkte zu identifizieren.

Strategie Logik:

  1. Berechnen Sie den 14-Perioden-RSI. Verwenden Sie den RSI-Differenzparameter als Schwellenwert für Kauf-/Verkaufssignale. RSI unter (50 - RSI-Differenz) gibt ein Kaufsignal. RSI über (50 + RSI-Differenz) gibt ein Verkaufssignal.

  2. Berechnen Sie den MACD-Indikator. 5 aufeinanderfolgende positive MACD-Histogrammbalken geben ein Kaufsignal. 5 aufeinanderfolgende negative Balken geben ein Verkaufssignal.

  3. Berechnen Sie TD Sequential. 2 aufeinanderfolgende TD-Bars geben Kaufsignal. 2 aufeinanderfolgende TS-Bars geben Verkaufssignal.

  4. Berechnen Sie 20-Perioden Bollinger Bands. Preisbruch über dem oberen Band schlägt Kauf vor. Preisbruch unter dem unteren Band schlägt Verkauf vor.

  5. Traden Sie nur dann Trades ein, wenn sich RSI, MACD und TD Sequential auf eine Richtung einigen und Bollinger Bands nicht widersprechen.

  6. Festlegen von Gewinnzielen und Stop-Loss auf der Grundlage von Eingabeparametern.

Diese Strategie kombiniert die Stärken mehrerer Indikatoren, um falsche Signale zu vermeiden. Bollinger-Bänder helfen beim Filtern von Hochwahrscheinlichkeits-Setups während Trends. Allerdings müssen Indikatorparameter gründlich optimiert werden, und Signale müssen relativ selten sein, wenn alle 4 Indikatoren zustimmen, um Überhandel zu vermeiden.

Insgesamt kann diese Multi-Indikator-Strategie bei starken Trends hochwahrscheinliche Setups erfassen, erfordert jedoch eine sorgfältige Einstellung der Parameter und eine konservative Verwendung von Indikatorsignalen, um übermäßigen Handel zu vermeiden.


/*backtest
start: 2022-09-05 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("RSI, TD Seq, MACD, BB Strategy - Calculation",overlay=true)



RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") 


TD = close > close[4] ?nz(TD[1])+1:0
TS = close < close[4] ?nz(TS[1])+1:0
TDUp = TD - valuewhen(TD < TD[1], TD , 1 )
TDDn = TS - valuewhen(TS < TS[1], TS , 1 )
TDcheckUP = iff(TD == 2, true, false)
TDCheckDOWN = iff(TS == 2, true, false)

[_, _, histLine] = macd(close, 12, 26, 9)
MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0  and histLine[4] > 0, true, false)
MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false)

RSICal = rsi(close, 14)
RSICalNewUp = 50 + RSIDifference
RSICalNewDown = 50 - RSIDifference
RSICheckUp = iff(RSICal <= RSICalNewUp, true, false)
RSICheckDown = iff(RSICal >= RSICalNewDown, true, false)

basis = sma(close, 20)
dev = 2 * stdev(close, 20)
upperBB = basis + dev
lowerBB = basis - dev
BBCheckUp = iff(close > upperBB, true, false)
BBCheckDown = iff(close < lowerBB, true, false)
//BBCheckUp = false
//BBCheckDown = false


BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false)
SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false)


ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) 
useStopLoss = input(false, title="Use Stop Loss?")
LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) 

ProfitStrat = ProfitStratA * 10
Lossstrat = useStopLoss ? LossstratA * 10 : 1000000

if (strategy.position_size > 0)
    strategy.exit("BuyClose", "Buy", profit=ProfitStrat, loss=Lossstrat)
    
    
if (strategy.position_size < 0)   
    strategy.exit("SellClose", "Sell", profit=ProfitStrat, loss=Lossstrat) 
    

if (BuyCheck == true and strategy.position_size == 0)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    


if (SellCheck == true and strategy.position_size == 0)
    strategy.entry("Sell", strategy.short, comment="Short Entry")
    
    
 
    

//plotshape(BuyCheck, color=blue, transp=0, style=shape.arrowup, text="Buy\n", location=location.belowbar)
//plotshape(SellCheck, color=orange, transp=0, style=shape.arrowdown, text="Sell\n", location=location.abovebar)













Mehr