Strategi ini adalah sistem perdagangan yang menggabungkan Bollinger Bands, penunjuk trend, penunjuk momentum, dan penunjuk turun naik, membuat keputusan perdagangan melalui analisis harga-volume. Strategi ini menggunakan breakout Bollinger Bands sebagai isyarat masuk utama, digabungkan dengan pengesahan kekuatan trend ADX dan pengesahan kejayaan volum, menggunakan MACD dan ATR trailing stop sebagai mekanisme keluar.
Logik teras strategi ini adalah berdasarkan aspek berikut: 1. Menggunakan Bollinger Bands sebagai rujukan untuk julat turun naik harga, mencari peluang panjang apabila harga memecahkan di atas band atas dan peluang pendek apabila ia memecahkan di bawah band bawah 2. Menggunakan penunjuk ADX untuk menilai kekuatan trend, hanya membuka kedudukan apabila trend cukup kuat (ADX>25) 3. Memerlukan lonjakan jumlah (1.5 kali melebihi jumlah purata 20 hari) untuk mengesahkan kesahihan harga 4. Menggunakan penunjuk SuperTrend sebagai penapis arah trend, hanya memasuki kedudukan apabila harga berada di sisi yang betul garis trend 5. Menggunakan MACD death cross, ATR trailing stop, atau ADX melemah sebagai syarat keluar
Ini adalah strategi trend berikut pelbagai penunjuk yang direka dengan baik yang membina sistem perdagangan yang menggabungkan trend berikut dan kawalan risiko melalui integrasi organik Bollinger Bands, ADX, SuperTrend, MACD, dan penunjuk lain. Keuntungan strategi terletak pada pengesahan isyarat berbilang dan mekanisme kawalan risiko yang komprehensif, tetapi ia juga menghadapi cabaran pengoptimuman berlebihan dan sensitiviti parameter. Melalui pengoptimuman berterusan dan penyesuaian dinamik kepada persekitaran pasaran, strategi ini mempunyai potensi untuk mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Nifty Options Trendy Markets with TSL", overlay=true) // Input Parameters lengthBB = input(20, title="Bollinger Bands Length") multBB = input(2.0, title="Bollinger Bands Multiplier") adxLength = input(14, title="ADX Length") adxThreshold = input(25, title="ADX Entry Threshold") adxExitThreshold = input(20, title="ADX Exit Threshold") superTrendLength = input(10, title="Supertrend Length") superTrendMultiplier = input(3.0, title="Supertrend Multiplier") macdFast = input(12, title="MACD Fast Length") macdSlow = input(26, title="MACD Slow Length") macdSignal = input(9, title="MACD Signal Length") atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="Trailing Stop ATR Multiplier") volumeSpikeMultiplier = input(1.5, title="Volume Spike Multiplier") // Calculations [macdLine, signalLine,_ ] = ta.macd(close, macdFast, macdSlow, macdSignal) macdCrossover = ta.crossover(macdLine, signalLine) macdCrossunder = ta.crossunder(macdLine, signalLine) [middleBB,upperBB,lowerBB] = ta.bb(close, lengthBB, multBB) [supertrend, direction] = ta.supertrend(superTrendMultiplier,superTrendLength) len = input.int(17, minval=1, title="DI Length") lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50) [diplus, diminus, adx] = ta.dmi(len, lensig) atr = ta.atr(atrLength) trailingStopLong = close - atr * atrMultiplier // For long trades trailingStopShort = close + atr * atrMultiplier // For short trades volumeSpike = volume > ta.sma(volume, 20) * volumeSpikeMultiplier // Entry Conditions longEntry = ta.crossover(close, upperBB) and adx > adxThreshold and volumeSpike and close > supertrend shortEntry = ta.crossunder(close, lowerBB) and adx > adxThreshold and volumeSpike and close < supertrend // Exit Conditions longExit = ta.crossunder(macdLine, signalLine) or close < trailingStopLong or adx < adxExitThreshold shortExit = ta.crossover(macdLine, signalLine) or close > trailingStopShort or adx < adxExitThreshold // Strategy Entries and Exits if (longEntry) strategy.entry("Long", strategy.long) if (shortEntry) strategy.entry("Short", strategy.short) if (longExit) strategy.close("Long") if (shortExit) strategy.close("Short") // Plotting plot(supertrend, color=color.blue, style=plot.style_line, linewidth=2, title="Supertrend Line") plot(trailingStopLong, title="Trailing Stop for Long", color=color.green, style=plot.style_line) plot(trailingStopShort, title="Trailing Stop for Short", color=color.red, style=plot.style_line) bgcolor(longEntry ? color.new(color.green, 90) : shortEntry ? color.new(color.red, 90) : na, title="Background for Entry") // Alerts alertcondition(longEntry, title="Long Entry", message="Buy Call: Long entry conditions met") alertcondition(shortEntry, title="Short Entry", message="Buy Put: Short entry conditions met") alertcondition(longExit, title="Long Exit", message="Exit Call: Long exit conditions met") alertcondition(shortExit, title="Short Exit", message="Exit Put: Short exit conditions met")