WMX Williams Fraktal Reversal Pivot Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-15 10:37:01
Tag:

img

Gambaran umum

Strategi ini mengadopsi prinsip break-out fraktal indikator Williams dan menggabungkan pola garis K tertentu untuk merancang model pembukaan dan penutupan panjang dan pendek yang efisien.

Prinsip Strategi

Strategi ini menggunakan titik fraktal dalam indikator Williams untuk menentukan sinyal pembalikan. Ketika fraktal atas atau bawah muncul dan konsisten dengan arah entitas garis K, sinyal perdagangan dihasilkan.

Secara khusus, indikator khusus yang disebut WMX Williams Fractals didefinisikan dalam strategi.

Logika fraktal atas adalah: harga tertinggi dari garis K saat ini lebih tinggi dari harga tertinggi dari n garis K sebelumnya (n adalah parameter yang dapat disesuaikan), sehingga membentuk fraktal pecah sisi atas.

Logika fraktal bawah adalah: harga terendah dari garis K saat ini lebih rendah dari harga terendah dari n garis K sebelumnya, sehingga membentuk fraktal pecah sisi bawah.

Setelah mendapatkan fraktal atas dan bawah, tentukan apakah mereka berubah, yaitu dari tidak ada menjadi ada atau sebaliknya.

Kemudian, dikombinasikan dengan arah entitas K-line untuk menentukan sinyal perdagangan tertentu. Ketika fraktal atas terbentuk dan Close lebih tinggi dari Open, pergi panjang. Ketika fraktal bawah terbentuk dan Close lebih rendah dari Open, pergi pendek.

Keuntungan Strategi

  1. Gunakan titik fraktal indikator Williams untuk menentukan waktu pembalikan.

  2. Menggabungkan arah entitas K-line untuk mengkonfirmasi sinyal perdagangan dan menghindari wilayah non-trend yang bergolak.

  3. Beberapa parameter yang hanya perlu menyesuaikan periode fraktal n, mudah untuk menguji dan mengoptimalkan.

  4. Fleksibel pengaturan untuk membuka posisi aturan seperti ukuran posisi, kondisi penutupan, dll, mudah diterapkan dalam perdagangan langsung.

Risiko Strategi

  1. Setelah bentuk fraktal, pasar mungkin tidak sepenuhnya terbalik, perlu dikombinasikan dengan penilaian tren.

  2. Pengaturan posisi stop loss perlu hati-hati untuk menghindari tersingkir oleh pergerakan volatilitas besar yang bising.

  3. Parameter n perlu disesuaikan untuk produk yang berbeda. Jika periode terlalu besar atau terlalu kecil akan mempengaruhi hasil.

Solusi:

  1. Dapat menambahkan indikator seperti moving average untuk menilai tren utama, menghindari perdagangan melawan tren.

  2. Gunakan stop loss trailing dinamis atau atur stop loss berdasarkan drawdown yang wajar.

  3. Gunakan Walk Forward Analysis untuk mengoptimalkan parameter dan menemukan nilai optimal.

Arah Optimasi Strategi

  1. Strategi pembalikan fraktal cenderung membentuk beberapa keuntungan kemudian membalik kembali untuk membentuk kerugian.

  2. Metode stop loss sederhana saat ini tidak dapat secara efektif melacak pergerakan pasar. Dapat mencoba teknik stop loss yang lebih canggih seperti stop loss bergerak, stop loss berbasis waktu, stop loss dinamis dll.

  3. Saat ini hanya menggunakan arah entitas K-line. Jika mempertimbangkan lebih banyak informasi K-line seperti wicks dan lokasi dekat, dapat merancang sinyal perdagangan yang lebih tepat.

Kesimpulan

Ini adalah strategi pembalikan yang didasarkan pada indikator teknis. Ini memanfaatkan fraktal indikator Williams untuk menangkap perubahan tren dasar pada titik pivot utama, dikombinasikan dengan arah entitas K-line untuk membentuk sinyal perdagangan, yang bertujuan untuk mencapai hasil yang berlebihan.

Jika dibandingkan dengan strategi reversal lainnya, strategi ini memiliki desain parametrisasi untuk logika yang jelas dan mudah dipahami. Strategi ini memiliki penyesuaian parameter yang fleksibel untuk pengujian yang nyaman, dan dapat langsung diterapkan dalam perdagangan langsung.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WMX_Q_System_Trading

//@version=4
SystemName="WMX Williams Fractals strategy V4"
InitCapital = 1000000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 10
strategy(title=SystemName, shorttitle=SystemName, overlay=true, initial_capital=InitCapital, default_qty_type=strategy.percent_of_equity, default_qty_value=InitPosition, commission_type=strategy.commission.percent, commission_value=InitCommission)


//study("WMX Williams Fractals", shorttitle="WMX Fractals", format=format.price, precision=0, overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input(title="Periods", defval=2, minval=2, type=input.integer)
h=close
l=close

factorh(High)=>
    upFractal = (                                                                                                          (High[n+2]  < High[n]) and (High[n+1]  < High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                                               (High[n+3]  < High[n]) and (High[n+2]  < High[n]) and (High[n+1] == High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                    (High[n+4]  < High[n]) and (High[n+3]  < High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                          (High[n+5] < High[n]) and (High[n+4]  < High[n]) and (High[n+3] == High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or ((High[n+6] < High[n]) and (High[n+5] < High[n]) and (High[n+4] == High[n]) and (High[n+3] <= High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
    upFractal
upFractal=factorh(h)
factorl(Low)=>
    dnFractal = (                                                                                                  (Low[n+2]  > Low[n]) and (Low[n+1]  > Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                                         (Low[n+3]  > Low[n]) and (Low[n+2]  > Low[n]) and (Low[n+1] == Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                (Low[n+4]  > Low[n]) and (Low[n+3]  > Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                        (Low[n+5] > Low[n]) and (Low[n+4]  > Low[n]) and (Low[n+3] == Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or ((Low[n+6] > Low[n]) and (Low[n+5] > Low[n]) and (Low[n+4] == Low[n]) and (Low[n+3] >= Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
    
dnFractal=factorl(l)

U=valuewhen(upFractal[0]!= upFractal[1],l[0],3)
L=valuewhen(dnFractal[0]!=dnFractal[1],h[0],3)

longcon=crossover(close ,L) and close>open
shortcon=crossunder(close ,U) and close<open

if longcon
    
    strategy.entry("Long", strategy.long,   when = strategy.position_size <= 0 )
    
if  shortcon
    strategy.entry("Short", strategy.short,  when = strategy.position_size >= 0 )
        






Lebih banyak