WMX Williams Fractals Reversal Pivot Strategi

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

img

Ringkasan

Strategi ini mengamalkan prinsip pecah fraktal penunjuk Williams dan menggabungkan corak K-line tertentu untuk merancang model pembukaan dan penutupan panjang dan pendek yang cekap. Ia boleh dengan tepat pergi panjang dan pendek pada titik pembalikan utama pergerakan pasaran untuk menangkap trend jangka sederhana dan pendek dan mendapatkan pulangan yang berlebihan.

Prinsip Strategi

Strategi ini menggunakan titik fraktal dalam penunjuk Williams untuk menentukan isyarat pembalikan. Apabila fraktal atas atau bawah muncul dan ia konsisten dengan arah entiti garis K, isyarat perdagangan dihasilkan.

Secara khusus, penunjuk tersuai yang dipanggil WMX Williams Fractals ditakrifkan dalam strategi. Ia menggunakan fungsi faktor untuk menentukan fraktal atas (upFractal) dan fraktal bawah (dnFractal).

Logik fraktal atas adalah: harga tertinggi garis K semasa lebih tinggi daripada harga tertinggi n garis K sebelumnya (n adalah parameter yang boleh diselaraskan), sehingga membentuk fraktal pecah sisi atas.

Logik fraktal bawah adalah: harga terendah garis K semasa adalah lebih rendah daripada harga terendah n garis K sebelumnya, sehingga membentuk fraktal pecah sisi bawah.

Setelah mendapatkan fraktal atas dan bawah, tentukan sama ada mereka berubah, iaitu dari tidak menjadi wujud atau sebaliknya.

Kemudian, digabungkan dengan arah entiti K-line untuk menentukan isyarat perdagangan tertentu. Apabila fraktal atas terbentuk dan Close lebih tinggi daripada Open, pergi panjang. Apabila fraktal bawah terbentuk dan Close lebih rendah daripada Open, pergi pendek.

Kelebihan Strategi

  1. Gunakan titik fraktal penunjuk Williams untuk menentukan masa pembalikan.

  2. Gabungkan arah entiti K-line untuk mengesahkan isyarat perdagangan dan mengelakkan kawasan bukan trend yang bergolak.

  3. Beberapa parameter yang hanya perlu menyesuaikan tempoh fraktal n, mudah untuk menguji dan mengoptimumkan.

  4. Tetapan fleksibel untuk membuka peraturan kedudukan seperti saiz kedudukan, syarat penutupan, dan lain-lain, mudah digunakan dalam perdagangan langsung.

Risiko Strategi

  1. Selepas bentuk fraktal, pasaran mungkin tidak sepenuhnya terbalik, perlu digabungkan dengan pertimbangan trend.

  2. Penetapan kedudukan stop loss perlu berhati-hati untuk mengelakkan ketegangan pergerakan turun naik yang besar.

  3. Parameter n perlu disesuaikan untuk produk yang berbeza.

Penyelesaian:

  1. Boleh menambah penunjuk seperti purata bergerak untuk menilai trend utama, mengelakkan perdagangan terhadap trend.

  2. Menggunakan stop loss yang dinamik atau menetapkan stop loss berdasarkan drawdown yang munasabah.

  3. Menggunakan Walk Forward Analysis untuk mengoptimumkan parameter dan mencari nilai optimum.

Arahan Pengoptimuman Strategi

  1. Strategi pembalikan fraktal cenderung untuk membentuk banyak keuntungan kemudian membalikkan semula untuk membentuk kerugian.

  2. Kaedah stop loss sederhana semasa tidak dapat mengesan pergerakan pasaran dengan berkesan. Boleh mencuba teknik stop loss yang lebih maju seperti stop loss bergerak, stop loss berdasarkan masa, stop loss dinamik dll.

  3. Pada masa ini hanya menggunakan arah entiti K-line. Jika mempertimbangkan lebih banyak maklumat K-line seperti wicks dan lokasi dekat, boleh merancang isyarat perdagangan yang lebih tepat.

Kesimpulan

Ini adalah strategi pembalikan berdasarkan penunjuk teknikal. Ia menggunakan fraktal penunjuk Williams untuk menangkap perubahan dalam trend yang mendasari pada titik pusingan utama, digabungkan dengan arah entiti K-line untuk membentuk isyarat perdagangan, yang bertujuan untuk mencapai pulangan yang berlebihan.

Berbanding dengan strategi pembalikan lain, strategi ini mempunyai reka bentuk parameter untuk logik yang jelas dan mudah difahami. Ia mempunyai penyesuaian parameter yang fleksibel untuk ujian yang mudah, dan boleh digunakan secara langsung 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 lanjut