Ini adalah strategi perdagangan kuantitatif Bitcoin berdasarkan keuntungan mengambil dua, kerugian berhenti dua dan kerugian berhenti berturut-turut. Ia menggunakan silang EMA dan WMA sebagai isyarat kemasukan, mengamalkan keuntungan mengambil dua dan metodologi pengurusan risiko kehilangan berhenti dua, dan menggunakan kerugian berhenti berturut-turut selepas keuntungan pertama dicapai untuk mengunci keuntungan separa sambil mencari keuntungan yang lebih besar.
Masuk panjang apabila EMA melintasi WMA dari bawah, dan masuk pendek apabila EMA melintasi di bawah WMA dari atas.
Di sisi keuntungan, terdapat dua sasaran mengambil keuntungan. yang pertama mengambil keuntungan ditetapkan pada 20 pips di atas harga kemasukan, dan kedua mengambil keuntungan ditetapkan pada 40 pips di atas harga kemasukan.
Di sisi stop loss, terdapat juga dua stop loss. Stop loss pertama ditetapkan pada 20 pip di bawah harga kemasukan, dan stop loss kedua ditetapkan pada harga kemasukan itu sendiri.
Apabila keuntungan pertama dicetuskan, 50% kedudukan akan ditutup, dan stop loss akan ditarik ke harga kemasukan untuk mengunci keuntungan, sambil mencari keuntungan yang lebih besar dari sasaran keuntungan kedua.
Oleh itu, terdapat tiga kemungkinan hasil untuk setiap perdagangan:
Kelebihan terbesar strategi ini terletak pada metodologi pengurusan risikonya. Dengan menetapkan keuntungan mengambil berganda dan kerugian berhenti berganda, ia dapat mengunci keuntungan separa selepas keuntungan mengambil pertama dicapai, sambil terus mencari keuntungan yang lebih besar. Ini dapat meningkatkan keuntungan dengan ketara.
Satu lagi kelebihan adalah bahawa dengan membahagikan perdagangan tunggal kepada tiga hasil yang mungkin, ia mengurangkan kebarangkalian kerugian maksimum, menjadikan pulangan keseluruhan lebih konsisten. Strategi biasa hanya mempunyai dua hasil - sama ada memukul 2% stop loss atau menang lebih daripada 2%. Strategi ini mempunyai tiga hasil - kehilangan 2%, menang 1%, dan menang 3%, yang juga lebih baik mengawal risiko ekor.
Risiko utama strategi ini berasal dari tetapan stop loss. Jika jarak stop loss terlalu luas, ia boleh mengakibatkan kerugian perdagangan tunggal yang terlalu besar. Jika jarak stop loss terlalu ketat, ia boleh dihentikan sebelum waktunya oleh bunyi pasaran. Jarak stop loss yang betul perlu ditetapkan berdasarkan ciri dan turun naik instrumen perdagangan yang berbeza.
Risiko lain adalah kedudukan yang tersisa selepas mengambil keuntungan pertama masih membawa risiko kerugian. Jika kerugian berikutnya melebihi keuntungan pertama, ia akan mengimbangi sebahagian atau semua keuntungan yang dicapai. Ini perlu ditangani dengan mengikuti stop loss untuk melindungi keuntungan terkunci.
Bidang berikut boleh dioptimumkan untuk strategi:
Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum, seperti menguji 15 pip, 25 pip mengambil jarak keuntungan / hentian kerugian.
Cuba kombinasi penunjuk teknikal lain untuk isyarat kemasukan, seperti KDJ, persilangan MACD.
Mengoptimumkan peratusan kedudukan yang ditutup pada awal mengambil keuntungan, seperti 50% mungkin tidak optimum, 30% atau 70% boleh melakukan lebih baik berpotensi.
Uji tetapan yang berbeza untuk kelajuan stop loss untuk mengimbangi kunci keuntungan dan memberikan harga ruang yang cukup untuk turun naik.
Kesimpulannya, ini adalah strategi yang kuat secara keseluruhan, yang dapat meningkatkan keuntungan dan mengurangkan risiko ekor dengan ketara melalui mekanisme mengambil keuntungan berganda, kehilangan berhenti berganda dan kehilangan berhenti. Terdapat juga ruang yang cukup untuk pengoptimuman melalui penyesuaian parameter dan kejuruteraan penunjuk teknikal untuk mencapai prestasi yang lebih baik. Ia sesuai untuk pelabur yang mengejar keuntungan pelaburan 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)