Sumber dimuat naik... memuat...

Strategi Crossover Purata Bergerak yang saling berkaitan

Penulis:ChaoZhang, Tarikh: 2024-02-19 14:21:10
Tag:

img

Ringkasan

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.

Logika Strategi

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).

Analisis Kelebihan

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.

Analisis Risiko

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.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  1. Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum;

  2. Tambah keadaan penapisan untuk mengelakkan isyarat yang tidak sah;

  3. Menggunakan algoritma stop loss adaptif untuk bergerak dengan pasaran;

  4. Menggabungkan penunjuk lain untuk menilai kekuatan trend, mengelakkan pasaran terikat julat;

  5. 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.

Ringkasan

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")


Lebih lanjut