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.
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.
Gunakan titik fraktal indikator Williams untuk menentukan waktu pembalikan.
Menggabungkan arah entitas K-line untuk mengkonfirmasi sinyal perdagangan dan menghindari wilayah non-trend yang bergolak.
Beberapa parameter yang hanya perlu menyesuaikan periode fraktal n, mudah untuk menguji dan mengoptimalkan.
Fleksibel pengaturan untuk membuka posisi aturan seperti ukuran posisi, kondisi penutupan, dll, mudah diterapkan dalam perdagangan langsung.
Setelah bentuk fraktal, pasar mungkin tidak sepenuhnya terbalik, perlu dikombinasikan dengan penilaian tren.
Pengaturan posisi stop loss perlu hati-hati untuk menghindari tersingkir oleh pergerakan volatilitas besar yang bising.
Parameter n perlu disesuaikan untuk produk yang berbeda. Jika periode terlalu besar atau terlalu kecil akan mempengaruhi hasil.
Solusi:
Dapat menambahkan indikator seperti moving average untuk menilai tren utama, menghindari perdagangan melawan tren.
Gunakan stop loss trailing dinamis atau atur stop loss berdasarkan drawdown yang wajar.
Gunakan Walk Forward Analysis untuk mengoptimalkan parameter dan menemukan nilai optimal.
Strategi pembalikan fraktal cenderung membentuk beberapa keuntungan kemudian membalik kembali untuk membentuk kerugian.
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.
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.
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 )