
La stratégie combine plusieurs indicateurs techniques, y compris le RSI, le MACD et les moyennes mobiles simples de plusieurs périodes différentes, afin de fournir un outil d’analyse complet pour la négociation de Bitcoin. L’idée principale de la stratégie est de prendre en compte les signaux de différents indicateurs en intégralité, de faire plus lorsque le RSI est dans une certaine zone, que le MACD apparaît et que le prix de la fourchette est inférieur à plusieurs SMA, de définir des arrêts et des arrêts, et de mettre à jour les arrêts lorsque le RSI atteint 50.
La stratégie fournit un cadre d’analyse complet pour le trading de Bitcoin en utilisant des indicateurs techniques tels que le RSI, le MACD et le SMA. Elle utilise la co-confirmation de plusieurs indicateurs pour générer des signaux de trading et met en place des mesures de contrôle du risque. Cependant, la stratégie a encore de la place pour l’optimisation, comme l’introduction de plus d’indicateurs, des paramètres d’ajustement dynamique et une analyse combinée des fondamentaux.
/*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")