Strategi titik kunci pembalikan pasar


Tanggal Pembuatan: 2023-12-15 10:37:01 Akhirnya memodifikasi: 2023-12-15 10:37:01
menyalin: 0 Jumlah klik: 754
1
fokus pada
1621
Pengikut

Strategi titik kunci pembalikan pasar

Ringkasan

Strategi ini menggunakan prinsip penembusan indikator William, yang digabungkan dengan garis K yang berbentuk khusus, untuk merancang model open dan close yang efisien, sehingga dapat melakukan over-sharing dengan tepat pada titik-titik kunci di mana harga berbalik, menangkap tren garis pendek tengah, dan mendapatkan keuntungan tambahan.

Prinsip Strategi

Strategi ini menggunakan titik-titik pecahan dalam indikator William untuk menilai sinyal pembalikan. Ketika terjadi pemisahan atas atau bawah, sinyal perdagangan dihasilkan jika sesuai dengan arah entitas K-line.

Secara khusus, strategi ini mendefinisikan indikator khusus WMX Williams Fractals. Fungsi faktor digunakan untuk menilai fraktal atas (upFractal) dan fraktal bawah (dnFractal).

Logika penilaian topografi adalah: nilai tertinggi dari garis K saat ini lebih tinggi dari nilai tertinggi dari garis K akar n sebelumnya (n adalah parameter yang dapat disesuaikan), sehingga membentuk topografi yang terobosan.

Logika penentuan klasifikasi bawah adalah: harga minimum garis K saat ini lebih rendah dari harga minimum garis K akar n sebelumnya, sehingga membentuk klasifikasi bawah yang terobosan.

Setelah mendapatkan klasifikasi atas dan bawah, menilai apakah mereka mengalami perubahan, yaitu dari tidak ada atau dari ada ke tidak. Pada saat ini klasifikasi baru saja terbentuk, menunjukkan kemungkinan besar untuk berbalik.

Kemudian digabungkan dengan arah entitas K-line untuk menentukan sinyal perdagangan tertentu. Ketika top-sorting terbentuk, Close lebih tinggi dari Open, lakukan lebih banyak; saat top-sorting terbentuk, Close lebih rendah dari Open, lakukan kosong.

Keunggulan Strategis

  1. Menggunakan William’s metric of segmentation to estimate the reversal time, sebuah metric teknis yang sudah mapan dan dapat diandalkan

  2. Menggabungkan arah entitas garis K untuk mengkonfirmasi sinyal perdagangan, menghindari chops yang berantakan di zona non-trend

  3. Parameter yang lebih sedikit, hanya perlu mengatur siklus n, mudah untuk diuji dan dioptimalkan

  4. Fleksibel mengatur aturan untuk membuka posisi, seperti ukuran posisi, kondisi posisi, dan lain-lain, mudah untuk diterapkan di lapangan

Risiko Strategis

  1. Setelah klasifikasi, mungkin tidak benar-benar terbalik, perlu untuk menilai tren.

  2. Pengaturan posisi stop-loss harus dilakukan dengan hati-hati untuk mencegah gangguan akibat kebisingan yang sangat besar.

  3. Parameter n perlu disesuaikan dengan varietas yang berbeda, jika siklus terlalu besar atau terlalu kecil akan mempengaruhi efek

Solusi:

  1. Indikator seperti moving averages dapat digunakan untuk menilai tren besar dan menghindari posisi berlawanan

  2. Stop loss yang dilacak secara dinamis atau batas stop loss yang ditarik secara wajar

  3. Optimalkan parameter dengan menggunakan metode Walk Forward Analysis untuk menemukan parameter yang optimal

Arah optimasi strategi

  1. Strategi pembalikan berdasarkan klasifikasi mudah terbentuk setelah beberapa kali keuntungan dan kembali membalik menyebabkan kerugian. Anda dapat mempertimbangkan untuk menambahkan filter tren, lebih lanjut membatasi ruang lingkup perdagangan, mengurangi perdagangan pembalikan yang tidak perlu.

  2. Metode penutupan yang ada saat ini relatif sederhana dan tidak dapat melacak pergerakan secara efektif. Anda dapat mencoba menambahkan metode penutupan seperti penutupan bergerak, penutupan waktu, dan penutupan dinamis.

  3. Saat ini hanya menilai arah fisik dari K-line. Jika Anda mempertimbangkan lebih banyak informasi K-line, seperti garis bayangan, posisi penutupan, dan lain-lain, Anda dapat merancang sinyal perdagangan yang lebih akurat.

Meringkaskan

Strategi ini merupakan strategi reversal berdasarkan indikator teknis. Ini menggunakan klasifikasi indikator William untuk menangkap tren perubahan saham dalam indikator pada titik-titik penting, yang dikombinasikan dengan entitas K-line untuk membentuk sinyal perdagangan, dengan tujuan untuk mencapai keuntungan tambahan.

Dibandingkan dengan strategi pembalikan lainnya, strategi ini dapat langsung dimasukkan ke dalam operasi real-time dengan desain parametrisasi, logika yang jelas, mudah dipahami, parameter yang mudah disesuaikan, dan mudah diuji. Langkah selanjutnya adalah mengoptimalkan lebih lanjut dengan cara menilai tren, menghentikan kerugian, dan lain-lain.

Kode Sumber Strategi
/*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 )