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


Ngày tạo: 2023-09-21 20:34:43 sửa đổi lần cuối: 2023-09-21 20:34:43
sao chép: 0 Số nhấp chuột: 678
1
tập trung vào
1625
Người theo dõi

Tổng quan

Chiến lược này sử dụng sự kết hợp của đường trung bình nhanh và đường trung bình chậm để đánh giá hướng xu hướng, để nắm bắt xu hướng đường trung bình dài để giao dịch xu hướng. Làm nhiều khi đi qua đường trung bình chậm trên đường trung bình nhanh và làm trống khi đi qua đường trung bình chậm dưới đường trung bình nhanh là một chiến lược theo dõi xu hướng điển hình.

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

Chiến lược này dựa chủ yếu vào đường trung bình để đánh giá xu hướng thị trường. Cụ thể, chiến lược sử dụng đường trung bình nhanh 5 chu kỳ và đường trung bình chậm 21 chu kỳ.

Khi đường trung bình nhanh vượt qua đường trung bình chậm, thị trường có xu hướng chuyển nhiều hơn, chiến lược này sẽ làm nhiều hơn khi mở cửa K tiếp theo; khi đường trung bình nhanh vượt qua đường trung bình chậm, thị trường có xu hướng chuyển hướng, chiến lược này sẽ làm trống khi mở cửa K tiếp theo.

Ngoài ra, chiến lược cũng thiết lập tham số bars để lọc phá vỡ giả. Giá trị mặc định của tham số này là 2, nghĩa là đường trung bình nhanh cần 2 đường K liên tiếp trên đường trung bình chậm để phát ra nhiều tín hiệu, có thể lọc phá vỡ giả hiệu quả.

Đối với tiền điện tử, chiến lược này cũng thêm vào logic phán đoán cực đoan. Chỉ khi đường trung bình nhanh và đường trung bình chậm cùng ở khu vực cực đoan, tín hiệu giao dịch sẽ được phát ra.

Chiến lược thoát khỏi quy tắc đơn giản và trực tiếp, khi giá kích hoạt điểm dừng lỗ, bạn sẽ thoát khỏi vị trí hiện tại.

Lợi thế chiến lược

  • Sử dụng hệ thống hai đường thẳng để theo dõi xu hướng hiệu quả
  • Đường trung bình nhanh có chiều dài ngắn hơn, có thể bắt kịp sự thay đổi xu hướng
  • Đường trung bình chậm có chiều dài dài hơn, có thể xác định hướng chính
  • Các tham số bars có thể lọc một số đột phá giả
  • Xác định cực độ có thể tránh các đột phá giả lẻ ở gần các điểm quan trọng
  • Sử dụng dừng di chuyển để kiểm soát rủi ro

Rủi ro chiến lược

  • Chiến lược hai đường đồng đều dễ bị tổn thất ở các điểm chuyển hướng
  • Hành động dừng lỗ có thể dừng lỗ sớm
  • bars tham số lọc chưa đủ, có thể bỏ lỡ điểm mua
  • Xác định giá trị cực đoan sẽ bỏ lỡ điểm mua trong một số trường hợp
  • Chiến lược này phù hợp hơn với thị trường xu hướng mạnh, không phù hợp với thị trường biến động.

Bạn có thể làm giảm nguy cơ bằng cách:

  • Tối ưu hóa các tham số của bar để tìm điểm cân bằng
  • Cố gắng lọc các chỉ số khác như MACD
  • Điều chỉnh điểm dừng để ngăn chặn lỗ hổng sớm
  • Cân nhắc về cơ chế tái nhập cảnh

Hướng tối ưu hóa

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

  1. Tối ưu hóa tham số đường trung bình

Bạn có thể thử nghiệm nhiều hơn để tìm các tham số đường trung bình phù hợp hơn với thị trường hiện tại. Ví dụ: điều chỉnh đường nhanh là 10 chu kỳ, đường chậm là 50 chu kỳ.

  1. Kết hợp các chỉ số khác

Có thể thử nghiệm thêm các chỉ số khác như MACD, KDJ, và đặt các điều kiện nghiêm ngặt hơn để tránh phá vỡ giả.

  1. Tối ưu hóa cơ chế nhập học

Việc nhập học hiện tại quá đơn giản và phụ thuộc vào đường trung bình, có thể được tối ưu hóa như sau:

  • Nếu bạn đang chơi trên đường dây nhanh, hãy chờ MACDDIFF cũng chơi trên đường dây chậm để vào.
  • KDJ cũng có thể tham gia khi đi qua đường dây chậm trên đường dây nhanh
  1. Tối ưu hóa hệ thống ngăn chặn thiệt hại

Có thể thử nghiệm các phương thức dừng khác, chẳng hạn như theo dõi dừng theo giá để tránh dừng bị kích hoạt quá sớm.

  1. Tham gia cơ chế tái nhập cảnh

Khi vị trí bị dừng lại, bạn có thể quay trở lại, điều này sẽ làm giảm các trường hợp bị dừng lại và bỏ lỡ xu hướng.

Tóm tắt

Chiến lược này là một chiến lược theo dõi xu hướng cơ bản, ý tưởng cốt lõi đơn giản và trực tiếp, sử dụng định hướng định hướng xu hướng bằng hai đường thẳng và dừng lỗ di động để kiểm soát rủi ro. Ưu điểm là dễ hiểu và thực hiện, có thể tuân theo xu hướng và lợi nhuận, rủi ro cũng có thể được kiểm soát. Nhưng đồng thời có một số thiếu sót, tín hiệu không chính xác trong thị trường và dừng lỗ dễ bị kích hoạt quá sớm. Điều này đòi hỏi chúng tôi phải liên tục điều chỉnh tối ưu hóa trong thực tế và lọc các chỉ số kỹ thuật khác để chiến lược phù hợp hơn với môi trường thị trường khác nhau.

Mã nguồn chiến lược
/*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()