
Strategi ini menggabungkan persilangan purata bergerak, indeks relatif kuat (RSI) dan penilaian peningkatan jumlah dagangan yang besar, meletakkan lebih banyak posisi kosong apabila harga menangkap penurunan yang berlaku selepas jumlah dagangan yang tinggi, dan menetapkan tiga pemberhentian berturut-turut untuk mengunci keuntungan dalam perkadaran yang berbeza. Strategi ini juga mempunyai pilihan untuk menjejaki stop loss untuk menangkap peluang harga terus bergerak menguntungkan.
Persaingan emas antara purata bergerak cepat dan purata bergerak perlahan memberikan isyarat awal untuk menentukan perubahan trend. RSI digunakan untuk menilai keadaan overbought dan oversold dan membantu mengelakkan isyarat masuk ke pasaran dalam keadaan ini untuk memastikan kestabilan isyarat. Apabila jumlah dagangan jelas melebihi purata, ia menunjukkan perhatian pasaran kepada perubahan harga yang berpotensi.
Prinsip mendapatkan dan berhenti keluar dari isyarat kosong adalah sama dengan melakukan lebih banyak, yang tidak akan dibincangkan di sini. Perlu diperhatikan bahawa strategi ini mempunyai keupayaan untuk melakukan lebih banyak dan kosong.
Strategi ini mempunyai beberapa kelebihan utama:
Garis purata yang bercampur dengan RSI membentuk penilaian masa masuk yang mantap, mengelakkan daripada membina gudang di kawasan yang terlalu banyak dibeli dan dijual, meningkatkan kebarangkalian keuntungan.
Menggunakan lonjakan jumlah urus niaga sebagai penilaian tambahan, pastikan anda memilih untuk membina gudang selang yang mempunyai kadar turun naik harga yang lebih besar, dan meningkatkan kekuatan isyarat.
Menggunakan strategi untuk membina kedudukan dengan harga dan jumlah dagangan jatuh pada peratusan tertentu, meningkatkan ketepatan masa masuk ke pasaran dan peluang untuk berbalik atau naik.
Ditetapkan tiga perintah berhenti berturut-turut, memanfaatkan ruang kenaikan harga untuk mengunci keuntungan, pelabur boleh memilih beberapa perintah berhenti mengikut keadaan risiko mereka.
Fungsi tracking stop loss yang boleh dipilih, membolehkan pelabur memilih untuk mengaktifkan atau tidak mengikut turun naik pasaran, dan juga dapat memperoleh keuntungan yang lebih besar dengan jaminan.
Ia juga boleh digunakan untuk berdagang dengan mata wang dan mata wang kosong, yang boleh menghasilkan keuntungan ketika pasaran naik dan turun, meningkatkan kepraktisan strategi.
Walaupun strategi ini dirancang dengan baik, ada risiko yang perlu diperhatikan apabila berdagang dengan mana-mana produk kewangan:
Persaingan garis rata-rata yang cepat dan perlahan tidak selalu tepat untuk menilai pergerakan pasaran, dan isyarat yang salah akan muncul jika parameter garis rata-rata yang tidak betul digunakan.
Penetapan parameter RSI yang tidak betul juga boleh menyebabkan kebocoran ke kawasan overbought dan oversold, parameter kitaran RSI harus disesuaikan dengan pasaran.
Pertambahan jumlah transaksi tidak sama dengan perubahan harga yang ketara, dan kriteria rujukan jumlah transaksi boleh disesuaikan dengan sewajarnya.
Harga dan jumlah dagangan yang jatuh terlalu besar atau terlalu kecil akan mempengaruhi masa masuk ke pasaran, faktor yang perlu disesuaikan dengan pasaran.
Tidak ada jaminan bahawa stop loss akan terjual sepenuhnya dengan menggunakan margin stop loss yang ditetapkan, dan perubahan mendadak dalam pasaran boleh menyebabkan slippage.
Tracking Stop Loss Jika anda menetapkan terlalu banyak, anda juga boleh keluar dari stop loss terlalu awal dan kehilangan keuntungan yang lebih besar.
Untuk menghadapi risiko di atas, anda perlu memastikan strategi stabil dan boleh dipercayai melalui pengoptimuman kod, penyesuaian parameter, dan pengujian semula yang ketat.
Strategi ini masih boleh dioptimumkan lagi:
Menambah penghakiman indikator lain untuk membantu membuat keputusan, seperti penggunaan gabungan indikator seperti pita Brin, KD dan lain-lain dapat meningkatkan ketepatan isyarat.
Menggabungkan kaedah pembelajaran mesin untuk membina purata bergerak dinamik seperti LSTM, parameter garis purata boleh disesuaikan secara automatik mengikut keadaan pasaran terkini, meningkatkan kefahaman mengenai trend.
Tambah fungsi penyesuaian dinamik stop / stop loss berdasarkan turun naik pasaran, membolehkan strategi menyesuaikan penyesuaian stop secara automatik mengikut tahap turun naik pasaran semasa.
Menggunakan pendekatan dinamik untuk mengoptimumkan faktor kemerosotan dalam masa nyata berdasarkan hubungan antara penurunan keseluruhan dan saham individu, untuk memilih masa terbaik untuk meletakkan kedudukan.
Menggunakan model pelbagai faktor, menggabungkan analisis emosi, analisis peraturan hubungan dan lain-lain pilihan untuk menggunakan strategi yang mempunyai kaitan harga yang paling kuat dan perubahan jumlah transaksi, dapat meningkatkan keberkesanan strategi.
Strategi ini secara keseluruhannya sangat sesuai untuk digunakan oleh pelabur garis pendek menengah. Fungsi strategi yang dioptimumkan akan menjadi lebih sempurna dan pintar, dengan nilai aplikasi sebenar yang lebih tinggi. Sebagai strategi perdagangan kuantitatif yang proaktif, ia menawarkan pulangan pelaburan yang baik, tetapi juga berusaha untuk mengurangkan risiko, dan benar-benar melakukan pertarungan yang mantap.
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Advanced Strategy with Volume and Price Retracement and Multi-Take Profit (USDT)", overlay=true)
// Parametreler
fastLength = input(12, minval=1, title="Fast Moving Average")
slowLength = input(26, minval=1, title="Slow Moving Average")
rsiPeriod = input(14, minval=1, title="RSI Period")
volLength = input(20, minval=1, title="Volume MA Length")
volMultiplier = input(2.0, title="Volume Spike Multiplier")
trailOffset = input(1, title="Trailing Offset (%)")
usdtPerTrade = input(50000, title="USDT per Trade")
retraceFactor = input(0.8, title="Retracement Factor for Entry")
takeProfit1 = input(1, title="Take Profit 1 (%)")
takeProfit2 = input(2, title="Take Profit 2 (%)")
takeProfit3 = input(3, title="Take Profit 3 (%)")
trailForTP = input(true, title="Use Trailing Stop for Take Profits")
// Hesaplamalar
fastMA = sma(close, fastLength)
slowMA = sma(close, slowLength)
rsi = rsi(close, rsiPeriod)
volMA = sma(volume, volLength)
volumeSpike = volume > volMA * volMultiplier
// Durum Değişkenleri ve Saklanan Değerler
var float spikeVolume = na
var float spikePrice = na
var int direction = 0
// Alım/Satım Sinyalleri
longCondition = crossover(fastMA, slowMA) and rsi < 70
shortCondition = crossunder(fastMA, slowMA) and rsi > 30
// Hacim Spike ve Fiyat Hareketinin Saklanması
if (longCondition and volumeSpike)
spikeVolume := volume
spikePrice := close
direction := 1
else if (shortCondition and volumeSpike)
spikeVolume := volume
spikePrice := close
direction := -1
// Retracement Kontrolü ve Giriş Emirleri
if (direction == 1 and volume < spikeVolume * retraceFactor and close < spikePrice * (1 - trailOffset / 100))
strategy.entry("Long", strategy.long, qty=usdtPerTrade / close)
spikeVolume := na
direction := 0
else if (direction == -1 and volume < spikeVolume * retraceFactor and close > spikePrice * (1 + trailOffset / 100))
strategy.entry("Short", strategy.short, qty=usdtPerTrade / close)
spikeVolume := na
direction := 0
// Take Profit Emirleri
if strategy.position_size > 0
strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)
if strategy.position_size < 0
strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)
// Pozisyon çıkışları
strategy.close("Long", when=shortCondition)
strategy.close("Short", when=longCondition)