
Strategi ini berdasarkan kepada persilangan purata bergerak sederhana dan purata bergerak bertimbangan untuk menghasilkan isyarat dagangan, dan digabungkan dengan hentian dan hentian untuk menguruskan kedudukan. Strategi ini menggabungkan faktor dinamik (persaingan purata bergerak) dan faktor statik (persaingan hentian dan hentian hentian tetap) untuk mencapai kesan perpaduan statik.
Logik utamanya adalah untuk mengira purata bergerak dari dua kitaran yang berbeza, satu adalah purata bergerak mudah 9 hari, dan satu adalah purata bergerak bertimbangan 21 hari. Apabila purata bergerak mudah 9 hari dalam kitaran pendek melintasi purata bergerak bertimbangan 21 hari dalam kitaran panjang, ia menghasilkan isyarat beli; apabila garis kitaran pendek melintasi garis kitaran panjang, ia menghasilkan isyarat jual.
Apabila isyarat diterima, anda perlu membuat pesanan mengikut perkadaran stop loss yang ditetapkan. Sebagai contoh, jika perkadaran stop loss ditetapkan sebagai 5%, maka harga stop loss ditetapkan sebagai 95 peratus daripada harga masuk. Jika perkadaran stop loss ditetapkan sebagai 5%, maka harga stop loss ditetapkan sebagai 105 peratus daripada harga masuk.
Strategi ini menggabungkan indikator teknikal dinamik dan parameter strategi statik, dengan kelebihan sistem dinamik. Indikator teknikal mampu menangkap ciri-ciri pasaran secara dinamik, yang membantu untuk memahami trend; dan tetapan parameter menyediakan kawalan risiko dan pulangan yang stabil, yang membantu untuk mengurangkan keacakan pengurusan kedudukan.
Berbanding dengan sistem dinamik semata-mata, strategi ini lebih stabil dalam pengurusan kedudukan dan dapat mengurangkan kesan keputusan yang tidak rasional. Berbanding dengan sistem statik semata-mata, pilihan masuk strategi ini lebih fleksibel dan dapat menyesuaikan diri dengan perubahan pasaran. Oleh itu, strategi ini secara keseluruhan lebih stabil dan menguntungkan.
Risiko strategi ini berasal dari dua aspek utama. Pertama adalah kemungkinan bahawa purata bergerak menghasilkan isyarat yang salah. Apabila pasaran berada dalam susunan gegaran, rata-rata bergerak mungkin sering bersilang, menjadikan strategi terkurung. Kedua adalah risiko bahawa penangguhan stop loss tetap tidak dapat menyesuaikan diri dengan keadaan pasaran khusus. Apabila peristiwa mendadak menyebabkan turun naik besar di pasaran, kedudukan stop loss yang ditetapkan mungkin akan ditembusi dan tidak dapat mengawal risiko dengan berkesan.
Kaedah pertama adalah untuk mengelakkan nod masa utama dan mengurangkan kebarangkalian isyarat yang salah. Kaedah kedua adalah untuk mengaktifkan algoritma henti rugi yang menyesuaikan diri berdasarkan turun naik pasaran dan peristiwa khas, supaya henti rugi disesuaikan dengan pasaran.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Uji kombinasi parameter yang berbeza untuk mencari parameter terbaik;
Menambah syarat penapisan untuk mengelakkan isyarat tidak sah;
Menggunakan algoritma penangguhan kerugian yang bersesuaian untuk berhubung dengan pasaran;
Mengambil kira trend yang kuat dan lemah bersama-sama dengan petunjuk lain, dan mengelakkan pasaran yang bergolak.
Mengoptimumkan parameter secara automatik menggunakan kaedah pembelajaran mesin.
Kaedah seperti menguji parameter yang berbeza, menambah syarat penapisan, memperbaiki stop loss, dan menilai trend dapat meningkatkan lagi kestabilan dan kadar pulangan strategi.
Strategi ini berjaya menggabungkan indikator dinamik dan parameter statik, dengan fleksibiliti dan kestabilan. Strategi ini mempunyai prestasi keseluruhan yang lebih baik daripada strategi yang bersifat dinamik dan statik. Sudah tentu, masih ada ruang untuk pengoptimuman, dengan cara menyesuaikan parameter, syarat penapisan, penangguhan penyesuaian, dan pembelajaran mesin.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("WMA vs MMA Crossover Strategy with SL/TP", shorttitle="WMA_MMA_Cross_SL_TP", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Définition des périodes pour les moyennes mobiles
wmaLength = input.int(9, title="WMA Length")
mmaLength = input.int(21, title="MMA Length")
// Paramètres de Stop Loss et Take Profit en pourcentage
stopLossPercentage = input.float(5, title="Stop Loss (%)") / 100
takeProfitPercentage = input.float(5, title="Take Profit (%)") / 100
// Calcul des moyennes mobiles
wmaValue = ta.wma(close, wmaLength)
mmaValue = ta.sma(close, mmaLength)
// Conditions pour les signaux d'achat et de vente
buySignal = ta.crossover(wmaValue, mmaValue)
sellSignal = ta.crossunder(wmaValue, mmaValue)
// Génération des ordres en fonction des signaux
if buySignal
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", "Buy", stop=strategy.position_avg_price * (1 - stopLossPercentage), limit=strategy.position_avg_price * (1 + takeProfitPercentage))
if sellSignal
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", "Sell", stop=strategy.position_avg_price * (1 + stopLossPercentage), limit=strategy.position_avg_price * (1 - takeProfitPercentage))
// Affichage des moyennes mobiles sur le graphique
plot(wmaValue, color=color.blue, title="WMA")
plot(mmaValue, color=color.red, title="MMA")
// Affichage des signaux sur le graphique pour référence
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")