이 전략은 트렌드를 따르는 옵션 거래 시스템으로 여러 가지 기술적 지표를 결합합니다. 트렌드 확인을 위해 SMA와 VWAP와 함께 EMA 크로스오버를 핵심 신호로 사용하고 MACD와 RSI를 신호 필터링을위한 보충 지표로 사용합니다. 이 전략은 위험 관리에 대한 고정 수익 수준을 고용하고 엄격한 입시 조건과 위치 관리를 통해 거래 성공을 향상시킵니다.
이 전략은 8주기 및 21주기 EMA의 크로스오버를 주요 거래 신호로 사용합니다. 단기 EMA가 장기 EMA를 넘어서 다음 조건을 충족하면 긴 (콜) 신호가 유발됩니다. 가격은 100 및 200주기 SMA 이상, MACD 라인은 신호 라인 이상, RSI는 50 이상입니다. 짧은 (푸트) 신호는 반대 조건에서 유발됩니다. VWAP는 상대 가격 위치를 평가하는 데 도움이되는 가격 가중된 참조로 통합됩니다. 각 거래는 5%의 영리 수준과 함께 1 계약의 고정 위치 크기를 사용합니다. 플래그 전략은 포지션 상태를 추적하여 한 번에 하나의 포지션만 보유하도록합니다.
이 전략은 잘 구성되어 있으며 논리적으로 건전한 다중 지표 트렌드 추후 옵션 거래 전략입니다. 여러 기술적 지표의 조율을 통해 거래 신호 신뢰성을 향상시키고 고정된 영리 수준을 사용하여 위험을 관리합니다. 전략에는 일부 내재적인 위험이 있지만 제안된 최적화 방향은 안정성과 수익성을 더욱 향상시킬 수 있습니다. 전략의 시각화 디자인은 또한 거래자가 직관적으로 거래 신호를 이해하고 실행하는 데 도움이됩니다.
/*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")