Strategi Crossover Rata-rata Bergerak yang Terjalin

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

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan persilangan rata-rata bergerak sederhana dan rata-rata bergerak tertimbang, dikombinasikan dengan stop loss dan take profit untuk mengelola posisi.

Logika Strategi

Logika inti adalah menghitung dua rata-rata bergerak dengan periode yang berbeda, satu adalah rata-rata bergerak sederhana 9 hari dan yang lainnya adalah rata-rata bergerak tertimbang 21 hari. Ketika SMA jangka pendek 9 hari melintasi di atas WMA jangka panjang 21 hari, sinyal beli dihasilkan. Ketika garis jangka pendek melintasi di bawah garis jangka panjang, sinyal jual dihasilkan.

Setelah menerima sinyal, order ditempatkan sesuai dengan rasio stop loss dan take profit yang ditetapkan. Misalnya, jika rasio stop loss ditetapkan pada 5%, maka harga stop loss akan ditetapkan pada 95% dari harga masuk. Jika rasio take profit adalah 5%, maka harga take profit akan ditetapkan pada 105% dari harga masuk. Ini mewujudkan fusi faktor dinamis ( moving average crossover yang menentukan waktu masuk dan keluar) dan faktor statis (fixed stop loss and take profit ratios).

Analisis Keuntungan

Strategi ini menggabungkan indikator teknis dinamis dan parameter strategi statis, yang memiliki keuntungan dari sistem dinamis dan statis. Indikator teknis dapat secara dinamis menangkap karakteristik pasar, yang bermanfaat untuk menangkap tren. Pengaturan parameter memberikan kontrol risiko dan pengembalian yang stabil, yang membantu mengurangi keacakan dalam manajemen posisi.

Dibandingkan dengan sistem dinamis murni, strategi ini lebih kuat dalam manajemen posisi, yang mengurangi dampak keputusan irasional. Dibandingkan dengan sistem statis murni, strategi ini lebih fleksibel dalam pemilihan masuk, yang lebih beradaptasi dengan perubahan pasar. Oleh karena itu, strategi ini memiliki ketahanan dan profitabilitas keseluruhan yang baik.

Analisis Risiko

Risiko dari strategi ini terutama berasal dari dua aspek. Pertama, kemungkinan sinyal yang salah dari rata-rata bergerak. Ketika pasar terikat rentang, rata-rata bergerak dapat memiliki persilangan yang sering, menyebabkan strategi untuk dicetak.

Kedua, risiko bahwa stop loss dan take profit tetap tidak dapat beradaptasi dengan kondisi pasar yang ekstrim.

Langkah-langkah kontra adalah: pertama, hindari titik waktu kunci untuk mengurangi kemungkinan sinyal yang salah; kedua, mengaktifkan algoritma stop loss adaptif sesuai dengan volatilitas pasar dan peristiwa khusus, membuat stop loss dan take profit menyesuaikan dengan pasar.

Arahan Optimasi

Strategi ini dapat dioptimalkan dari aspek berikut:

  1. Uji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal;

  2. Tambahkan kondisi penyaringan untuk menghindari sinyal yang tidak valid;

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

  4. Menggabungkan indikator lain untuk menilai kekuatan tren, menghindari pasar yang terikat rentang;

  5. Menggunakan metode pembelajaran mesin untuk mengoptimalkan parameter secara otomatis.

Melalui pengujian parameter, penambahan filter, peningkatan pemberhentian, menilai tren, dll, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.

Ringkasan

Strategi ini berhasil menggabungkan indikator dinamis dan parameter statis, menyeimbangkan fleksibilitas dan ketahanan. Dibandingkan dengan strategi dinamis dan statis murni, strategi ini berkinerja lebih baik secara keseluruhan. Tentu saja, masih ada ruang untuk pengoptimalan dengan menyesuaikan parameter, menambahkan filter, berhenti adaptif, pembelajaran mesin, dll, untuk membuat strategi lebih efektif.


/*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 banyak