
Ini adalah strategi perdagangan opsi dinamis yang didasarkan pada indikator multi-teknis yang bertujuan untuk mengidentifikasi peluang perdagangan probabilitas tinggi melalui analisis komprehensif terhadap volatilitas, tren, dan dinamika pasar. Strategi ini menggabungkan beberapa indikator teknis, seperti rata-rata real ripple (ATR), Bollinger Bands (BB), Relatively Strong Index (RSI), dan Volume Weighted Average Price (VWAP), untuk membentuk kerangka keputusan perdagangan yang komprehensif.
Prinsip inti dari strategi ini adalah menggunakan beberapa sinyal pasar untuk membangun keputusan perdagangan. Ini terutama mencakup langkah-langkah kunci berikut:
Strategi ini membangun sebuah kerangka perdagangan opsi yang relatif kokoh melalui analisis multi-faktor. Dengan menggunakan indikator-indikator teknis, kontrol risiko, dan mekanisme keluar dinamis secara komprehensif, strategi ini memberikan cara perdagangan yang sistematis bagi para pedagang. Namun, strategi perdagangan apa pun membutuhkan verifikasi dan pengoptimalan yang berkelanjutan.
Periode 5 menit:
Periode 15 menit:
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Vinayz Options Stratergy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=2)
// ---- Input Parameters ----
atrPeriod = input(14, title="ATR Period")
bbLength = input(20, title="BB Period")
bbStdDev = input(2, title="BB Std Dev")
rsiPeriod = input(14, title="RSI Period")
atrMultiplier = input(1.5, title="ATR Trailing Stop Multiplier")
vwapLength = input(20, title="VWAP Length")
targetMultiplier = input(2, title="Target Multiplier") // Target set at 2x ATR
maxHoldingBars = input(3, title="Max Holding Period (Bars)")
// ---- Indicator Calculations ----
atrValue = ta.atr(atrPeriod)
smaValue = ta.sma(close, bbLength)
upperBB = smaValue + bbStdDev * ta.stdev(close, bbLength)
lowerBB = smaValue - bbStdDev * ta.stdev(close, bbLength)
rsiValue = ta.rsi(close, rsiPeriod)
vwap = ta.vwma(close, vwapLength)
// ---- Volume Spike/Breakout Detection ----
volSMA = ta.sma(volume, 10)
volSpike = volume > volSMA * 1.5
// ---- ATR Volatility Filter to Avoid Low Volatility Zones ----
atrFilter = atrValue > ta.sma(atrValue, 20) * 0.5
// ---- Long Call Entry Conditions ----
longCE = ta.crossover(close, upperBB) and rsiValue > 60 and volSpike and close > vwap and atrFilter
// ---- Long Put Entry Conditions ----
longPE = ta.crossunder(close, lowerBB) and rsiValue < 40 and volSpike and close < vwap and atrFilter
// ---- Stop Loss and Target Calculation ----
longStopLoss = strategy.position_size > 0 ? strategy.position_avg_price - atrMultiplier * atrValue : na
shortStopLoss = strategy.position_size < 0 ? strategy.position_avg_price + atrMultiplier * atrValue : na
longTarget = strategy.position_size > 0 ? strategy.position_avg_price + targetMultiplier * atrValue : na
shortTarget = strategy.position_size < 0 ? strategy.position_avg_price - targetMultiplier * atrValue : na
// ---- Buy/Sell Logic ----
if (longCE)
strategy.entry("CE Entry", strategy.long)
label.new(bar_index, high, "BUY CE", color=color.green, textcolor=color.white, yloc=yloc.abovebar, size=size.small, tooltip="Buy CE Triggered")
if (longPE)
strategy.entry("PE Entry", strategy.short)
label.new(bar_index, low, "BUY PE", color=color.red, textcolor=color.white, yloc=yloc.belowbar, size=size.small, tooltip="Buy PE Triggered")
// ---- Exit Conditions ----
if (strategy.position_size > 0)
// Exit Long CE on Target Hit
if (close >= longTarget)
strategy.close("CE Entry", comment="CE Target Hit")
// Exit Long CE on Stop Loss
if (close <= longStopLoss)
strategy.close("CE Entry", comment="CE Stop Loss Hit")
// Time-Based Exit after 3 candles
if (bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) >= maxHoldingBars)
strategy.close("CE Entry", comment="CE Timed Exit")
if (strategy.position_size < 0)
// Exit Short PE on Target Hit
if (close <= shortTarget)
strategy.close("PE Entry", comment="PE Target Hit")
// Exit Short PE on Stop Loss
if (close >= shortStopLoss)
strategy.close("PE Entry", comment="PE Stop Loss Hit")
// Time-Based Exit after 3 candles
if (bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) >= maxHoldingBars)
strategy.close("PE Entry", comment="PE Timed Exit")
// ---- Plotting ----
plot(upperBB, color=color.green, title="Upper BB")
plot(lowerBB, color=color.red, title="Lower BB")
plot(rsiValue, title="RSI", color=color.blue, linewidth=1)
hline(60, "Overbought", color=color.blue)
hline(40, "Oversold", color=color.blue)
plot(vwap, color=color.orange, linewidth=1, title="VWAP")
// ---- Plot Volume Breakout/Spike ----
barcolor(volSpike ? color.yellow : na, title="Volume Spike Indicator")
//plotshape(volSpike, title="Volume Breakout", location=location.bottom, style=shape.triangleup, color=color.purple, size=size.small, text="Spike")
// ---- Alerts ----
alertcondition(longCE, "CE Buy Alert", "Bank Nifty CE Buy Triggered!")
alertcondition(longPE, "PE Buy Alert", "Bank Nifty PE Buy Triggered!")