
Strategi ini adalah strategi perdagangan kuantitatif Bitcoin berdasarkan double stop, double stop loss, dan mobile stop loss. Strategi ini menggunakan silang EMA dan WMA sebagai isyarat masuk, mengambil pendekatan pengurusan risiko double stop double stop loss, mengambil stop loss mobile untuk menjamin sebahagian keuntungan selepas titik berhenti pertama dicapai, dan terus mengejar lebih banyak keuntungan.
Apabila EMA memakai WMA dari bawah, ia akan melakukan entri tambahan; apabila EMA memakai WMA dari atas, ia akan melakukan entri kosong.
Pada halangan, dua halangan ditetapkan, yang pertama ditetapkan sebagai 20 titik di atas titik masuk, dan yang kedua ditetapkan sebagai 40 titik di atas titik masuk.
Pada halangan, dua titik berhenti juga ditetapkan, titik berhenti pertama ditetapkan sebagai 20 titik di bawah titik masuk, dan titik berhenti kedua ditetapkan sebagai titik masuk itu sendiri.
Apabila harga mula-mula menyentuh titik berhenti pertama, anda akan melonggarkan kedudukan anda sebanyak 50% dan memindahkan titik berhenti anda ke titik masuk, dan terus mengejar keuntungan yang lebih besar dari titik berhenti kedua.
Ini akan membawa kepada tiga hasil:
Kelebihan terbesar strategi ini adalah sistem pengurusan risiko. Dengan menetapkan double stop double stop loss, anda boleh mengambil stop loss bergerak untuk mengunci keuntungan dan terus mengejar keuntungan yang lebih besar selepas mendapat sebahagian daripada keuntungan. Ini dapat meningkatkan keuntungan secara signifikan.
Kelebihan lain ialah strategi ini membahagikan hasil perdagangan tunggal kepada tiga keadaan, mengurangkan kebarangkalian kerugian tunggal, menjadikan keuntungan keseluruhan lebih rata. Strategi biasa hanya mempunyai dua hasil, sama ada kehilangan 2% atau keuntungan yang lebih besar daripada 2%. Strategi ini mempunyai tiga hasil, iaitu kehilangan 2%, keuntungan 1%, dan keuntungan 3%. Ini juga lebih baik mengawal risiko ekor.
Risiko strategi ini adalah terutamanya dari penyetempatan titik berhenti. Jarak berhenti yang terlalu longgar boleh menyebabkan kerugian yang terlalu besar; dan jarak berhenti yang terlalu sempit mudah terserang oleh bunyi pasaran. Ini memerlukan penyetempatan yang sesuai berdasarkan ciri-ciri dan kadar turun naik yang berbeza.
Risiko lain ialah terdapat risiko kerugian bagi bahagian yang masih memegang kedudukan selepas titik berhenti pertama. Jika kerugian melebihi keuntungan di titik berhenti pertama, sebahagian atau semua keuntungan akan dilumpuhkan. Ini memerlukan pelaksanaan yang ketat untuk menghentikan pergerakan untuk mengunci keuntungan.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Uji kombinasi parameter yang berbeza untuk mencari tetapan parameter yang optimum. Sebagai contoh, anda boleh menguji 15 titik, 25 titik stop loss jarak.
Cuba kombinasi indikator lain seperti KDJ, MACD dan lain-lain untuk menentukan kemasukan.
Perkadaran kedudukan yang dioptimumkan untuk titik penangguhan pertama adalah 50% sesuai atau 30% atau 70% lebih baik.
Uji tetapan kelajuan pengesanan kerugian bergerak untuk memastikan ruang kerugian seminimum mungkin dengan jaminan keuntungan.
Strategi ini sangat stabil secara keseluruhan, dengan double stop double stop dan stop loss bergerak, dapat meningkatkan tahap keuntungan dengan ketara, mengurangkan risiko ekor. Ruang pengoptimuman juga agak besar, dan hasil yang lebih baik dapat diperoleh melalui penyesuaian parameter dan gabungan indikator.
/*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)