Strategi titik utama pembalikan pasaran


Tarikh penciptaan: 2023-12-15 10:37:01 Akhirnya diubah suai: 2023-12-15 10:37:01
Salin: 0 Bilangan klik: 754
1
fokus pada
1621
Pengikut

Strategi titik utama pembalikan pasaran

Gambaran keseluruhan

Strategi ini menggunakan prinsip penembusan indikator William, digabungkan dengan garis K bentuk tertentu, untuk merancang sebuah model yang cekap untuk membuka dan menutup kedudukan kosong, sehingga dapat melakukan lebih banyak posisi kosong dengan tepat pada titik-titik penting di mana keadaan berubah, menangkap trend garis pendek tengah, dan memperoleh keuntungan tambahan.

Prinsip Strategi

Strategi ini menggunakan titik pecahan dalam penunjuk William untuk menilai isyarat pembalikan. Isyarat perdagangan dihasilkan apabila terdapat pecahan ke atas atau ke bawah, jika sesuai dengan arah entiti K-baris.

Khususnya, strategi ini mentakrifkan WMX Williams Fractals sebagai penunjuk tersuai. Penunjuk ini menggunakan fungsi faktor untuk menilai fraktal atas (upFractal) dan fraktal bawah (dnFractal).

Logik penilaian ke atas adalah: nilai tertinggi pada garis K semasa adalah lebih tinggi daripada nilai tertinggi pada garis K akar n sebelumnya (n adalah parameter yang boleh disesuaikan), dengan itu membentuk penembusan ke atas.

Logik penghakiman ke bawah adalah: harga terendah pada garis K semasa adalah lebih rendah daripada harga terendah pada garis K akar n sebelumnya, sehingga membentuk penembusan ke bawah ke bawah.

Setelah mendapat klasifikasi atas dan bawah, menilai sama ada mereka berubah, iaitu dari tidak ada atau dari ada ke tidak ada. Pada masa ini klasifikasi baru terbentuk, yang menunjukkan kemungkinan besar untuk berbalik.

Kemudian digabungkan dengan arah entiti K untuk menentukan isyarat dagangan tertentu. Apabila pembahagian atas terbentuk, tutup lebih tinggi daripada terbuka, lakukan lebih banyak; apabila pembahagian bawah terbentuk, tutup lebih rendah daripada terbuka, kosong.

Kelebihan Strategik

  1. Menggunakan titik pembahagian William untuk menentukan masa pembalikan, yang merupakan petunjuk teknikal yang boleh dipercayai

  2. Menggabungkan arah entiti K untuk mengesahkan isyarat dagangan dan mengelakkan kerosakan chops di kawasan bukan trend

  3. Parameter yang lebih sedikit, hanya perlu menyesuaikan kitaran n, mudah untuk diuji dan dioptimumkan

  4. Kaedah pembukaan kedudukan yang fleksibel, seperti saiz kedudukan, keadaan kedudukan, dan lain-lain, mudah digunakan di tempat kerja

Risiko Strategik

  1. Selepas pengelompokan, keadaan mungkin tidak berbalik sepenuhnya, dan penilaian trend perlu dilakukan.

  2. Tetapan kedudukan henti perlu berhati-hati untuk mengelakkan gangguan bunyi yang besar

  3. Parameter n perlu diselaraskan mengikut varieti yang berbeza, jika kitaran terlalu besar atau terlalu kecil akan mempengaruhi kesannya

Penyelesaian:

  1. Indeks seperti purata bergerak boleh digunakan untuk menilai trend besar dan mengelakkan kedudukan berlawanan.

  2. Hentikan Tracking Loss secara Dinamis atau Tetapkan Hentikan Loss dengan Had Pengunduran yang Bermakna

  3. Optimumkan parameter menggunakan kaedah Analisis Walk Forward untuk mencari parameter terbaik

Arah pengoptimuman strategi

  1. Strategi pembalikan berasaskan klasifikasi mudah terbentuk selepas beberapa kali keuntungan dan sekali lagi pembalikan menyebabkan kerugian. Anda boleh mempertimbangkan untuk memasukkan penapis trend, mengehadkan lagi ruang perdagangan, mengurangkan perdagangan pembalikan yang tidak perlu.

  2. Kaedah-kaedah penangguhan yang ada pada masa ini agak mudah dan tidak dapat mengesan dengan berkesan. Anda boleh cuba menambah kaedah penangguhan seperti penangguhan bergerak, penangguhan masa, dan penangguhan dinamik.

  3. Pada masa ini hanya menilai arah entiti K. Jika anda mengambil kira lebih banyak maklumat K, seperti garis bayangan, kedudukan penutupan, dan lain-lain, anda boleh merancang isyarat perdagangan yang lebih tepat.

ringkaskan

Strategi ini adalah strategi pembalikan berdasarkan petunjuk teknikal. Ia menggunakan pembahagian indeks William untuk menangkap trend perubahan saham indeks pada titik-titik penting, yang digabungkan dengan entiti K-line untuk membentuk isyarat perdagangan, dengan tujuan untuk mencapai keuntungan tambahan.

Berbanding dengan strategi pembalikan yang lain, strategi ini boleh digunakan secara langsung dengan reka bentuk parameter, logik yang jelas, mudah difahami, parameter yang mudah disesuaikan, mudah diuji. Langkah seterusnya melalui penilaian trend, cara menghentikan kerugian, dan lain-lain, diharapkan dapat mencapai kesan strategi yang lebih baik.

Kod 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 )