
A estratégia é uma estratégia de acompanhamento de tendências que combina um sistema de cruzamentos de duas equiláteros com um índice relativamente forte (RSI). Captura de tendências de mercado através de cruzamentos de médias móveis de 9 ciclos e 21 ciclos (EMA), enquanto usa o indicador RSI para filtragem de overbought e oversold, e combina a confirmação de volume de transação para aumentar a confiabilidade dos sinais de negociação. A estratégia também integra um mecanismo de parada de perda dinâmica baseado na amplitude de flutuação real (ATR), permitindo um controle de risco abrangente.
A lógica central da estratégia é baseada nos seguintes elementos-chave:
Quando o EMA rápido atravessa o EMA lento para cima e o RSI é maior que 40 e o volume de transação é superior ao limiar, o sistema gera um sinal de quebra. Por outro lado, quando o EMA rápido atravessa o EMA lento para baixo e o RSI é menor que 60 e o volume de transação é confirmado, o sistema gera um sinal de quebra.
A estratégia, através de um conjunto científico de indicadores técnicos clássicos, constrói um sistema de acompanhamento de tendências rigorosamente lógico. O mecanismo de filtragem múltipla da estratégia e os meios de controle de risco tornam-na com um forte valor de aplicação em campo.
/*backtest
start: 2024-11-07 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Call & Put Options Strategy (Optimized)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// 📌 Configuration Parameters
emaShort = input(9, title="Short EMA")
emaLong = input(21, title="Long EMA")
rsiLength = input(14, title="RSI Period")
rsiOverbought = input(60, title="RSI Overbought") // Adjusted for more signals
rsiOversold = input(40, title="RSI Oversold") // More flexible to confirm buys
atrLength = input(14, title="ATR Period")
atrMult = input(1.5, title="ATR Multiplier for Stop Loss")
minVol = input(100000, title="Minimum Volume to Confirm Entry") // Volume filter
// 🔹 Indicator Calculations
emaFast = ta.ema(close, emaShort)
emaSlow = ta.ema(close, emaLong)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
vol = volume
// 📌 Entry Signal Conditions
condCALL = ta.crossover(emaFast, emaSlow) and rsi > rsiOversold and vol > minVol
condPUT = ta.crossunder(emaFast, emaSlow) and rsi < rsiOverbought and vol > minVol
// 🚀 Plot signals on the chart
plotshape(condCALL, location=location.belowbar, color=color.green, style=shape.labelup, title="CALL", size=size.small)
plotshape(condPUT, location=location.abovebar, color=color.red, style=shape.labeldown, title="PUT", size=size.small)
// 🎯 Alert conditions
alertcondition(condCALL, title="CALL Signal", message="📈 CALL signal confirmed")
alertcondition(condPUT, title="PUT Signal", message="📉 PUT signal confirmed")
// 📌 Risk Management - Stop Loss and Take Profit
longStop = close - (atr * atrMult)
shortStop = close + (atr * atrMult)
strategy.entry("CALL", strategy.long, when=condCALL)
strategy.exit("CALL Exit", from_entry="CALL", stop=longStop)
strategy.entry("PUT", strategy.short, when=condPUT)
strategy.exit("PUT Exit", from_entry="PUT", stop=shortStop)