Stratégie de négociation quotidienne Bitcoin à indicateurs multiples

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 à 10h37
Les étiquettes:

img

Résumé

Cette stratégie combine plusieurs indicateurs pour identifier les opportunités de trading dans le délai quotidien pour Bitcoin. Elle utilise principalement des indicateurs tels que MACD, RSI, Stoch RSI, ainsi que la direction de la moyenne mobile pour déterminer la direction de la tendance actuelle pour générer des signaux d'achat et de vente.

La logique de la stratégie

La stratégie utilise les indicateurs clés suivants:

  1. Le MACD (Fast MA - Slow MA) et sa ligne de signal. Le passage du MACD au-dessus de la ligne de signal donne un signal d'achat, et le passage en dessous de 0 donne un signal de vente.

  2. L'indice de résistance relative (RSI) qui dépasse un seuil donne un signal d'achat.

  3. L'indice de volatilité indique les niveaux de surachat/survente de l'indice.

  4. La direction de la moyenne mobile, le prix de clôture au-dessous de MA donne le signal de vente.

Selon ces indicateurs, les signaux de négociation sont les suivants:

Signal d' achatQuand?(Stoch RSI < Threshold) AND (MACD crossing above threshold OR RSI crossing above threshold)

Signal de venteQuand?(MACD crossing below 0) AND (Close below MA OR Stoch RSI > Threshold)

L'utilisation de plusieurs indicateurs ensemble permet de mieux déterminer la direction de la tendance actuelle et d'identifier les points d'inversion de tendance pour entrer dans les transactions.

Les avantages

  1. La combinaison de plusieurs indicateurs améliore la précision et évite les faux signaux d'un seul indicateur.

  2. Le MACD montre la direction et la force de la tendance. Le RSI reflète les niveaux de surachat/survente. Le RSI des actions détermine le surachat/survente du RSI. Le MA montre la direction de la tendance. Ces indicateurs se vérifient mutuellement.

  3. Les signaux d'achat/vente nécessitent une combinaison de plusieurs indicateurs, filtrant certains faux signaux et évitant les transactions inutiles.

  4. Le backtest commence à partir du 1er janvier 2017 et couvre l'énorme hausse de Bitcoin à la fin de l'année 2017.

  5. Le stop loss est réglé pour contrôler les pertes lors de transactions uniques.

Les risques

  1. Bien que l'utilisation de plusieurs indicateurs améliore la précision, une divergence entre eux peut encore conduire à des signaux erronés.

  2. Le niveau d'arrêt de perte optimisé peut nécessiter des ajustements pour différentes situations de marché.

  3. Le calendrier quotidien empêche les opérations détaillées dans des intervalles de temps plus courts, incapable de répondre à des mouvements soudains à court terme.

  4. La stratégie n'est testée qu'à partir de données historiques limitées. Il existe un risque de surconformité. Des tests supplémentaires sont nécessaires sur une période plus longue et sur plus de marchés.

Des possibilités d'amélioration

  1. Testez plus de combinaisons d'indicateurs pour trouver des stratégies optimales multi-indicateurs.

  2. Optimiser les paramètres des indicateurs pour obtenir de meilleures valeurs.

  3. Testez différents niveaux de stop loss pour trouver le ratio risque/rendement optimal.

  4. Effectuer des backtests sur des données historiques plus longues afin d'éviter une suradaptation.

  5. Explorez l'application de la logique de stratégie dans des délais de fréquence plus élevés pour des transactions plus fréquentes.

Conclusion

Cette stratégie combine le MACD, le RSI, le Stoch RSI et d'autres indicateurs pour déterminer la direction de la tendance quotidienne du bitcoin et identifier les renversements de tendance pour l'entrée dans le commerce. Le stop loss est configuré pour contrôler le risque commercial. Le backtest montre des résultats positifs, mais nécessite toujours une vérification plus approfondie sur une période plus longue et sur plus de marchés pour éviter les risques de surendettement. Des optimisations supplémentaires des paramètres de l'indicateur et des niveaux de stop loss / take profit peuvent améliorer les résultats.


/*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)

Plus de