Chiến lược đột phá xu hướng MA kép


Ngày tạo: 2024-01-08 16:43:38 sửa đổi lần cuối: 2024-01-08 16:43:38
sao chép: 0 Số nhấp chuột: 653
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá xu hướng MA kép

Tổng quan

Chiến lược phá vỡ xu hướng hai MA là một chiến lược giao dịch định lượng sử dụng trung bình di chuyển của hai chu kỳ khác nhau để xác định xu hướng và nhập vào. Chiến lược chủ yếu sử dụng MA chậm để xác định hướng xu hướng tổng thể và lọc vào bằng MA nhanh. Khi hướng xu hướng phù hợp với mức độ lớn, chọn đường K đảo ngược để vào để theo đuổi tỷ lệ thắng và lợi nhuận cao hơn.

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

Chiến lược này bao gồm:

Xu hướng:Bằng cách tính toán MA 21 chu kỳ, được định nghĩa là MA chậm, vị trí của nó khá ổn định, có thể được sử dụng để xác định hướng xu hướng tổng thể. Khi giá tăng gần giá MA là xu hướng tăng, khi giá giảm gần giá MA là xu hướng giảm.

Bộ lọc truy cập:Tính toán MA 5 chu kỳ, được định nghĩa là MA nhanh. Chỉ khi giá phá vỡ MA chậm, đồng thời phá vỡ MA nhanh, tín hiệu giao dịch sẽ được tạo ra. Thiết kế này chủ yếu là để lọc thêm khả năng phá vỡ giả.

Bộ lọc K:Chiến lược chỉ làm nhiều khi đường K của chu kỳ này là đường dương hoặc đường K của chu kỳ này là đường dương. Điều này được xem xét khi sử dụng đường K đảo ngược để có được tỷ lệ thành công cao hơn. Đồng thời kết hợp với chỉ số RSI nhanh để tránh mua quá nhiều hoặc bán quá nhiều.

Bộ lọc kho:Đối với thị trường tiền điện tử, chiến lược này thêm vào điều kiện đặt cược tăng gấp ba lần để phá vỡ sự biến động, lọc các cơ hội vượt trội trong quá trình giảm ở cấp độ lớn.

Thiết kế chống hư hỏng:Chiến lược hỗ trợ dừng di động. Khi mở vị trí, dừng sẽ được cập nhật theo tỷ lệ phần trăm dừng được thiết lập.

Phân tích lợi thế

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

  1. Thiết kế của Double MA rất đơn giản, thiết thực và dễ hiểu.
    1. Sử dụng bộ lọc kết hợp MA từ từ để xác định xu hướng một cách tin cậy;
  2. Đánh đổi dòng K để tăng tỷ lệ thắng giao dịch;
  3. Phương pháp tổng thể được duy trì và phù hợp với mọi cấp độ giao dịch;
  4. Hỗ trợ dừng lỗ di động, rủi ro có thể kiểm soát được;
  5. Đặc biệt, tính đến đặc điểm của thị trường tiền điện tử, thêm cơ hội đặt cược vượt mức giảm, có thể thu được lợi nhuận vượt mức.

Phân tích rủi ro

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

  1. Trong một số trường hợp, các nhà đầu tư sẽ phải trả tiền cho các nhà đầu tư khác để có thể thực hiện các giao dịch.
  2. K-line reverse có thể có tỷ lệ chiến thắng thấp trong một số cấp độ.
  3. Thị trường tiền điện tử có nhiều biến động, có nhiều khả năng bị kích hoạt.
  4. Có rất ít cơ hội để tăng hoặc giảm, và có rất nhiều biến động về lợi nhuận.

Những rủi ro này có thể được tối ưu hóa bằng cách:

  1. Tăng các điều kiện nhập cảnh để tránh các cú sốc vô hiệu;
  2. Điều chỉnh chu kỳ K-line hoặc thêm các bộ lọc chỉ số khác;
  3. Tối ưu hóa các thuật toán dừng lỗ, theo dõi dừng lỗ gần trục trung tâm;
  4. Đánh giá hiệu quả thực tế của chiến lược đặt cược.

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

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

  1. Tối ưu hóa tham số: Tối ưu hóa các tham số chu kỳ của MA nhanh chậm thông qua phản hồi có hệ thống hơn, nâng cao tỷ lệ rủi ro lợi nhuận tổng thể.

  2. Nhận dạng mô hình: Tăng các chỉ số khác như KDJ, MACD để nhận ra tín hiệu đảo ngược đáng tin cậy hơn.

  3. Tối ưu hóa Stop LossTiêu chí: Phát triển các thuật toán như dừng nổi, theo dõi dừng để giảm khả năng dừng bị kích hoạt.

  4. Học máy: thu thập và đánh dấu nhiều dữ liệu lịch sử hơn, tự động tạo các quy tắc giao dịch bằng cách sử dụng các phương pháp học máy.

  5. Định lượng chuyển giao: Tự động điều chỉnh chiến lược quản lý vị trí theo tình trạng thị trường.

Tóm tắt

Chiến lược đột phá MA song song nói chung là một chiến lược theo dõi xu hướng đơn giản và thực tế. Chiến lược này dễ giải thích và nắm bắt hơn so với các thuật toán học máy phức tạp, và có độ tin cậy cao hơn. Với việc tối ưu hóa tham số, mở rộng chức năng và giới thiệu học máy, chiến lược này có tiềm năng cải tiến rất lớn và là một điểm khởi đầu tốt cho giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.0 +CB", shorttitle = "Trend MAs str 2.0", 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, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
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?")
needarr = input(false, defval = false, title = "Need entry arrows?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")

src = useohlc4 == true ? ohlc4 : 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)
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

up2 = high < center and high < center2 and bar == -1 ? 1 : 0
dn2 = low > center and low > center2 and bar == 1 ? 0 : 0

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

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

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

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

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

longCondition = up == 1 or (up2 == 1 and needex == true) or up3 == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)