Chiến lược chéo giữa hai mức trung bình động

Tác giả:ChaoZhang, Ngày: 2024-02-27 16:21:02
Tags:

img

Tổng quan

Chiến lược này là một chiến lược chéo trung bình động điển hình sử dụng hai bộ trung bình động, một nhanh và một chậm. Khi trung bình di chuyển nhanh vượt qua trung bình di chuyển chậm, một tín hiệu mua được tạo ra. Khi nhanh vượt dưới chậm, một tín hiệu bán được tạo ra. Chiến lược sử dụng cả EMA và SMA cho các đường trung bình di chuyển, với EMA là đường nhanh và SMA là đường chậm. Sử dụng nhiều đường trung bình di chuyển có thể giúp lọc các tín hiệu sai và cải thiện độ tin cậy.

Chiến lược logic

Logic cốt lõi dựa trên sự chéo chéo giữa các đường trung bình di chuyển nhanh và chậm để xác định các bước vào và ra.

Cụ thể, hai bộ trung bình di chuyển nhanh và chậm được tính:

  • EMA nhanh thứ 1, dài 8 ngày
  • EMA nhanh thứ 2, dài 21 ngày
  • SMA chậm thứ 1, dài 50 ngày
  • SMA chậm thứ 2, dài 200 ngày

Sau đó kiểm tra chéo giữa các EMA nhanh và SMA chậm:

  • Nếu EMA 8 ngày vượt qua SMA 50 ngày, tín hiệu chéo vàng
  • Nếu đường EMA 8 ngày vượt dưới đường SMA 50 ngày, tín hiệu chéo chết

Để lọc các tín hiệu sai, cần một sự chéo chéo EMA/SMA thứ hai để xác nhận:

  • Chỉ khi EMA 21 ngày cũng vượt qua trên/dưới SMA 50 ngày, tín hiệu giao dịch được kích hoạt

Bằng cách yêu cầu hai chéo MA nhanh / chậm, nhiều tín hiệu sai có thể được lọc ra và cải thiện độ tin cậy.

Khi mua tín hiệu kích hoạt, đi dài. Khi bán tín hiệu kích hoạt, đi ngắn.

Chiến lược cũng thiết lập lợi nhuận và dừng lỗ dựa trên tỷ lệ phần trăm đầu vào từ giá đầu vào một lần trong một vị trí.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Thiết kế MA kép lọc tín hiệu sai và cải thiện độ chính xác
  2. Sự kết hợp của EMA và SMA sử dụng độ nhạy của EMA và sự mượt mà của SMA
  3. Lấy lợi nhuận và dừng lỗ khóa lợi nhuận và kiểm soát rủi ro
  4. Logic đơn giản dễ hiểu và sửa đổi
  5. Các tham số có thể tùy chỉnh phù hợp với môi trường thị trường khác nhau

Phân tích rủi ro

Rủi ro của chiến lược:

  1. Các phân khúc MA có xu hướng tạo ra rất nhiều lợi nhuận / thua lỗ nhỏ trong các thị trường hỗn loạn
  2. Có thể phải đối mặt với tổn thất lớn trong thị trường xu hướng mạnh
  3. Điều chỉnh tham số kém cũng dẫn đến hiệu suất kém

Để kiểm soát rủi ro:

  1. Điều chỉnh các tham số cho các điều kiện thị trường khác nhau
  2. Tối ưu hóa dựa trên backtests để phù hợp với thị trường mục tiêu
  3. Sử dụng stop loss để giới hạn kích thước lỗ

Hướng dẫn cải thiện

Chiến lược có thể được tối ưu hóa thêm bằng cách:

  1. Kiểm tra nhiều kết hợp MA nhanh / chậm hơn để tìm ra tốt nhất
  2. Sử dụng máy học hoặc algos di truyền để tối ưu hóa tự động
  3. Thêm bộ lọc xu hướng để tránh giao dịch ngược xu hướng
  4. Thêm stop loss cuối cùng để khóa lợi nhuận
  5. Tích hợp bộ lọc khối lượng hoặc biến động để xác nhận tín hiệu
  6. Kết hợp với các lớp/sản phẩm khác để sử dụng tương quan thấp

Kết luận

Tóm lại, chiến lược giao thoa MA kép tạo ra các tín hiệu với giao thoa MA nhanh / chậm, tập hợp lấy lợi nhuận và dừng lỗ để kiểm soát rủi ro, và đơn giản, trực quan và dễ thực hiện. Các tham số có thể được điều chỉnh và kết hợp với các chỉ số khác để có hiệu suất tốt hơn. Nó có lợi ích rất lớn trong giao dịch định lượng.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JMLSlop

//@version=4

src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)

// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len) 

//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)

//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)

//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)

// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01


plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")

// Orders config
takeProfitPrice =
     (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na

longStopPrice  = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)

longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
    strategy.entry("Enter L", strategy.long)

shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
    strategy.entry("Enter S", strategy.short)


if (strategy.position_size > 0)
    strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)


Thêm nữa