Chiến lược đột phá cú sốc xu hướng đơn phương

Tác giả:ChaoZhang, Ngày: 2024-01-18 14:59:30
Tags:

img

Tổng quan

Chiến lược đột phá cú sốc xu hướng đơn phương là một chiến lược đột phá sử dụng các kênh giá và đánh giá xu hướng. Nó nhằm mục đích xác định hướng xu hướng, nhập vào các đột phá trong thời gian giới hạn phạm vi và thoát khi đạt được mục tiêu lợi nhuận.

Chiến lược logic

Chiến lược tính toán các băng tần trên và dưới của kênh giá bằng cách sử dụng giá cao nhất và thấp nhất trong một thời gian N gần đây. Sau đó, nó tính toán đường trung bình giá. Khoảng cách giữa giá và đường trung bình được tính trung bình để có được các băng tần kênh.

Để phát hiện xu hướng, chiến lược kiểm tra xem các ngọn nến gần đây đều đóng trên kênh (bullish) hoặc bên dưới (bearish). Sau khi xác nhận xu hướng, nó chờ các cú sốc giá gần các dải và đi theo hướng ngược lại.

Phá vỡ cơ thể bổ sung cho các tín hiệu nhập cảnh khi chiều dài cơ thể vượt quá gấp đôi chiều dài cơ thể trung bình. Chiến lược đặt mục tiêu lợi nhuận sau khi nhập và kiếm lợi nhuận khi giá đạt được nó.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Các bộ lọc kênh giá làm giảm rủi ro phá vỡ sai
  2. Các mục đầu tư ngược được hưởng lợi từ các cú sốc xu hướng
  3. Vật thể thoát ra cải thiện độ chính xác nhập cảnh.
  4. Mục tiêu lợi nhuận cho phép lấy lợi nhuận tích cực

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Các thông số kênh không đúng có thể mở rộng/hẹp kênh quá nhiều
  2. Sự đảo ngược chống lại xu hướng mạnh có thể dẫn đến tổn thất lớn
  3. Các vết thoát thân có xu hướng tạo ra các tín hiệu sai trên đỉnh
  4. Mục tiêu lợi nhuận cứng có thể để lại lợi nhuận trên bàn

Những điều này có thể được giải quyết thông qua điều chỉnh tham số, tránh đảo ngược trong thời gian xu hướng mạnh mẽ, tối ưu hóa logic thoát vv.

Cơ hội gia tăng

Một số cách để cải thiện chiến lược:

  1. Thêm các chỉ số xu hướng để xác nhận xu hướng
  2. Tối ưu hóa các thông số thoát cơ thể để giảm tín hiệu sai
  3. Các bộ lọc bổ sung về thời gian nhập cảnh
  4. Điều chỉnh động của mục tiêu lợi nhuận

Kết luận

Chiến lược đột phá cú sốc xu hướng một bên có lợi từ các sự đột phá chống lại xu hướng trong các khoảng thời gian khác nhau. Nó có lợi thế xác định xu hướng và thu lợi nhuận tích cực, nhưng cũng có một số rủi ro. Những rủi ro này có thể được giảm thông qua xác nhận đa yếu tố, tối ưu hóa tham số vv. Chiến lược phù hợp với giao dịch ngắn hạn và có thể bổ sung cho các chiến lược theo xu hướng.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.5", shorttitle = "Scalper str 1.5", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
bodylen = input(10, defval = 10, minval = 0, maxval = 50, title = "Body length")
trb = input(1, defval = 1, minval = 1, maxval = 5, title = "Trend bars")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
chd = close > hd
cld = close < ld
uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0
dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0
trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1]

//trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = ema(body, 30) / 10 * bodylen

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

Thêm nữa