Strategi ini menjana isyarat perdagangan berdasarkan persilangan purata bergerak mudah dan purata bergerak bertingkat, digabungkan dengan stop loss dan mengambil keuntungan untuk menguruskan kedudukan. Strategi ini mengintegrasikan faktor dinamik (persilangan purata bergerak) dan faktor statik (perbandingan stop loss dan mengambil keuntungan tetap) untuk mencapai kesan yang saling berkaitan antara elemen dinamik dan statik.
Logik teras adalah untuk mengira dua purata bergerak dengan tempoh yang berbeza, satu adalah purata bergerak mudah 9 hari dan yang lain adalah purata bergerak bertingkat 21 hari. Apabila SMA jangka pendek 9 hari melintasi di atas WMA jangka panjang 21 hari, isyarat beli dihasilkan. Apabila garis jangka pendek melintasi di bawah garis jangka panjang, isyarat jual dihasilkan.
Selepas menerima isyarat, pesanan diletakkan mengikut nisbah stop loss dan mengambil keuntungan yang ditetapkan. Sebagai contoh, jika nisbah stop loss ditetapkan pada 5%, maka harga stop loss akan ditetapkan pada 95% daripada harga kemasukan. Jika nisbah mengambil keuntungan adalah 5%, maka harga mengambil keuntungan akan ditetapkan pada 105% daripada harga kemasukan. Ini merealisasikan penggabungan faktor dinamik (pertukaran purata bergerak yang menentukan masa kemasukan dan keluar) dan faktor statik (nombor stop loss dan mengambil keuntungan tetap).
Strategi ini menggabungkan penunjuk teknikal dinamik dan parameter strategi statik, yang mempunyai kelebihan kedua-dua sistem dinamik dan statik. Penunjuk teknikal dapat menangkap ciri-ciri pasaran secara dinamik, yang bermanfaat untuk menangkap trend. Tetapan parameter menyediakan kawalan risiko dan pulangan yang stabil, yang membantu mengurangkan rawak dalam pengurusan kedudukan.
Berbanding dengan sistem dinamik tulen, strategi ini lebih kukuh dalam pengurusan kedudukan, yang mengurangkan kesan keputusan yang tidak rasional. Berbanding dengan sistem statik tulen, strategi ini lebih fleksibel dalam pemilihan kemasukan, yang menyesuaikan diri dengan perubahan pasaran. Oleh itu, strategi ini mempunyai ketahanan dan keuntungan keseluruhan yang baik.
Risiko strategi ini terutama datang dari dua aspek. Pertama, kemungkinan isyarat yang salah dari purata bergerak. Apabila pasaran terikat julat, purata bergerak mungkin mempunyai persilangan yang kerap, menyebabkan strategi itu dipotong.
Kedua, risiko yang tetap stop loss dan mengambil keuntungan tidak dapat menyesuaikan diri dengan keadaan pasaran yang melampau. Apabila peristiwa black swan menyebabkan turun naik pasaran yang besar, tahap stop loss dan mengambil keuntungan yang telah ditetapkan dapat ditembusi, gagal untuk mengawal risiko dengan berkesan.
Tindakan balas adalah: pertama, elakkan nod masa utama untuk mengurangkan kebarangkalian isyarat yang salah; kedua, membolehkan algoritma stop loss adaptif mengikut turun naik pasaran dan peristiwa khas, membuat stop loss dan mengambil keuntungan menyesuaikan dengan pasaran.
Strategi ini boleh dioptimumkan dari aspek berikut:
Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum;
Tambah keadaan penapisan untuk mengelakkan isyarat yang tidak sah;
Menggunakan algoritma stop loss adaptif untuk bergerak dengan pasaran;
Menggabungkan penunjuk lain untuk menilai kekuatan trend, mengelakkan pasaran terikat julat;
Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan parameter secara automatik.
Melalui ujian parameter, menambah penapis, meningkatkan hentian, menilai trend, dan lain-lain, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.
Strategi ini berjaya menggabungkan penunjuk dinamik dan parameter statik, menyeimbangkan fleksibiliti dan ketahanan. Berbanding dengan strategi dinamik dan statik murni, strategi ini berfungsi dengan lebih baik secara keseluruhan. Sudah tentu, masih ada ruang untuk pengoptimuman dengan menyesuaikan parameter, menambah penapis, hentian adaptif, pembelajaran mesin, dll., untuk menjadikan strategi lebih berkesan.
/*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")