
Chiến lược này là một chiến lược giao dịch định lượng Bitcoin dựa trên hai điểm dừng, hai điểm dừng và dừng di động. Chiến lược này sử dụng giao dịch EMA và WMA như một tín hiệu đầu vào, sử dụng phương pháp quản lý rủi ro hai điểm dừng hai điểm dừng, sau khi điểm dừng đầu tiên đạt được, sử dụng bảo đảm phần lợi nhuận bằng dừng di động, tiếp tục theo đuổi lợi nhuận nhiều hơn.
Khi EMA đi qua WMA từ trên xuống, hãy nhập thêm; khi EMA đi qua WMA từ trên xuống, hãy nhập trống.
Về điểm dừng, thiết lập hai điểm dừng, điểm dừng đầu tiên được thiết lập 20 điểm trên điểm vào và điểm dừng thứ hai được thiết lập 40 điểm trên điểm vào.
Về Stop Loss, cũng thiết lập hai điểm Stop Loss, điểm Stop Loss đầu tiên được thiết lập dưới điểm vào 20 điểm, điểm Stop Loss thứ hai được thiết lập là điểm vào chính nó.
Khi giá chạm điểm dừng đầu tiên, hãy xóa 50% vị trí và di chuyển điểm dừng sang điểm vào, tiếp tục theo đuổi điểm dừng thứ hai.
Theo đó, chiến lược này có ba kết quả:
Lợi thế lớn nhất của chiến lược này nằm ở hệ thống quản lý rủi ro. Bằng cách thiết lập hai dừng hai dừng, bạn có thể khóa lợi nhuận sau khi thu được một phần lợi nhuận, và tiếp tục theo đuổi lợi nhuận cao hơn bằng cách sử dụng dừng di chuyển. Điều này có thể làm tăng đáng kể khả năng sinh lợi.
Một lợi thế khác là chiến lược này phân chia kết quả của một giao dịch đơn lẻ thành ba trường hợp, làm giảm xác suất mất một lần và làm cho lợi nhuận tổng thể trở nên cân bằng hơn. Chiến lược thông thường chỉ có hai kết quả, hoặc dừng lỗ 2% hoặc thu lợi nhuận lớn hơn 2%. Trong khi đó, chiến lược này có ba kết quả, lần lượt là mất 2%, thu 1%, và thu 3%. Điều này cũng kiểm soát tốt hơn rủi ro đuôi.
Rủi ro của chiến lược này chủ yếu đến từ thiết lập điểm dừng lỗ. Khoảng cách dừng lỗ quá thoải mái có thể dẫn đến tổn thất đơn lẻ quá lớn; Khoảng cách dừng lỗ quá hẹp có thể bị tiếng ồn thị trường đánh bật. Điều này cần thiết để thiết lập khoảng cách dừng lỗ phù hợp dựa trên đặc điểm và tỷ lệ biến động của các giống khác nhau.
Một rủi ro khác là có nguy cơ mất một phần của vị trí vẫn được giữ sau điểm dừng đầu tiên. Nếu thua lỗ vượt quá lợi nhuận của điểm dừng đầu tiên, một phần hoặc toàn bộ lợi nhuận sẽ bị bù đắp. Điều này đòi hỏi phải thực hiện nghiêm ngặt lệnh dừng di chuyển để khóa lợi nhuận.
Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:
Kiểm tra các kết hợp tham số khác nhau để tìm các thiết lập tham số tối ưu. Ví dụ: có thể kiểm tra 15 điểm, 25 điểm dừng dừng khoảng cách.
Thử kết hợp các chỉ số khác, chẳng hạn như KDJ, MACD và các tín hiệu chỉ số khác để quyết định nhập học.
Tỷ lệ vị trí được tối ưu hóa cho điểm dừng đầu tiên là 50% phù hợp hoặc 30% hoặc 70% tốt hơn.
Kiểm tra các thiết lập tốc độ theo dõi lỗ di động, đảm bảo giảm thiểu tối đa không gian thua lỗ trong khi đảm bảo lợi nhuận.
Chiến lược này rất ổn định, có thể làm tăng đáng kể mức lợi nhuận và giảm rủi ro đuôi bằng cách sử dụng hai điểm dừng và hai điểm dừng di động. Ngoài ra, có rất nhiều không gian để tối ưu hóa và có thể đạt được hiệu quả tốt hơn bằng cách điều chỉnh các tham số và kết hợp các chỉ số.
/*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)