Multi-Indikator Bitcoin Tageshandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-30 10:37:58
Tags:

img

Übersicht

Diese Strategie kombiniert mehrere Indikatoren, um Handelsmöglichkeiten innerhalb des täglichen Zeitrahmens für Bitcoin zu identifizieren.

Strategie Logik

Die Strategie verwendet folgende Schlüsselindikatoren:

  1. MACD (Fast MA - Slow MA) und seine Signallinie.

  2. RSI (Relative Strength Index): Wenn der RSI über einen Schwellenwert geht, gibt es ein Kaufsignal.

  3. Stoch RSI. Stoch RSI zeigt Überkauf/Überverkauf von RSI. Stoch RSI unterhalb der Schwelle gibt Kaufsignal, während über der Schwelle gibt Verkaufsignal.

  4. Schließpreiskreuzung unter MA gibt Verkaufssignal.

Nach diesen Indikatoren sind die Handelssignale:

Kaufsignal: Wann(Stoch RSI < Threshold) AND (MACD crossing above threshold OR RSI crossing above threshold)

Verkaufssignal: Wann(MACD crossing below 0) AND (Close below MA OR Stoch RSI > Threshold)

Die Verwendung mehrerer Indikatoren zusammen kann die aktuelle Trendrichtung besser bestimmen und Trendumkehrpunkte für den Handel erkennen.

Vorteile

  1. Die Kombination mehrerer Indikatoren verbessert die Genauigkeit und verhindert falsche Signale von einem einzigen Indikator.

  2. Der MACD zeigt die Trendrichtung und Stärke. Der RSI spiegelt Überkauf/Überverkaufspegel wider. Der Aktien-RSI bestimmt den Überkauf/Überkauf des RSI. Der MA zeigt die Trendrichtung. Diese Indikatoren überprüfen sich gegenseitig.

  3. Die Kauf-/Verkaufssignale erfordern eine Kombination mehrerer Indikatoren, die einige falsche Signale herausfiltern und unnötige Trades vermeiden.

  4. Der Backtest beginnt am 1. Januar 2017 und deckt den riesigen Bullenlauf von Bitcoin am Jahresende 2017 ab.

  5. Der Stop-Loss ist so eingestellt, dass der Verlust bei einzelnen Trades kontrolliert wird.

Risiken

  1. Obwohl die Verwendung mehrerer Indikatoren die Genauigkeit verbessert, kann eine Diskrepanz zwischen ihnen immer noch zu falschen Signalen führen.

  2. Der optimierte Stop-Loss-Level kann für verschiedene Marktsituationen angepasst werden müssen.

  3. Tägliche Zeiträume verhindern detaillierte Operationen in kürzeren Zeitrahmen, unfähig, auf plötzliche kurzfristige große Bewegungen zu reagieren.

  4. Die Strategie wird nur auf begrenzte historische Daten zurück getestet. Es besteht ein Überfitungsrisiko. Es bedarf weiterer Tests über längere Zeiträume und mehr Märkte.

Möglichkeiten zur Verbesserung

  1. Testen Sie mehr Indikatorenkombinationen, um optimale Multi-Indikator-Strategien zu finden.

  2. Optimierung der Indikatorenparameter für bessere Werte.

  3. Versuche verschiedene Stop-Loss-Level, um ein optimales Risiko/Rendite-Verhältnis zu finden.

  4. Durchführung von Backtests auf längere historische Daten, um Überanpassung zu vermeiden.

  5. Erforschen Sie die Anwendung von Strategie-Logik in höheren Frequenz-Zeitrahmen für häufigeren Handel.

Schlussfolgerung

Diese Strategie kombiniert MACD, RSI, Stoch RSI und andere Indikatoren, um die tägliche Trendrichtung von Bitcoin zu bestimmen und Trendumkehrungen für den Handelseintritt zu identifizieren. Der Stop-Loss ist so eingerichtet, dass das Handelsrisiko kontrolliert wird. Der Backtest zeigt positive Ergebnisse, erfordert jedoch immer noch eine weitere Verifizierung über einen längeren Zeitrahmen und mehr Märkte, um übermäßige Risiken zu vermeiden. Weitere Optimierungen der Indikatorparameter und der Stop-Loss-/Take-Profit-Level können die Ergebnisse verbessern. Die Strategie bietet eine erste Idee eines Multi-Indikator-Kombinationsansatzes, der eine tiefere Erforschung und Verbesserung wert ist.


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

//@version=4
// Original code is from CredibleHulk and modified by bennef
strategy("BTC Daily Strategy BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

/////////////// Input Params /////////////// 
rsi_threshold = input(30)
rsi_length = input(4)
srsi_length = input(8)
srsi_smooth = input(4)
srsi_sell_threshold = input(57)
length = input(14)
dma_signal_threshold = input(-1)
fastLength = input(11)
slowlength = input(18)
MACDLength = input(6)
MACD_signal_threshold = input(-2)
short_loss_tol = input(5)
long_loss_tol = input(5)

stop_level_long = strategy.position_avg_price * (1 - long_loss_tol / 100.0)
stop_level_short = strategy.position_avg_price * (1 + short_loss_tol / 100.0)
    
///////////////  Signal generation ///////////////
// MACD 
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

// RSI and Stochastic RSI 
rs = rsi(close, rsi_length)
k = sma(stoch(rs, rs, rs, srsi_length), srsi_smooth)

// SMA 
norm = sma(ohlc4, length)
threshold = close - norm   

/////////////// Strategy ///////////////
long = ((crossover(delta, MACD_signal_threshold) or crossover(rs, rsi_threshold)) and k < srsi_sell_threshold)
short = (crossunder(delta, 0) or (crossunder(threshold, dma_signal_threshold) and k > srsi_sell_threshold))

if testPeriod()
    strategy.entry("L", strategy.long, when = long)
    strategy.entry("S", strategy.short, when = short)
    strategy.exit("stop loss L", from_entry = "L", stop = stop_level_long)
    strategy.exit("stop loss S", from_entry = "S", stop = stop_level_short)

/////////////// Plotting ///////////////
// MACD
plot(delta, color = delta > MACD_signal_threshold ? color.lime : delta < 0 ? color.red : color.yellow)
MACD_signal_threshold_line = hline(MACD_signal_threshold, color = color.yellow, title = "MACD Signal Threshold")

// RSI
plot(rs, color = rs > rsi_threshold ? color.lime : color.fuchsia)
rsi_threshold_line = hline(rsi_threshold, color = color.fuchsia, title = "RSI Threshold")

// Stochastic RSI 
plot(k, color = k > srsi_sell_threshold ? color.lime : color.red)
srsi_sell_threshold_line = hline(srsi_sell_threshold, color = color.white, title = "Stoch RSI Threshold")

// SMA
plot(threshold / 100, color = threshold < dma_signal_threshold ? color.red : color.blue)
dma_signal_threshold_line = hline (dma_signal_threshold, color = color.blue, title = "DMA Signal Threshold")

bgcolor(long ? color.lime : short ? color.red : na, transp=50)

Mehr