Strategi kuantitatif persilangan purata pindah untung berganda


Tarikh penciptaan: 2023-11-14 16:04:33 Akhirnya diubah suai: 2023-11-14 16:04:33
Salin: 0 Bilangan klik: 383
1
fokus pada
1166
Pengikut

Strategi kuantitatif persilangan purata pindah untung berganda

Gambaran keseluruhan

Strategi ini menggunakan teknik simpulan moving average crossover dan double stop untuk mengawal risiko dan meningkatkan peluang keuntungan. Strategi ini sesuai untuk perdagangan jangka pendek dan menengah, dan dapat menangkap peluang apabila trend berubah.

Prinsip Strategi

Strategi ini berdasarkan pada persilangan EMA dan WMA untuk menilai pergerakan pasaran. Apabila EMA di atas melalui WMA, lakukan lebih banyak; apabila EMA di bawah melalui WMA, lakukan kosong.

Setiap kali membuka kedudukan, strategi akan menetapkan dua tahap berhenti. Tahap berhenti pertama ditetapkan sebagai harga pembukaan + 20 mata, tahap berhenti kedua ditetapkan sebagai harga pembukaan + 40 mata.

Apabila harga menyentuh tahap penutupan pertama, separuh kedudukan dipadamkan. Kedudukan yang tersisa terus dipegang, mengejar tahap penutupan kedua atau dihentikan.

Dengan cara ini, setiap transaksi mempunyai tiga hasil:

  1. Harga mencetuskan Hentikan Kerugian, Kerugian Langsung 2%.

  2. Harga akan mencetuskan hentian pertama, menebus separuh kedudukan, mengunci keuntungan 1%, dan kemudian terus berjalan sehingga terhenti, akhirnya terikat, dan keuntungan sifar.

  3. Harga berlanjutan selepas penutupan pertama, kemudian penutupan kedua, dan akhirnya keuntungan 1% + 2% = 3%.

Analisis kelebihan

Kelebihan utama strategi berhenti dua titik ini adalah bahawa ia dapat mengawal risiko dan mengelakkan kerugian besar dalam satu masa. Apabila pasaran tidak baik, berhenti boleh mengawal kerugian dalam 2% . Apabila pasaran cerah, dua tahap berhenti dapat memperoleh keuntungan yang lebih besar.

Berbanding dengan single stop loss, strategi ini mempunyai tiga hasil: kerugian, keuntungan dan tidak rugi, mengurangkan kebarangkalian berhenti. Walaupun berhenti, kerugian maksimum dikawal pada 2%. Berbanding dengan strategi stop loss tradisional, strategi stop loss ganda ini dapat mengurangkan DD dan meningkatkan peluang kemenangan.

Kelebihan lain adalah kemudahan operasi. EMA dan WMA adalah penunjuk yang terkenal dan mudah difahami. Logik stop loss sangat jelas dan mudah dipantau. Ini menjadikan strategi mudah diterima dan dilaksanakan oleh pemula perdagangan kuantitatif.

Analisis risiko

Walaupun ada kelebihan, strategi ini mempunyai risiko yang perlu diperhatikan.

Pertama, EMA dan WMA sebagai penunjuk rata-rata, mempunyai keupayaan yang lemah untuk mengenal pasti keadaan yang bergolak. Apabila trend tidak jelas, ia mungkin menghasilkan lebih banyak isyarat yang salah, yang menyebabkan perdagangan yang terlalu kerap.

Kedua, titik berhenti yang ditetapkan mungkin tidak sepadan dengan turun naik pasaran. Apabila turun naiknya lebih besar, berhenti mungkin akan ditembusi dan tidak dapat melindungi.

Akhirnya, strategi ini tidak dapat bertindak balas terhadap kejadian yang tidak dijangka, dan terdapat risiko untuk dibocorkan. Apabila berlaku peristiwa berita utama, harga mungkin melonjak tinggi dan langsung menembusi garisan stop loss, menyebabkan kerugian yang lebih besar.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Meningkatkan isyarat masuk. Anda boleh mencuba rata-rata atau trend yang lebih baik daripada EMA dan WMA untuk meningkatkan kualiti isyarat.

  2. Dinamika penyesuaian stop loss. Ia boleh menyesuaikan stop loss dalam masa nyata berdasarkan ATR, stop loss bergerak dan sebagainya, supaya ia dapat mengikuti pasaran secara dinamik.

  3. Tambah syarat penapisan. Anda boleh menambah jumlah dagangan atau pengesahan sub-indikator sebelum garpu emas, untuk mengelakkan terikat. Anda juga boleh memilih sama ada untuk berdagang atau tidak berdasarkan kalendar peristiwa utama.

  4. Pengurusan kedudukan yang dioptimumkan. Anda boleh mengoptimumkan saiz kedudukan tertentu untuk setiap urus niaga mengikut prinsip pengurusan wang.

ringkaskan

Strategi ini secara keseluruhan adalah strategi trend-following yang mudah dan praktikal. Ia menggunakan EMA dan WMA untuk membentuk isyarat perdagangan, dan menggunakan teknik kawalan risiko dua-stop. Berbanding dengan strategi tradisional, ia mempunyai peluang keuntungan yang lebih tinggi, risiko yang lebih rendah.

Kod sumber strategi
/*backtest
start: 2023-11-06 00:00:00
end: 2023-11-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("FS ATR & PS (MA)", overlay=true)

// Strategy
Buy  = input(true)
Sell = input(true)

// Time Period
start_year   = input(title='Start year'   ,defval=2019)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_hour   = input(title='Start hour '  ,defval=0)
start_minute = input(title='Start minute' ,defval=0)
end_time     = input(title='set end time?',defval=false)
end_year     = input(title='end year'     ,defval=2019)
end_month    = input(title='end month'    ,defval=12)
end_day      = input(title='end day'      ,defval=31)
end_hour     = input(title='end hour'     ,defval=23)
end_minute   = input(title='end minute'   ,defval=59)

// MA
ema_period   = input(title='EMA period',defval=10)
wma_period   = input(title='WMA period',defval=20)
ema = ema(close,ema_period)
wma = wma(close,wma_period)

// Entry Condition
longCondition  = 
 crossover(ema,wma) and Buy and
 nz(strategy.position_size) == 0 and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)
 
shortCondition = 
 crossunder(ema,wma) and Sell and
 nz(strategy.position_size) == 0 and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)

// Exit Condition
a = input(20)*10
b = input(40)*10
c = a*syminfo.mintick
d = b*syminfo.mintick

long_stop_level     = float(na)
long_profit_level1  = float(na)
long_profit_level2  = float(na)
long_even_level     = float(na)

short_stop_level    = float(na)
short_profit_level1 = float(na)
short_profit_level2 = float(na)
short_even_level    = float(na)

long_stop_level     := longCondition  ? close - c : long_stop_level     [1]
long_profit_level1  := longCondition  ? close + c : long_profit_level1  [1]
long_profit_level2  := longCondition  ? close + d : long_profit_level2  [1]
long_even_level     := longCondition  ? close + 0 : long_even_level     [1]

short_stop_level    := shortCondition ? close + c : short_stop_level    [1]
short_profit_level1 := shortCondition ? close - c : short_profit_level1 [1]
short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1]
short_even_level    := shortCondition ? close + 0 : short_even_level    [1] 

// Position Sizing
Risk = input(defval=10, title="Risk per trade%", step=1, minval=0, maxval=100)/100
size  = 1

// Strategy
if longCondition
    strategy.entry("Buy"  , strategy.long, qty=size)
    strategy.exit ("Exit1", stop=long_stop_level, limit=long_profit_level1, qty=size/2)
    strategy.exit ("Exit2", stop=long_stop_level, limit=long_profit_level2)
    
if shortCondition
    strategy.entry("Sell" , strategy.short, qty=size)
    strategy.exit ("Exit3", stop=short_stop_level, limit=short_profit_level1, qty=size/2)
    strategy.exit ("Exit4", stop=short_stop_level, limit=short_profit_level2)
    
// Plot
plot(strategy.position_size <= 0 ? na : long_stop_level    , color=#dc143c, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size <= 0 ? na : long_profit_level1 , color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size <= 0 ? na : long_profit_level2 , color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size <= 0 ? na : long_even_level    , color=#ffffff, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_stop_level   , color=#dc143c, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_profit_level1, color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_profit_level2, color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_even_level   , color=#ffffff, style=plot.style_linebr, linewidth=1)
plot(ema,color=#00ced1)
plot(wma,color=#dc143c)