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.
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:
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.
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.
Bidang-bidang berikut dapat dioptimalkan untuk strategi:
Uji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal, seperti pengujian 15 pips, 25 pips mengambil jarak profit/stop loss.
Cobalah kombinasi indikator teknis lainnya untuk sinyal masuk, seperti KDJ, MACD crossover.
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.
Uji pengaturan yang berbeda untuk kecepatan stop loss untuk menyeimbangkan penguncian keuntungan dan memberikan harga ruang yang cukup untuk berfluktuasi.
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)