Esta estratégia combina indicador RSI, indicador MACD e médias móveis duplas para alcançar efeitos de rastreamento de tendências e posicionamento no mercado de volatilidade.
Cálculo da variação do preço tendência ascendente e tendência descendente
Calcular o RSI com base na variação de preço
Determinação dos níveis de sobrecompra e sobrevenda
Calcular MA rápida, MA lenta e linha de sinal
Entra longe pela cruz de ouro e sai pela cruz da morte.
Traçar as situações de cruzamento
Calcular médias móveis rápidas e lentas
Considerar apenas a negociação quando a MA rápida cruzar acima da MA lenta
Filtre o ruído e siga a tendência
Filtro de sinal de entrada com RSI, MACD e MA duplo
Melhorar a precisão e a estabilidade da estratégia
A combinação de múltiplos indicadores melhora a precisão
A tendência seguinte filtra o ruído e aumenta a estabilidade
O RSI detecta pontos de reversão potenciais
O cruzamento MACD fornece sinais simples de entrada e saída
A dupla MA elimina a maioria das transacções de contra-tendência
Fácil de entender com poucos parâmetros, bom para aprender
Risco de sobreajuste de múltiplos indicadores
O duplo MA sacrifica a flexibilidade e pode perder oportunidades
Os parâmetros RSI e MACD necessitam de uma selecção cuidadosa
Preste atenção ao stop loss baseado no símbolo
Requer reajuste periódico dos parâmetros
Ajustar os parâmetros do RSI para diferentes símbolos
Otimizar os períodos de dupla MA para um melhor acompanhamento
Adicionar stop loss para controlar a perda de uma única transação
Incorporar mais indicadores para enriquecer a combinação
Desenvolver um modelo de parâmetros adaptativos para o auto-ajuste
Esta estratégia combina RSI, MACD e MA duplo para identificar e rastrear tendências, e filtra sinais através de múltiplas camadas. É muito adequado para iniciantes aprenderem e melhorarem. A vantagem reside em sua simplicidade e adaptabilidade.
/*backtest start: 2023-09-22 00:00:00 end: 2023-10-22 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // strategy(title="RSI MACD", precision = 6, pyramiding = 1, default_qty_type = strategy.percent_of_equity, default_qty_value = 99, commission_type = strategy.commission.percent, commission_value = 0.25, initial_capital = 1000) // Component Code Start // Example usage: // if testPeriod() // strategy.entry("LE", strategy.long) testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(01, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(7, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Code Stop //standard rsi template src = ohlc4, len = input(14, minval=1, title="Length") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(rsi, color=#87ff1a) band1 = hline(80) band = hline(50) band0 = hline(20) fill(band1, band0, color=purple, transp=90) //macd fast_length = input(title="Fast Length", defval=9) slow_length = input(title="Slow Length", defval=72) signal_length = input(title="Signal Length", defval=9) fast_ma = sma(rsi, fast_length) slow_ma = sma(rsi, slow_length) shortma = sma(ohlc4, fast_length) longma = sma(ohlc4, slow_length) controlmainput = input(title = "Control MA", defval = 234) controlma = sma(ohlc4, controlmainput) macdx = fast_ma - slow_ma signalx = sma(macdx, signal_length) hist = macdx - signalx ma_hist = shortma - controlma macd = macdx + 50 signal = signalx + 50 plot(macd,"macd", color = fuchsia) plot(hist,"hist", style = histogram, color = fuchsia) //plot(ma_hist,"ma hist", style = histogram, color = orange) plot(signal,"signal", color = white) //input control_buy_toggle = input(true, "Buy on crossover control MA?", type = bool) buy_on_control = control_buy_toggle == true? true : false //conditions buy = buy_on_control == true? ma_hist > 0 and shortma > longma and crossover(macd,signal) or crossover(shortma, controlma) : ma_hist > 0 and shortma > longma and crossover(macd,signal) sell = ma_hist > 0 and shortma > longma and crossunder(macd,signal) stop = crossunder(shortma, longma) or crossunder(shortma, controlma) plotshape(buy,"buy", shape.triangleup, location.bottom, green, size = size.tiny) plotshape(sell,"sell", shape.triangledown, location.bottom, red, size = size.tiny) plotshape(stop,"stop",shape.circle,location.bottom, white, size = size.tiny) if testPeriod() strategy.entry("buy", true, when = buy, limit = close) strategy.close("buy", when = sell) strategy.close("buy", when = stop)