Strategi kuantitatif stop-loss bergerak dengan stop-profit ganda dan stop-loss ganda


Tanggal Pembuatan: 2024-01-19 15:07:04 Akhirnya memodifikasi: 2024-01-19 15:07:04
menyalin: 3 Jumlah klik: 598
1
fokus pada
1617
Pengikut

Strategi kuantitatif stop-loss bergerak dengan stop-profit ganda dan stop-loss ganda

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif Bitcoin yang didasarkan pada double stop, double stop loss, dan mobile stop loss. Strategi ini menggunakan EMA dan WMA sebagai sinyal masuk, menggunakan metode manajemen risiko double stop double stop loss, menggunakan mobile stop loss untuk menjamin sebagian keuntungan setelah titik stop pertama tercapai, dan terus mengejar lebih banyak keuntungan.

Prinsip Strategi

Bila EMA memakai WMA dari atas, maka ia melakukan over entry; bila EMA memakai WMA dari atas, maka ia melakukan over entry.

Pada halte, ada dua halte, yang pertama 20 poin di atas titik masuk, dan yang kedua 40 poin di atas titik masuk.

Dalam hal stop loss, juga ada dua stop loss, yang pertama adalah 20 poin di bawah entry point, dan yang kedua adalah entry point.

Ketika harga pertama kali menyentuh titik penutupan pertama, tutup posisi 50%, dan pindah titik penutupan ke titik masuk, dan terus mengejar titik penutupan kedua yang lebih menguntungkan.

Strategi ini akan menghasilkan tiga hal:

  1. Harga pertama kali mencapai titik stop loss, kehilangan 2 persen dari harga asalnya;
  2. Harga pertama kali mencapai titik berhenti pertama dan mendapatkan keuntungan 1%, kemudian mencapai titik berhenti kedua dan akhirnya mendapatkan keuntungan 1%;
  3. Harga pertama kali menyentuh titik berhenti pertama dan mendapatkan keuntungan 1%, kemudian terus berjalan menyentuh titik berhenti kedua dan akhirnya mendapatkan keuntungan 3%.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah sistem manajemen risiko. Dengan pengaturan double stop double stop loss, Anda dapat mengambil stop loss bergerak untuk mengunci keuntungan setelah mendapatkan sebagian dari keuntungan, dan terus mengejar keuntungan yang lebih besar. Ini dapat meningkatkan profitabilitas secara signifikan.

Keuntungan lain adalah bahwa strategi ini membagi hasil dari satu perdagangan menjadi tiga situasi, mengurangi probabilitas kerugian tunggal, membuat keuntungan keseluruhan lebih rata. Strategi biasa hanya memiliki dua hasil, atau kehilangan 2% atau mendapatkan keuntungan lebih besar dari 2%. Strategi ini memiliki tiga hasil, yaitu kehilangan 2%, mendapatkan 1%, dan mendapatkan 3%. Ini juga lebih baik mengendalikan risiko ekor.

Analisis risiko

Risiko dari strategi ini terutama berasal dari pengaturan stop loss. Stop loss yang terlalu longgar dapat menyebabkan kerugian tunggal yang terlalu besar; dan stop loss yang terlalu sempit dapat terkena kebisingan pasar. Ini memerlukan pengaturan stop loss yang sesuai sesuai dengan karakteristik dan fluktuasi dari berbagai varietas.

Risiko lain adalah ada risiko kerugian pada bagian dari posisi yang masih dipegang setelah stop-loss pertama. Jika kerugian melebihi keuntungan dari stop-loss pertama, maka sebagian atau seluruh keuntungan akan dikompensasi. Ini memerlukan pelaksanaan stop-loss bergerak yang ketat untuk mengunci keuntungan.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Uji kombinasi parameter yang berbeda untuk mencari pengaturan parameter yang optimal. Misalnya, dapat menguji 15 titik, 25 titik stop-loss distance.

  2. Cobalah kombinasi indikator lain seperti KDJ, MACD, dan lain-lain untuk menentukan masuk.

  3. Rasio posisi yang dioptimalkan pada titik penutupan pertama adalah 50% lebih baik atau 30% atau 70% lebih baik.

  4. Uji pengaturan kecepatan pelacakan stop loss mobile untuk memastikan ruang kerugian seminimal mungkin dengan asumsi jaminan keuntungan.

Meringkaskan

Strategi ini secara keseluruhan sangat stabil, dengan double stop double stop dan stop loss bergerak, dapat secara signifikan meningkatkan tingkat keuntungan, mengurangi risiko ekor. Ada ruang yang cukup besar untuk pengoptimalan, dan efek yang lebih baik dapat diperoleh dengan penyesuaian parameter dan kombinasi indikator. Secara keseluruhan, strategi ini cocok untuk investor yang mencari keuntungan stabil yang tinggi.

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