
A estratégia é uma estratégia de negociação de opções de acompanhamento de tendências baseada em uma combinação de vários indicadores técnicos. Usando principalmente o cruzamento EMA como sinal central, em combinação com a direção da tendência confirmada pelo SMA, VWAP, e filtrando o sinal usando o MACD e o RSI como indicadores auxiliares.
A estratégia usa o cruzamento dos EMAs de 8 e 21 ciclos como sinal principal de negociação, e a multi-sinal é acionada quando a curta EMA atravessa a EMA de longo prazo e as seguintes condições são satisfeitas: o preço está acima dos 100 e 200 ciclos SMA, a linha MACD está acima da linha de sinal, e o RSI é maior que 50. Os termos de ação do sinal de curto são os opostos. A estratégia introduz o VWAP como referência de peso de preço para ajudar a determinar a posição relativa do preço atual.
Esta é uma estratégia de negociação de opções multi-indicadores de tendências de rastreamento de opções, com uma estrutura completa e lógica clara. A estratégia aumenta a confiabilidade do sinal de negociação através da combinação de vários indicadores técnicos e usa pontos de parada fixos para gerenciar o risco.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("OptionsMillionaire Strategy with Take Profit Only", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Define custom magenta color
magenta = color.rgb(255, 0, 255) // RGB for magenta
// Input settings for Moving Averages
ema8 = ta.ema(close, 8)
ema21 = ta.ema(close, 21)
sma100 = ta.sma(close, 100)
sma200 = ta.sma(close, 200)
vwap = ta.vwap(close) // Fixed VWAP calculation
// Input settings for MACD and RSI
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
rsi = ta.rsi(close, 14)
// Define trend direction
isBullish = ema8 > ema21 and close > sma100 and close > sma200
isBearish = ema8 < ema21 and close < sma100 and close < sma200
// Buy (Call) Signal
callSignal = ta.crossover(ema8, ema21) and isBullish and macdLine > signalLine and rsi > 50
// Sell (Put) Signal
putSignal = ta.crossunder(ema8, ema21) and isBearish and macdLine < signalLine and rsi < 50
// Define Position Size and Take-Profit Level
positionSize = 1 // Position size set to 1 (each trade will use one contract)
takeProfitPercent = 5 // Take profit is 5%
// Variables to track entry price and whether the position is opened
var float entryPrice = na // To store the entry price
var bool positionOpen = false // To check if a position is open
// Backtesting Execution
if callSignal and not positionOpen
// Enter long position (call)
strategy.entry("Call", strategy.long, qty=positionSize)
entryPrice := close // Store the entry price
positionOpen := true // Set position as opened
if putSignal and not positionOpen
// Enter short position (put)
strategy.entry("Put", strategy.short, qty=positionSize)
entryPrice := close // Store the entry price
positionOpen := true // Set position as opened
// Only check for take profit after position is open
if positionOpen
// Calculate take-profit level (5% above entry price for long, 5% below for short)
takeProfitLevel = entryPrice * (1 + takeProfitPercent / 100)
// Exit conditions (only take profit)
if strategy.position_size > 0
// Long position (call)
if close >= takeProfitLevel
strategy.exit("Take Profit", "Call", limit=takeProfitLevel)
if strategy.position_size < 0
// Short position (put)
if close <= takeProfitLevel
strategy.exit("Take Profit", "Put", limit=takeProfitLevel)
// Reset position when it is closed (this happens when an exit is triggered)
if strategy.position_size == 0
positionOpen := false // Reset positionOpen flag
// Plot EMAs
plot(ema8, color=magenta, linewidth=2, title="8 EMA")
plot(ema21, color=color.green, linewidth=2, title="21 EMA")
// Plot SMAs
plot(sma100, color=color.orange, linewidth=1, title="100 SMA")
plot(sma200, color=color.blue, linewidth=1, title="200 SMA")
// Plot VWAP
plot(vwap, color=color.white, style=plot.style_circles, title="VWAP")
// Highlight buy and sell zones
bgcolor(callSignal ? color.new(color.green, 90) : na, title="Call Signal Background")
bgcolor(putSignal ? color.new(color.red, 90) : na, title="Put Signal Background")
// Add buy and sell markers (buy below, sell above)
plotshape(series=callSignal, style=shape.labelup, location=location.belowbar, color=color.green, text="Buy", title="Call Signal Marker")
plotshape(series=putSignal, style=shape.labeldown, location=location.abovebar, color=color.red, text="Sell", title="Put Signal Marker")