
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.
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:
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.
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.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Uji kombinasi parameter yang berbeda untuk mencari pengaturan parameter yang optimal. Misalnya, dapat menguji 15 titik, 25 titik stop-loss distance.
Cobalah kombinasi indikator lain seperti KDJ, MACD, dan lain-lain untuk menentukan masuk.
Rasio posisi yang dioptimalkan pada titik penutupan pertama adalah 50% lebih baik atau 30% atau 70% lebih baik.
Uji pengaturan kecepatan pelacakan stop loss mobile untuk memastikan ruang kerugian seminimal mungkin dengan asumsi jaminan keuntungan.
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.
/*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)