Williams %R Strategi Crossover dengan Filter Rata-rata Bergerak

Penulis:ChaoZhang, Tanggal: 2023-09-19 21:57:46
Tag:

Gambaran umum

Strategi ini memanfaatkan sinyal crossover Williams %R dan menambahkan filter rata-rata bergerak untuk menciptakan sistem perdagangan jangka pendek yang fleksibel.

Logika Strategi

  1. Menghitung Williams %R dan 200 periode sederhana rata-rata bergerak (MA).

  2. Pergi panjang ketika %R melintasi tingkat di atas -50 dengan ambang batas dan menutup di atas MA.

  3. Berjalan pendek ketika %R melintasi di bawah level -50 dengan ambang batas dan menutup di bawah MA.

  4. Jika long, posisi close ketika close reaches take profit (harga masuk + take profit pips) atau level stop loss (harga masuk - stop loss pips).

  5. Jika short, posisi close ketika close reaches take profit (harga masuk - take profit pips) atau level stop loss (harga masuk + stop loss pips).

Strategi ini memanfaatkan sifat overbought/oversold Williams %R, dan menggabungkan filter tren MA untuk sinyal yang lebih dapat diandalkan.

Analisis Keuntungan

  1. Williams %R secara efektif mengidentifikasi tingkat overbought/oversold dengan sinyal yang jelas.

  2. MA filter menambahkan bias tren untuk menghindari whipsaws.

  3. Parameter yang dapat disesuaikan untuk fleksibilitas.

  4. Mengikuti stop loss mengunci sebagian besar keuntungan.

  5. Logika yang sederhana, mudah dimengerti dan diterapkan.

  6. Terapkan pada beberapa produk dengan fleksibilitas.

Analisis Risiko

  1. Williams %R memiliki efek keterlambatan, mungkin kehilangan beberapa kesempatan.

  2. Filter MA juga memiliki beberapa lag.

  3. Aturan overbought/oversold yang ketat mungkin tidak memperhatikan beberapa tren.

  4. Stop loss yang terlalu ketat bisa dihentikan oleh whipsaws.

  5. Stop loss yang terlalu luas dapat membatasi keuntungan.

  6. Parameter perlu disesuaikan untuk lingkungan pasar yang berbeda.

Arahan Optimasi

  1. Mengoptimalkan parameter untuk tingkat kemenangan yang lebih tinggi.

  2. Tambahkan filter lain seperti MACD, KDJ dll.

  3. Cobalah jenis MA yang berbeda seperti MA eksponensial.

  4. Tambahkan bias tren, hanya perdagangan ke arah tren.

  5. Mengoptimalkan strategi stop loss seperti dynamic stop, candlestick exit dll.

  6. Coba ukuran posisi seperti pecahan tetap, Martingale dll

  7. Menggunakan pembelajaran mesin untuk optimasi parameter yang lebih baik.

Kesimpulan

Strategi ini menggabungkan sinyal overbought / oversold Williams % R dengan filter tren MA menjadi sistem jangka pendek yang sederhana. Ini memiliki sinyal masuk yang jelas dan logika stop loss / take profit. Perbaikan lebih lanjut dapat dilakukan melalui penyesuaian parameter, pemilihan indikator, manajemen stop loss, dll.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Williams %R Cross Strategy with MA Filter", overlay=true)

// User Inputs
wrLength = input(14, title="Williams %R Length")
crossPips = input(10, title="Cross Threshold (Pips)")
takeProfitPips = input(30, title="Take Profit (Pips)")
stopLossPips = input(20, title="Stop Loss (Pips)")

// Calculate Williams %R
wrHigh = ta.highest(high, wrLength)
wrLow = ta.lowest(low, wrLength)
wr = (wrHigh - close) / (wrHigh - wrLow) * -100

// Calculate 200-period Simple Moving Average
ma200 = ta.sma(close, 200)

// Entry Conditions
enterLong = ta.crossover(wr, -50 - crossPips) and close > ma200
enterShort = ta.crossunder(wr, -50 + crossPips) and close < ma200

// Exit Conditions
exitLong = close >= (strategy.position_avg_price + (takeProfitPips / syminfo.mintick)) or close <= (strategy.position_avg_price - (stopLossPips / syminfo.mintick))
exitShort = close <= (strategy.position_avg_price - (takeProfitPips / syminfo.mintick)) or close >= (strategy.position_avg_price + (stopLossPips / syminfo.mintick))

// Order Management
if enterLong
    strategy.entry("Long", strategy.long)
    
if enterShort
    strategy.entry("Short", strategy.short)

if exitLong
    strategy.close("Long")

if exitShort
    strategy.close("Short")


Lebih banyak