Adaptive Moving Average Crossover with Trailing Stop-Loss Strategy adalah pendekatan perdagangan kuantitatif yang menggabungkan pelbagai penunjuk teknikal. Strategi ini terutamanya bergantung pada isyarat silang antara Purata Bergerak Sederhana (SMA) yang cepat dan lambat untuk entri perdagangan, sambil menggunakan stop-loss trailing adaptif untuk pengurusan risiko. Strategi ini juga menggabungkan ciri-ciri canggih seperti ukuran kedudukan berdasarkan turun naik dan tahap stop-loss adaptif untuk meningkatkan daya adaptasi dan ketahanan di pelbagai keadaan pasaran.
Logik teras strategi ini merangkumi komponen utama berikut:
Moving Average Crossover: Menggunakan dua Purata Bergerak Sederhana (SMA) dengan tempoh yang berbeza - SMA pantas (default 5 tempoh) dan SMA perlahan (default 50 tempoh). Isyarat masuk panjang dicetuskan apabila SMA pantas melintasi SMA perlahan.
Pengukuran Posisi: Strategi ini menggunakan kaedah pengukuran kedudukan dinamik berdasarkan baki akaun dan harga semasa.
Stop-Loss Terakhir: Mengimplementasikan mekanisme stop-loss yang berasaskan peratusan. Tahap stop-loss bergerak ke atas apabila harga meningkat, mengunci keuntungan dan mengehadkan pengeluaran.
Ciri-ciri penyesuaian: Jika pilihan
Logika Keluar: Strategi ini terutamanya bergantung pada stop-loss yang tertinggal untuk penutupan kedudukan, tanpa menetapkan titik keuntungan tetap.
Mengikuti trend: Dengan menggunakan persilangan purata bergerak, strategi dapat menangkap trend jangka menengah hingga panjang, yang bermanfaat untuk keuntungan yang besar dalam pasaran yang kuat.
Pengurusan Risiko: Mekanisme stop-loss trailing berkesan mengawal risiko penurunan sambil membolehkan keuntungan berjalan.
Kemudahan penyesuaian: Dengan memasukkan faktor turun naik untuk menyesuaikan tahap stop-loss, strategi dapat menyesuaikan diri dengan lebih baik dengan persekitaran pasaran yang berbeza.
Pengurusan Modal: Ukuran kedudukan dinamik membantu meningkatkan saiz perdagangan apabila akaun berkembang dan secara automatik mengurangkan pendedahan risiko semasa pengeluaran akaun.
Fleksibiliti: Strategi ini menawarkan pelbagai parameter yang boleh diselaraskan, seperti tempoh purata bergerak dan peratusan stop-loss, yang membolehkan pengguna mengoptimumkan berdasarkan pasaran yang berbeza dan keutamaan risiko peribadi.
Penembusan palsu: Dalam pasaran yang berbeza-beza atau bergelombang, penembusan palsu purata bergerak yang kerap boleh berlaku, yang membawa kepada beberapa keluar stop-loss.
Lag: Purata bergerak adalah penunjuk yang secara semula jadi ketinggalan, yang mungkin tidak bertindak balas dengan cepat di pasaran yang sangat tidak menentu.
Overtrading: Tetapan parameter yang tidak betul boleh mengakibatkan kemasukan dan keluar yang kerap, meningkatkan kos transaksi.
Risiko Penarikan: Walaupun stop-loss yang tertinggal, strategi masih mungkin menghadapi penarikan yang ketara di pasaran yang berbalik dengan cepat.
Perdagangan Unidirectional: Strategi ini kini hanya mengambil kedudukan panjang, berpotensi kehilangan peluang atau mengalami kerugian dalam trend menurun.
Analisis Pelbagai Jangka Masa: Memperkenalkan penunjuk trend jangka panjang, seperti purata bergerak jangka panjang, untuk mengurangkan isyarat palsu.
Tambah Logik Jualan Pendek: Luaskan strategi untuk menyokong perdagangan pendek, meningkatkan keseluruhan dan peluang keuntungan.
Mengoptimumkan Waktu Masuk: Pertimbangkan untuk menggabungkan penunjuk teknikal lain (contohnya, RSI, MACD) untuk menapis isyarat perdagangan dan meningkatkan ketepatan masuk.
Pengoptimuman Parameter Dinamik: Melaksanakan mekanisme penyesuaian parameter adaptif, seperti penyesuaian dinamik tempoh purata bergerak berdasarkan turun naik pasaran.
Memperkenalkan Mekanisme Mengambil Keuntungan: Di samping berhenti, pertimbangkan untuk menambah peraturan mengambil keuntungan berdasarkan penunjuk teknikal atau sasaran tetap.
Meningkatkan Pengurusan Posisi: Melaksanakan strategi ukuran kedudukan yang lebih canggih, seperti yang berdasarkan Kriteria Kelly atau kaedah pariti risiko lain.
Tambah Penapis Dasar: Untuk perdagangan saham, pertimbangkan untuk memasukkan penunjuk asas sebagai syarat penapis perdagangan tambahan.
Adaptive Moving Average Crossover with Trailing Stop-Loss Strategy adalah pendekatan komprehensif yang mengintegrasikan pelbagai konsep perdagangan kuantitatif. Ia menangkap trend melalui crossover purata bergerak, menguruskan risiko menggunakan trailing stop, dan meningkatkan kebolehan menyesuaikan diri melalui penyesuaian parameter dinamik. Walaupun terdapat risiko dan batasan yang melekat, pengoptimuman parameter yang teliti dan penambahbaikan strategi seterusnya berpotensi mengubahnya menjadi sistem perdagangan yang kukuh. Reka bentuk modular strategi ini juga menyediakan asas yang kukuh untuk pengembangan dan pengoptimuman masa depan.
/*backtest start: 2023-07-23 00:00:00 end: 2024-07-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © chinmay.hundekari //@version=5 //@version=5 strategy("test", overlay = true) // Calculate two moving averages with different lengths. SLMA = input.int(50,"SMA",minval=10,step=1) FSMA = input.int(5,"SMA",minval=1,step=1) fancy_tests = input.bool(true,"Enable Fancy Changes") longLossPerc = input.float(2, title="Trailing Stop Loss (%)", minval=0.0, step=0.1) * 0.01 stdMult = input.float(2.0, title="Standard Deviation Multiplier", minval=0.0, step=0.01) float fastMA = ta.sma(close, FSMA) float slowMA = ta.sma(close, SLMA) float closMA = ta.sma(close, 25) confidence = 1.0 if (fancy_tests) longLossPerc := stdMult * ta.stdev(ohlc4, 20)/close balance = strategy.initial_capital + strategy.netprofit balanceInContracts = balance* confidence/close // Enter a long position when `fastMA` crosses over `slowMA`. if ta.crossover(fastMA, slowMA) strategy.entry("BUY", strategy.long, qty=balanceInContracts) //longStopPrice = strategy.position_avg_price * (1 - longLossPerc) //Trailing Stop loss Code longStopPrice = 0.0 percLoss = longLossPerc longStopPrice := if strategy.position_size > 0 //if (strategy.openprofit_percent/100.0 > longLossPerc) // percLoss := math.min(strategy.openprofit_percent/200.0, longLossPerc) stopValue = close * (1 - percLoss) math.max(stopValue, longStopPrice[1]) else 0 if strategy.position_size > 0 strategy.exit("STP", stop=longStopPrice) plot(strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_cross, linewidth=2, title="Long Stop Loss") // Enter a short position when `fastMA` crosses under `slowMA`. //if ta.crossunder(fastMA, closMA) // strategy.close_all("SEL")//strategy.entry("sell", strategy.short) // Plot the moving averages. plot(fastMA, "Fast MA", color.aqua) plot(slowMA, "Slow MA", color.orange) plot((confidence)*(close), "Confidence", color=color.green, linewidth=2)