Dựa trên chiến lược giao cắt vàng và giao cắt tử thần trung bình động kép


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

Dựa trên chiến lược giao cắt vàng và giao cắt tử thần trung bình động kép

Tổng quan

Chiến lược này là một chiến lược chéo đường trung bình di chuyển điển hình, nó sử dụng hai nhóm trung bình, một nhóm trung bình nhanh và một nhóm trung bình chậm cùng một lúc. Khi đường trung bình nhanh vượt qua đường trung bình chậm, nó tạo ra tín hiệu mua; Khi đường trung bình nhanh vượt qua đường trung bình chậm, nó tạo ra tín hiệu bán.

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

Lập luận chính của chiến lược này dựa trên sự giao nhau của hai nhóm đường trung bình nhanh và chậm để đánh giá thời gian vào và ra sân.

Đầu tiên, hãy tính hai nhóm đường trung bình chậm và nhanh:

  • Giai đoạn EMA nhanh đầu tiên kéo dài 8 ngày
  • Giai đoạn EMA nhanh thứ hai kéo dài 21 ngày
  • Giai đoạn SMA chậm, 50 ngày
  • Lần thứ hai là SMA chậm, kéo dài 200 ngày.

Sau đó, đánh giá xem liệu EMA nhanh có phải là giao dịch vàng hay giao dịch chết với SMA chậm:

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

Để lọc các tín hiệu giả mạo, một nhóm thứ hai của EMA và SMA đã được xác nhận:

  • Chỉ khi EMA ngày 21 cũng đã vượt qua hoặc vượt qua SMA 50 ngày, tín hiệu giao dịch sẽ được phát ra

Bằng cách này, thông qua hai nhóm xác nhận nhanh và chậm, bạn có thể lọc ra nhiều tín hiệu giả, do đó tăng độ tin cậy của tín hiệu.

Khi phán quyết tạo ra tín hiệu mua, hãy mua nhiều; khi phán quyết tạo ra tín hiệu bán, hãy tháo lỗ.

Ngoài ra, chiến lược này cũng thiết lập logic dừng dừng lỗ. Khi giữ vị trí, giá dừng và giá dừng sẽ được theo dõi dựa trên tỷ lệ thua lỗ được thiết lập.

Phân tích lợi thế

Chiến lược này có một số lợi thế:

  1. Sử dụng kết hợp hai đường đồng nhất, có thể lọc hiệu quả tín hiệu giả, tăng độ chính xác tín hiệu
  2. Sử dụng sự kết hợp của EMA và SMA, kết hợp sự nhạy cảm của EMA với biến động giá mới nhất và sự trơn tru của SMA
  3. Cài đặt Stop Loss, khóa lợi nhuận, kiểm soát rủi ro
  4. Các nguyên tắc đơn giản, rõ ràng, dễ hiểu và sửa đổi
  5. Các tham số có thể tùy chỉnh, phù hợp với các môi trường thị trường khác nhau

Phân tích rủi ro

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

  1. Chiến lược đường trung bình dễ tạo ra nhiều lợi nhuận nhỏ và tổn thất nhỏ
  2. Có thể có những tổn thất lớn hơn khi xu hướng thay đổi mạnh
  3. Thiết lập tham số không đúng cách cũng có thể làm giảm hiệu quả lợi nhuận

Để kiểm soát rủi ro, chúng tôi khuyên bạn nên:

  1. Điều chỉnh hợp lý các tham số để phù hợp với môi trường thị trường khác nhau
  2. Các tham số tối ưu hóa dựa trên kết quả phản hồi, làm cho chiến lược phù hợp hơn với thị trường mục tiêu
  3. Cài đặt Stop Loss để kiểm soát kích thước lỗ đơn

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

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

  1. Kiểm tra thêm các kết hợp đường trung bình chậm và nhanh để tìm các kết hợp tham số tốt nhất
  2. Sử dụng học máy hoặc thuật toán di truyền để tự động tìm các tham số ưu tiên
  3. Tăng các chỉ số đánh giá xu hướng, tránh giao dịch ngược
  4. Tăng dừng di chuyển hoặc dừng di chuyển để khóa lợi nhuận tốt hơn
  5. Kết hợp với khối lượng giao dịch hoặc chỉ số biến động để tăng cường độ tin cậy của tín hiệu
  6. Gói đa chiến lược / đa giống, sử dụng rủi ro phân tán không liên quan

Tóm tắt

Nhìn chung, chiến lược này có các đặc điểm đơn giản, trực quan, dễ thực hiện và có thể được tối ưu hóa theo thị trường và nhu cầu. Chiến lược này có thể được sử dụng với các chỉ số kỹ thuật khác hoặc kết hợp các chiến lược khác.

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