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

img

Gambaran umum

Ini adalah strategi perdagangan kuantitatif Bitcoin berdasarkan dual take profit, dual stop loss dan trailing stop loss. Ini menggunakan EMA dan WMA crossover sebagai sinyal masuk, mengadopsi dual take profit dan dual stop loss metodologi manajemen risiko, dan menerapkan trailing stop loss setelah profit pertama dicapai untuk mengunci keuntungan parsial sambil mencari keuntungan yang lebih besar.

Logika Strategi

Entri panjang ketika EMA melintasi WMA dari bawah, dan entri pendek ketika EMA melintasi di bawah WMA dari atas.

Di sisi keuntungan, ada dua target mengambil keuntungan. yang pertama mengambil keuntungan ditetapkan pada 20 pips di atas harga masuk, dan kedua mengambil keuntungan ditetapkan pada 40 pips di atas harga masuk.

Di sisi stop loss, ada juga dua stop loss. Stop loss pertama ditetapkan pada 20 pips di bawah harga masuk, dan stop loss kedua ditetapkan pada harga masuk itu sendiri.

Ketika take profit pertama dipicu, 50% dari posisi akan ditutup, dan stop loss akan ditarik ke harga masuk untuk mengunci keuntungan, sementara mencari keuntungan yang lebih besar dari target take profit kedua.

Dengan demikian, dapat ada tiga hasil yang mungkin untuk setiap perdagangan:

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

Analisis Keuntungan

Keuntungan terbesar dari strategi ini terletak pada metodologi manajemen risikonya. Dengan menetapkan keuntungan mengambil ganda dan kerugian berhenti ganda, ia dapat mengunci keuntungan parsial setelah mengambil keuntungan pertama dicapai, sambil terus mencari keuntungan yang lebih besar. Ini dapat secara signifikan meningkatkan profitabilitas.

Keuntungan lain adalah bahwa dengan membagi perdagangan tunggal menjadi tiga kemungkinan hasil, hal ini menurunkan probabilitas kerugian maksimum, membuat pengembalian keseluruhan lebih konsisten. strategi khas hanya memiliki dua hasil - baik memukul 2% stop loss atau menang lebih dari 2%. strategi ini memiliki tiga hasil - kehilangan 2%, menang 1%, dan menang 3%, yang juga lebih baik mengendalikan risiko ekor.

Analisis Risiko

Risiko utama dari strategi ini berasal dari pengaturan stop loss. Jika jarak stop loss terlalu luas, itu dapat mengakibatkan kerugian perdagangan tunggal yang terlalu besar. Jika jarak stop loss terlalu ketat, itu dapat dihentikan prematur oleh kebisingan pasar. Jarak stop loss yang tepat perlu ditetapkan berdasarkan karakteristik dan volatilitas instrumen perdagangan yang berbeda.

Risiko lain adalah posisi yang tersisa setelah mengambil keuntungan pertama masih membawa risiko kerugian. Jika kerugian berikutnya melebihi mengambil keuntungan pertama, itu akan mengimbangi sebagian atau semua keuntungan yang direalisasikan. Hal ini perlu ditangani dengan ketat mengikuti stop loss untuk melindungi keuntungan terkunci.

Arahan Optimasi

Bidang-bidang berikut dapat dioptimalkan untuk strategi:

  1. Uji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal, seperti pengujian 15 pips, 25 pips mengambil jarak profit/stop loss.

  2. Cobalah kombinasi indikator teknis lainnya untuk sinyal masuk, seperti KDJ, MACD crossover.

  3. Mengoptimalkan persentase posisi yang ditutup pada awal mengambil keuntungan, seperti 50% mungkin tidak optimal, 30% atau 70% bisa menghasilkan hasil yang lebih baik secara potensial.

  4. Uji pengaturan yang berbeda untuk kecepatan stop loss untuk menyeimbangkan penguncian keuntungan dan memberikan harga ruang yang cukup untuk berfluktuasi.

Kesimpulan

Sebagai kesimpulan, ini adalah strategi yang kuat secara keseluruhan, yang dapat secara signifikan meningkatkan profitabilitas dan mengurangi risiko ekor melalui mekanisme dual take profit, dual stop loss dan trailing stop loss. Ada juga ruang yang cukup untuk optimasi melalui penyesuaian parameter dan teknik indikator teknis untuk mencapai kinerja yang lebih baik. Ini cocok untuk investor yang mengejar keuntungan investasi 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 banyak