Chiến lược đảo ngược đường trung bình động kép


Ngày tạo: 2023-10-24 10:56:08 sửa đổi lần cuối: 2023-10-24 10:56:08
sao chép: 0 Số nhấp chuột: 589
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược đường trung bình động kép

Tổng quan

Chiến lược này chủ yếu sử dụng đường trung bình di chuyển kép làm tín hiệu mua và bán, và thu lợi nhuận khi xu hướng đảo ngược. Khi đường trung bình di chuyển ngắn hạn đi qua đường trung bình di chuyển dài hạn, và khi đường trung bình di chuyển ngắn hạn đi ngang qua đường trung bình di chuyển dài hạn, là một chiến lược dừng chân theo dõi phổ biến.

Nguyên tắc chiến lược

Chiến lược này đặt ra hai đường trung bình di chuyển, một đường trung bình 20 ngày ngắn hơn và một đường trung bình 60 ngày dài hơn. Sau đó, xem xét sự giao thoa giữa đường trung bình ngắn hạn và đường trung bình dài hạn để quyết định tham gia.

Cụ thể, khi đường trung bình ngắn hạn trên đường trung bình dài hạn, cho thấy hiện đang trong xu hướng tăng, thì làm nhiều; khi đường trung bình ngắn hạn dưới đường trung bình dài hạn, cho thấy hiện đang trong xu hướng giảm, thì làm trống.

Phương pháp dừng lỗ sau khi thực hiện nhiều lệnh tháo lỗ là theo dõi lệnh dừng, theo giá cao nhất và giá thấp nhất để dừng lại, có thể khóa lợi nhuận tối đa.

Lập luận chính của mã là:

  1. Tính toán EMA 20 ngày và EMA 60 ngày
  2. Xác định liệu 20 ngày EMA có được trên 60 ngày EMA, nếu có, hãy làm nhiều hơn
  3. Xác định liệu 20 ngày EMA có vượt qua 60 ngày EMA hay không, và nếu có, hãy làm trống
  4. Sau khi nhập vào một vị trí nhiều, hãy dừng với mức giá cao nhất là 3% như là đường lỗ
  5. Sau khi tham gia vào vị trí bán khống, sử dụng 3% giá thấp nhất làm đường dừng lỗ
  6. Định mức dừng lỗ liên tục khi giữ vị trí

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Những ý tưởng đơn giản, dễ hiểu và dễ thực hiện.
  2. Sử dụng đường trung bình kép, có thể lọc hiệu quả các đột phá giả.
  3. Sử dụng tracking stop loss để khóa lợi nhuận tối đa.
  4. Các tín hiệu có thể được bắt kịp khi xu hướng thay đổi.
  5. Sự rút lui được kiểm soát tốt và tương đối ổn định.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Khi xu hướng không rõ ràng, đường trung bình đôi có thể xảy ra giao nhau thường xuyên, dẫn đến tổn thất giao dịch thường xuyên.
  2. Thiết lập phạm vi dừng sai có thể dẫn đến việc dừng quá thoải mái hoặc quá quyết liệt.
  3. Các tham số được thiết lập nếu thời gian không đúng, có thể dẫn đến bỏ lỡ các điểm tín hiệu quan trọng.
  4. Chi phí giao dịch cao, ảnh hưởng đến lợi nhuận.

Bạn có thể tối ưu hóa rủi ro bằng cách:

  1. Khi xu hướng không rõ ràng, hãy sử dụng hệ thống lọc để tránh giao dịch mù quáng.
  2. Tối ưu hóa phạm vi dừng thử nghiệm, thiết lập phạm vi dừng thích hợp.
  3. Xác định tham số tối ưu bằng cách kiểm tra lại và điều chỉnh tham số.
  4. Giảm số lượng người đặt cược và giảm chi phí giao dịch.

Tối ưu hóa tư duy

Chiến lược này có thể được tối ưu hóa hơn nữa ở những khía cạnh sau:

  1. Thêm bộ lọc các chỉ số khác, tạo ra cơ chế nhập cảnh đa điều kiện, tránh phá vỡ giả. Ví dụ: có thể kết hợp RSI.

  2. Tối ưu hóa các tham số chu kỳ của đường trung bình di chuyển, tìm ra sự kết hợp tham số tốt nhất. Các tham số chu kỳ khác nhau có thể được thử nghiệm bằng cách đi qua từng bước.

  3. Tối ưu hóa phạm vi dừng. Bạn có thể tính toán phạm vi dừng tối ưu bằng dữ liệu đo đạc. Bạn cũng có thể thiết lập phạm vi dừng động.

  4. Thiết lập cơ chế nhập lại. Sau khi dừng lỗ, bạn có thể thiết lập logic nhập lại hợp lý, giảm số lần giao dịch.

  5. Kết hợp các chỉ số định xu hướng, tạm dừng giao dịch khi xu hướng không rõ ràng, tránh giao dịch vô hiệu.

  6. Tham gia cơ chế quản lý vị trí, điều chỉnh vị trí và phạm vi dừng lỗ theo tình hình thị trường.

Tóm tắt

Chiến lược đảo ngược hai đường trung bình di chuyển này là một phương pháp phổ biến và hiệu quả. Tuy nhiên, có một số rủi ro cần thiết để kiểm tra tối ưu hóa các tham số đặt và phạm vi dừng, và kết hợp với các chỉ số lọc khác để sử dụng chiến lược hiệu quả nhất. Nếu được tối ưu hóa kỹ lưỡng và quản lý rủi ro nghiêm ngặt, chiến lược này có thể trở thành chiến lược giao dịch băng tần có lợi nhuận ổn định.

Mã nguồn chiến lược
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", 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")
needdb = input(true, defval = true, title = "Double Body")
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
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 = needdb == false ? ema(body, 30) : ema(body, 30) * 2
candle = high - low

//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)