Esta estratégia combina múltiplos indicadores técnicos, incluindo o Índice de Força Relativa (RSI), a Divergência de Convergência da Média Móvel (MACD) e várias Média Móvel Simples (SMAs) com diferentes períodos, com o objetivo de fornecer uma ferramenta de análise abrangente para a negociação de Bitcoin (BTC). A ideia principal da estratégia é entrar em posições longas quando o RSI está dentro de um intervalo específico, o MACD exibe um cruzamento de alta e o preço está abaixo de vários SMAs, enquanto define níveis de stop-loss e take-profit e atualiza a posição de stop-loss quando o RSI atinge 50.
Esta estratégia fornece uma estrutura de análise abrangente para a negociação de Bitcoin, integrando indicadores técnicos RSI, MACD e SMA. Ela gera sinais de negociação usando a confirmação de vários indicadores e incorpora medidas de controle de risco. No entanto, ainda há espaço para otimização, como a introdução de mais indicadores, ajuste dinâmico de parâmetros e incorporação de análise fundamental.
/*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")