Cette stratégie combine plusieurs indicateurs techniques, y compris l'indice de force relative (RSI), la divergence de convergence moyenne mobile (MACD) et plusieurs moyennes mobiles simples (SMA) avec différentes périodes, visant à fournir un outil d'analyse complet pour le trading de Bitcoin (BTC).
Cette stratégie fournit un cadre d'analyse complet pour le trading de Bitcoin en intégrant les indicateurs techniques RSI, MACD et SMA. Elle génère des signaux de trading en utilisant la confirmation de plusieurs indicateurs et intègre des mesures de contrôle des risques. Cependant, il reste encore une marge d'optimisation, comme l'introduction de plus d'indicateurs, l'ajustement dynamique des paramètres et l'intégration d'une analyse fondamentale. Dans les applications pratiques, les traders doivent adapter la stratégie en fonction de leurs préférences en matière de risque et des conditions du marché.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Advanced Strategy", shorttitle="1M Advanced Strat", overlay=true) // Input settings rsiLength = input(14, title="RSI Length") rsiLowerBound = input(20, title="RSI Lower Bound") rsiUpperBound = input(30, title="RSI Upper Bound") atrLength = input(14, title="ATR Length") smaFastLength = input(20, title="SMA 20 Length") smaMediumLength = input(50, title="SMA 50 Length") smaSlowLength = input(200, title="SMA 200 Length") riskPercent = input(0.005, title="Risk Percentage for SL and Target") // Calculate indicators rsiValue = rsi(close, rsiLength) [macdLine, signalLine, _] = macd(close, 12, 26, 9) smaFast = sma(close, smaFastLength) smaMedium = sma(close, smaMediumLength) smaSlow = sma(close, smaSlowLength) atrValue = atr(atrLength) // Checking previous RSI value prevRsiValue = rsi(close[1], rsiLength) // Conditions for Entry longCondition = rsiValue > rsiLowerBound and rsiValue < rsiUpperBound and prevRsiValue < rsiLowerBound or prevRsiValue > rsiUpperBound and crossover(macdLine, signalLine) and close < smaFast and close < smaMedium and close < smaSlow // Strategy Entry if (longCondition and not strategy.position_size) strategy.entry("Long", strategy.long) // Setting Stop Loss and Take Profit stopLoss = close - riskPercent * close takeProfit = close + atrValue strategy.exit("Exit Long", "Long", stop = stopLoss, limit = takeProfit) //Update Stop Loss when RSI reaches 50 if (strategy.position_size > 0 and rsiValue >= 50) strategy.exit("Update SL", "Long", stop = high) // Conditions for Exit shortCondition = crossunder(macdLine, signalLine) // Strategy Exit if (shortCondition) strategy.close("Long")