Penulis:ChaoZhang, Tarikh: 2024-01-19 15:07:04
Tag:

img

Ringkasan

Ini adalah strategi perdagangan kuantitatif Bitcoin berdasarkan keuntungan mengambil dua, kerugian berhenti dua dan kerugian berhenti berturut-turut. Ia menggunakan silang EMA dan WMA sebagai isyarat kemasukan, mengamalkan keuntungan mengambil dua dan metodologi pengurusan risiko kehilangan berhenti dua, dan menggunakan kerugian berhenti berturut-turut selepas keuntungan pertama dicapai untuk mengunci keuntungan separa sambil mencari keuntungan yang lebih besar.

Logika Strategi

Masuk panjang apabila EMA melintasi WMA dari bawah, dan masuk pendek apabila EMA melintasi di bawah WMA dari atas.

Di sisi keuntungan, terdapat dua sasaran mengambil keuntungan. yang pertama mengambil keuntungan ditetapkan pada 20 pips di atas harga kemasukan, dan kedua mengambil keuntungan ditetapkan pada 40 pips di atas harga kemasukan.

Di sisi stop loss, terdapat juga dua stop loss. Stop loss pertama ditetapkan pada 20 pip di bawah harga kemasukan, dan stop loss kedua ditetapkan pada harga kemasukan itu sendiri.

Apabila keuntungan pertama dicetuskan, 50% kedudukan akan ditutup, dan stop loss akan ditarik ke harga kemasukan untuk mengunci keuntungan, sambil mencari keuntungan yang lebih besar dari sasaran keuntungan kedua.

Oleh itu, terdapat tiga kemungkinan hasil untuk setiap perdagangan:

  1. Harga mencapai stop loss pertama, kehilangan 2% modal.
  2. Harga memukul pertama mengambil keuntungan pertama untuk keuntungan 1%, kemudian memukul kedua stop loss, berakhir dengan keuntungan 1%.
  3. Harga memukul pertama mengambil keuntungan pertama untuk keuntungan 1%, terus berjalan dan memukul kedua mengambil keuntungan, berakhir dengan keuntungan 3%.

Analisis Kelebihan

Kelebihan terbesar strategi ini terletak pada metodologi pengurusan risikonya. Dengan menetapkan keuntungan mengambil berganda dan kerugian berhenti berganda, ia dapat mengunci keuntungan separa selepas keuntungan mengambil pertama dicapai, sambil terus mencari keuntungan yang lebih besar. Ini dapat meningkatkan keuntungan dengan ketara.

Satu lagi kelebihan adalah bahawa dengan membahagikan perdagangan tunggal kepada tiga hasil yang mungkin, ia mengurangkan kebarangkalian kerugian maksimum, menjadikan pulangan keseluruhan lebih konsisten. Strategi biasa hanya mempunyai dua hasil - sama ada memukul 2% stop loss atau menang lebih daripada 2%. Strategi ini mempunyai tiga hasil - kehilangan 2%, menang 1%, dan menang 3%, yang juga lebih baik mengawal risiko ekor.

Analisis Risiko

Risiko utama strategi ini berasal dari tetapan stop loss. Jika jarak stop loss terlalu luas, ia boleh mengakibatkan kerugian perdagangan tunggal yang terlalu besar. Jika jarak stop loss terlalu ketat, ia boleh dihentikan sebelum waktunya oleh bunyi pasaran. Jarak stop loss yang betul perlu ditetapkan berdasarkan ciri dan turun naik instrumen perdagangan yang berbeza.

Risiko lain adalah kedudukan yang tersisa selepas mengambil keuntungan pertama masih membawa risiko kerugian. Jika kerugian berikutnya melebihi keuntungan pertama, ia akan mengimbangi sebahagian atau semua keuntungan yang dicapai. Ini perlu ditangani dengan mengikuti stop loss untuk melindungi keuntungan terkunci.

Arahan pengoptimuman

Bidang berikut boleh dioptimumkan untuk strategi:

  1. Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum, seperti menguji 15 pip, 25 pip mengambil jarak keuntungan / hentian kerugian.

  2. Cuba kombinasi penunjuk teknikal lain untuk isyarat kemasukan, seperti KDJ, persilangan MACD.

  3. Mengoptimumkan peratusan kedudukan yang ditutup pada awal mengambil keuntungan, seperti 50% mungkin tidak optimum, 30% atau 70% boleh melakukan lebih baik berpotensi.

  4. Uji tetapan yang berbeza untuk kelajuan stop loss untuk mengimbangi kunci keuntungan dan memberikan harga ruang yang cukup untuk turun naik.

Kesimpulan

Kesimpulannya, ini adalah strategi yang kuat secara keseluruhan, yang dapat meningkatkan keuntungan dan mengurangkan risiko ekor dengan ketara melalui mekanisme mengambil keuntungan berganda, kehilangan berhenti berganda dan kehilangan berhenti. Terdapat juga ruang yang cukup untuk pengoptimuman melalui penyesuaian parameter dan kejuruteraan penunjuk teknikal untuk mencapai prestasi yang lebih baik. Ia sesuai untuk pelabur yang mengejar keuntungan pelaburan yang tinggi dan stabil.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-18 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true)

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

// Date Range
start_year    = input(title='Start year'   ,defval=2020)
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
buy =
 crossover(ema,wma) and
 nz(strategy.position_size) == 0 and Buy
 
sell =
 crossunder(ema,wma) and
 nz(strategy.position_size) == 0 and Sell

// Pips
pip = input(20)*10*syminfo.mintick

// Trading parameters //
var bool  LS  = na
var bool  SS  = na
var float EP  = na
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na
var float TP1 = na
var float TP2 = na
var float SL1 = na
var float SL2 = na

if buy or sell and strategy.position_size == 0
    EP  := close
    SL1 := EP - pip     * (sell?-1:1)
    SL2 := EP - pip     * (sell?-1:1)
    TP1 := EP + pip     * (sell?-1:1)
    TP2 := EP + pip * 2 * (sell?-1:1) 
   
// current trade direction    
LS := buy  or strategy.position_size > 0
SS := sell or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := max(TP1,open) - pip[1]
TVS := min(TP1,open) + pip[1]
TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL 
TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS

if LS and high > TP1
    if open <= TP1
        SL2:=min(EP,TSL)
    
if SS and low < TP1
    if open >= TP1
        SL2:=max(EP,TSS)

// Closing conditions
close_long  = LS and open < SL2
close_short = SS and open > SL2

// Buy
strategy.entry("buy"  , strategy.long, when=buy and not SS)
strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2)

// Sell
strategy.entry("sell" , strategy.short, when=sell and not LS)
strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2)

// Plots
a=plot(strategy.position_size >  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
b=plot(strategy.position_size <  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) 
c=plot(strategy.position_size >  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
d=plot(strategy.position_size <  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
e=plot(strategy.position_size >  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
f=plot(strategy.position_size <  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
g=plot(strategy.position_size >= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 
h=plot(strategy.position_size <= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 

plot(ema,title="ema",color=#fff176)
plot(wma,title="wma",color=#00ced1)


Lebih lanjut