Williams % R Strategi Crossover dengan penapis purata bergerak

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

Ringkasan

Strategi ini menggunakan isyarat persilangan Williams % R dan menambah penapis purata bergerak untuk mewujudkan sistem perdagangan jangka pendek yang fleksibel. Ia dapat menangkap situasi overbought dan oversold dengan jelas, sementara penapis MA mengelakkan bunyi pasaran untuk kestabilan yang lebih tinggi.

Logika Strategi

  1. Mengira Williams %R dan purata mudah bergerak (MA) 200 tempoh.

  2. Pergi panjang apabila %R melintasi tahap di atas -50 dengan ambang dan menutup di atas MA.

  3. Pergi pendek apabila %R melintasi tahap di bawah -50 dengan ambang dan menutup di bawah MA.

  4. Jika panjang, tutup kedudukan apabila hampir mencapai mengambil keuntungan (harga kemasukan + mengambil keuntungan pips) atau tahap stop loss (harga kemasukan - stop loss pips).

  5. Jika pendek, tutup kedudukan apabila hampir mencapai mengambil keuntungan (harga kemasukan - mengambil keuntungan pips) atau tahap stop loss (harga kemasukan + stop loss pips).

Strategi ini memanfaatkan sifat overbought/oversold Williams %R, dan menggabungkan penapis trend MA untuk isyarat yang lebih boleh dipercayai. Logik stop loss/take profit adalah mudah dan jelas. Secara keseluruhan ia adalah sistem jangka pendek yang lengkap.

Analisis Kelebihan

  1. Williams %R secara berkesan mengenal pasti tahap overbought / oversold dengan isyarat yang jelas.

  2. Penapis MA menambah bias trend untuk mengelakkan whipsaws.

  3. Parameter yang boleh disesuaikan untuk fleksibiliti.

  4. Mengikuti stop loss mengunci dalam kebanyakan keuntungan.

  5. Logik yang mudah, mudah difahami dan dilaksanakan.

  6. Boleh digunakan untuk pelbagai produk dengan fleksibiliti.

Analisis Risiko

  1. Williams %R mempunyai kesan kelewatan, mungkin terlepas beberapa peluang.

  2. Penapis MA juga mempunyai beberapa lag.

  3. Peraturan overbought/oversold yang ketat mungkin terlepas beberapa trend.

  4. Stop loss terlalu ketat boleh dihentikan oleh whipsaws.

  5. Stop loss yang terlalu luas boleh mengehadkan keuntungan.

  6. Parameter perlu disesuaikan untuk persekitaran pasaran yang berbeza.

Arahan pengoptimuman

  1. Mengoptimumkan parameter untuk kadar kemenangan yang lebih tinggi.

  2. Tambah penapis lain seperti MACD, KDJ dll.

  3. Cuba pelbagai jenis MA seperti MA eksponensial.

  4. Tambah bias trend, hanya berdagang ke arah trend.

  5. Mengoptimumkan strategi stop loss seperti berhenti dinamik, keluar candelier dan sebagainya

  6. Cuba saiz kedudukan seperti pecahan tetap, Martingale dan lain-lain.

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

Kesimpulan

Strategi ini menggabungkan isyarat overbought / oversold Williams % R dengan penapis trend MA ke dalam sistem jangka pendek yang mudah. Ia mempunyai isyarat kemasukan yang jelas dan logik stop loss / take profit. Penambahbaikan lanjut boleh dibuat melalui penyesuaian parameter, pemilihan penunjuk, pengurusan stop loss dan lain-lain untuk lebih mantap. Mudah dilaksanakan dan berkembang, strategi ini sesuai untuk peniaga jangka pendek.


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