Chiến lược giao dịch trung bình chuyển động xu hướng

Tác giả:ChaoZhang, Ngày: 2023-09-21 20:34:43
Tags:

Tổng quan

Chiến lược này sử dụng sự kết hợp của các đường trung bình di chuyển nhanh và chậm để xác định hướng xu hướng và bắt các xu hướng trung và dài hạn cho giao dịch xu hướng. Nó đi dài khi MA nhanh vượt qua trên MA chậm, và đi ngắn khi MA nhanh vượt qua dưới MA chậm. Đây là một chiến lược theo xu hướng điển hình.

Chiến lược logic

Chiến lược này chủ yếu dựa trên đường chéo vàng và đường chéo chết của đường trung bình động để xác định xu hướng thị trường. Cụ thể, nó sử dụng MA nhanh 5 giai đoạn và MA chậm 21 giai đoạn.

Khi MA nhanh vượt qua trên MA chậm, nó báo hiệu xu hướng tăng trên thị trường, và chiến lược sẽ đi dài tại cửa hàng tiếp theo. Khi MA nhanh vượt qua dưới MA chậm, nó báo hiệu xu hướng giảm, và chiến lược sẽ đi ngắn tại cửa hàng tiếp theo.

Ngoài ra, tham số bars được thiết lập để lọc ra các breakout giả. Giá trị mặc định là 2, có nghĩa là MA nhanh cần phải đóng trên MA chậm trong 2 thanh liên tiếp trước khi kích hoạt tín hiệu dài. Điều này tránh các breakout giả hiệu quả.

Đối với giao dịch tiền điện tử, chiến lược cũng kết hợp logic giá trị cực - chỉ khi cả MA nhanh và chậm đạt đến các khu vực cực, các tín hiệu giao dịch sẽ được kích hoạt. Điều này tiếp tục tránh các tín hiệu sai.

Quy tắc thoát là đơn giản và trực tiếp - gần vị trí khi dừng lỗ được nhấn.

Ưu điểm

  • Hệ thống MA kép có thể theo dõi xu hướng hiệu quả
  • MA nhanh chóng phản ứng nhanh với những thay đổi xu hướng
  • MA chậm xác định hướng tổng thể
  • Các tham số bars lọc ra một số breakout sai
  • Bảo vệ giá trị cực kỳ tránh các tín hiệu sai thường xuyên xung quanh các điểm quan trọng
  • Di chuyển dừng lỗ quản lý rủi ro

Rủi ro

  • Các hệ thống MA kép có xu hướng thua lỗ xung quanh sự đảo ngược xu hướng
  • Động stop loss có thể dừng lại sớm
  • Bộ lọc bars có thể bỏ qua một số tín hiệu hợp lệ
  • Những người bảo vệ giá trị cực kỳ thỉnh thoảng bỏ lỡ những mục nhập tốt
  • Chiến lược hoạt động tốt hơn trong thị trường xu hướng mạnh

Các rủi ro có thể được giảm bằng cách:

  • Tối ưu hóa tham số bars
  • Thêm các bộ lọc khác như MACD
  • Điều chỉnh mức dừng lỗ để tránh dừng sớm
  • Xem xét nhập cảnh trở lại

Hướng dẫn tối ưu hóa

Chiến lược có thể được cải thiện từ các khía cạnh sau:

  1. Điều chỉnh các thông số MA

Kiểm tra nhiều kết hợp MA để tìm các thông số tối ưu cho thị trường hiện tại, ví dụ: MA nhanh 10 giai đoạn và MA chậm 50 giai đoạn.

  1. Thêm các chỉ số khác

Kiểm tra thêm MACD, KDJ và các chỉ số khác để thiết lập các quy tắc nhập cảnh nghiêm ngặt hơn và tránh tín hiệu sai.

  1. Tối ưu hóa các mục

Nhập đơn giản hai MA hiện tại có thể được tăng cường:

  • Nhập dài chỉ khi MACDDIFF cũng vượt trên 0 khi MA nhanh vượt trên MA chậm
  • Nhập dài chỉ khi KDJ cho dấu chéo vàng khi MA nhanh vượt qua MA chậm
  1. Tối ưu hóa dừng

Kiểm tra các cơ chế dừng khác như dừng lại để tránh dừng lại sớm.

  1. Thêm các mục nhập lại

Cho phép nhập lại sau khi dừng lại, để tránh mất xu hướng.

Tóm lại

Tóm lại, chiến lược theo xu hướng cơ bản này có logic đơn giản và thẳng thắn - sử dụng hai MAs cho hướng xu hướng và dừng di chuyển để quản lý rủi ro. Những lợi thế dễ hiểu, có thể kiếm lợi từ xu hướng và quản lý rủi ro. Nhưng cũng có những hạn chế, như tín hiệu xấu trong quá trình hợp nhất, dừng sớm, v.v. Cần điều chỉnh trực tiếp và tối ưu hóa, chẳng hạn như thêm bộ lọc, điều chỉnh dừng, để làm cho nó thích nghi với môi trường thị trường khác nhau. Là một chiến lược giao dịch xu hướng giới thiệu, nó phù hợp cho người mới bắt đầu học và áp dụng. Nhưng nên lưu ý đến những hạn chế của nó, và các chiến lược tiên tiến hơn nên được khám phá. Chỉ thông qua cải tiến liên tục, người ta có thể đạt được lợi nhuận bền vững trong các thị trường luôn thay đổi.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

src = close

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

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)

//Signals
up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1
dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1
up2 = high < center and high < center2 and bar == -1 and needex
dn2 = low > center and low > center2 and bar == 1 and needex
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Lines
plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

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

//Trading
stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

if up1 or up2 or up3
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Long", "Long", stop = stoplong)

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Short", "Short", stop = stopshort)
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

Thêm nữa