
Strategi ini adalah sistem perdagangan kuantitatif berasaskan analisis teknikal, yang menggunakan bentuk pengapukan bullish sebagai isyarat masuk, dan menggabungkan indikator turun naik Bollinger Band untuk pengurusan risiko dan kawalan kedudukan. Strategi ini, setelah mengenal pasti bentuk pengapukan bullish, akan menentukan nisbah risiko berdasarkan rentang turun naik yang dikira oleh Bollinger Band, kemudian mengira saiz kedudukan yang tepat berdasarkan peratusan tetap nilai akaun keseluruhan, dan akhirnya menguruskan perdagangan dengan menetapkan sasaran keuntungan stop loss dan nisbah pulangan risiko tetap (4R).
Logik utama strategi ini terbahagi kepada tiga bahagian: penjanaan isyarat, pengurusan kedudukan dan syarat keluar.
Pertama, penjanaan isyarat adalah berdasarkan bentuk penyerapan peer-to-peer, yang mesti memenuhi syarat berikut:
Kedua, pengurusan kedudukan boleh dicapai melalui langkah-langkah berikut:
Akhirnya, syarat untuk keluar ialah:
Kawalan risiko adalah tepat dan dinamik: Strategi ini tidak menggunakan titik berhenti tetap, tetapi secara dinamik menyesuaikan parameter risiko mengikut turun naik pasaran semasa (dihitung melalui Brinks), membolehkan sistem menyesuaikan diri dengan keadaan pasaran yang berbeza.
Pengurusan risiko peratusan tetap: Hanya 0.75% dari akaun risiko setiap urus niaga, berkesan mencegah kerugian yang berlebihan dalam satu urus niaga dan mencapai kestabilan pengurusan dana jangka panjang.
Pengiraan kedudukan yang tepat: Ukuran kedudukan setiap perdagangan dikira dengan tepat berdasarkan turun naik Brin dan jumlah risiko, memastikan pendedahan risiko yang konsisten dalam keadaan pasaran yang berbeza.
Rasio risiko-pulang yang jelas: menetapkan sasaran keuntungan menggunakan 4R, memastikan bahawa potensi keuntungan dari setiap perdagangan adalah 4 kali ganda daripada risiko yang berpotensi, memenuhi keperluan pengembalian risiko perdagangan profesional.
Memvisualisasikan keadaan dagangan: Membantu peniaga untuk memahami secara langsung bagaimana dagangan berjalan dengan menandai isyarat masuk dan memetakan kotak antara dagangan.
Risiko Keberkesanan Masa: Pencerobohan harga adalah isyarat pembalikan harga jangka pendek yang mungkin tidak dapat meramalkan perubahan trend jangka menengah dan jangka panjang, yang boleh menyebabkan kemasukan awal dalam pasaran yang kuat.
Sekatan keadaan pasaran: Strategi ini mungkin tidak berfungsi dengan baik dalam pasaran yang bergolak tinggi atau kekurangan kecairan, terutamanya apabila Brin meluas atau menyusut secara tidak normal.
Keadaan kemasukan yang terhad: Bergantung kepada satu-satunya bentuk pengapungan yang boleh menyebabkan isyarat menjadi jarang atau kehilangan peluang kemasukan yang berkesan.
Risiko penggandaan tetap: Menggunakan faktor tetap 0.4 untuk mengira nilai R mungkin tidak cukup fleksibel dalam keadaan pasaran tertentu dan tidak dapat menyesuaikan diri dengan keadaan pasaran yang melampau.
Isu slippage yang berpotensi: Dalam pasaran yang bergelombang tinggi, harga pelaksanaan hentian sebenar mungkin mengalami slippage yang jelas, yang mempengaruhi kesan kawalan risiko sebenar.
Menambah syarat penapisan: Anda boleh mempertimbangkan untuk menambah indikator pengesahan trend (seperti purata bergerak), memastikan perdagangan hanya dalam arah trend utama, mengelakkan perdagangan berlawanan arah.
Analisis pelbagai bingkai masa: memperkenalkan analisis struktur pasaran pada bingkai masa yang lebih tinggi, melakukan perdagangan hanya apabila trend bingkai masa yang lebih tinggi selaras, meningkatkan kualiti isyarat.
Parameter risiko penyesuaian dinamik: menetapkan nisbah risiko tetap 0.75% dan faktor nilai R 0.4 sebagai parameter yang boleh disesuaikan, menyesuaikan secara automatik mengikut turun naik pasaran, meningkatkan risiko di pasaran turun naik rendah dan mengurangkan risiko di pasaran turun naik tinggi.
Optimumkan strategi keluar: Anda boleh mempertimbangkan untuk menambah berhenti bergerak atau keluar dinamik berdasarkan parameter, dan bukan hanya bergantung pada tahap berhenti dan keuntungan yang tetap.
Menambah pengesahan pelbagai petunjuk: menggabungkan bentuk penelan penjual dengan petunjuk teknikal lain (seperti RSI, MACD atau analisis kuantiti transaksi) untuk meningkatkan kebolehpercayaan isyarat masuk.
Sistem perdagangan kuantitatif dengan strategi penyalahgunaan spekulasi yang dikendalikan oleh Brin adalah sistem perdagangan yang lengkap yang menggabungkan pengenalan bentuk grafik tradisional dan kaedah pengurusan risiko moden. Strategi ini menyesuaikan parameter risiko secara dinamik melalui Brin, mengawal saiz kedudukan setiap perdagangan dengan tepat, dan menetapkan sasaran keuntungan menggunakan perbandingan ganjaran risiko yang tetap.
Walaupun strategi ini menunjukkan prestasi yang baik dalam pengurusan risiko, masih ada ruang untuk pengoptimuman, terutamanya dalam kualiti isyarat masuk dan fleksibiliti strategi keluar. Dengan menambah syarat penapisan tambahan, analisis jangka masa berganda dan penyesuaian parameter risiko dinamik, strategi ini dapat meningkatkan lagi kebolehpasaran dan keuntungan dalam keadaan pasaran yang berbeza.
Secara keseluruhannya, ini adalah sistem perdagangan lengkap dengan ciri-ciri pengurusan risiko profesional yang sesuai untuk digunakan oleh peniaga yang memberi perhatian kepada pengurusan wang dan kawalan risiko. Dengan pengoptimuman yang munasabah dan penyesuaian parameter, strategi ini boleh menjadi alat perdagangan yang stabil dalam jangka panjang.
/*backtest
start: 2024-02-26 00:00:00
end: 2025-02-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Bullish Engulfing Strategy with BB Risk", overlay=true)
// Input parameters for customization (optional, can be adjusted in Strategy Tester)
minVolume = input.int(1000000, "Minimum Volume", minval=1) // Optional filter for liquidity
// Calculate Bollinger Bands (length=40, StdDev=2.5) for R
length = 40
mult = 2.5
basis = ta.sma(close, length) // Middle Band (40-period SMA of close)
dev = mult * ta.stdev(close, length) // Standard deviation multiplied by 2.5
upperBB = basis + dev // Upper Bollinger Band
lowerBB = basis - dev // Lower Bollinger Band
// Define R as 0.4 times the Bollinger Bands spread: R = 0.4 * ((1 - (lowerBB / upperBB)) * 100)
R = 0.4 * (1 - (lowerBB / upperBB)) // Percentage value, scaled by 0.4
// Define Bullish Engulfing pattern with optional volume filter
isBullishEngulfing() => close > open and close[1] < open[1] and close > open[1] and open < close[1] and close[1] < open[1] and close > open and volume > minVolume
bullishEngulfing = isBullishEngulfing()
// Track position and entry details
var bool inPosition = false
var float entryPrice = 0.0
var int entryBar = 0
var int exitBar = 0 // Track exit bar (added here to fix undeclared variable)
var float exitPrice = 0.0 // Track exit price
// Enter long position on the next bar after Bullish Engulfing, with position size risking 0.75% of portfolio
if (bullishEngulfing and not inPosition)
// Calculate position size to risk 0.75% of portfolio
portfolioValue = strategy.equity // Current portfolio equity
riskPerTrade = portfolioValue * 0.0075 // 0.75% of portfolio
stopLossDistance = R // R% of entry price (stop-loss distance)
entryPrice := close
positionSize = riskPerTrade / stopLossDistance / entryPrice // Position size in units (contracts/shares)
// Ensure positionSize is rounded to a practical number (e.g., whole shares)
positionSize := math.round(positionSize)
// Enter long position with calculated size
strategy.entry("Long", strategy.long, limit = entryPrice, qty=positionSize)
inPosition := true
entryBar := bar_index
// Exit logic: Stop-loss or Take-profit
if (inPosition)
// Stop-loss: Exit if price drops below entryPrice - R%
stopLossLevel = entryPrice * (1 - R)
if (low <= stopLossLevel)
strategy.close("Long")
inPosition := false
exitBar := bar_index
exitPrice := close
// Take-profit: Exit if price rises above entryPrice + 4R%
takeProfitLevel = entryPrice * (1 + 4 * R)
if (high >= takeProfitLevel)
strategy.close("Long")
inPosition := false
exitBar := bar_index
exitPrice := close
// Optional: Plot signals and R for visualization
if (bullishEngulfing)
label.new(bar_index, high, "Bullish Engulfing", yloc=yloc.abovebar, color=color.green, style=label.style_label_down, textcolor=color.white)
plot(R, title="R (BB Spread %)", color=color.blue, style=plot.style_histogram)