Tất cả về chiến lược giao dịch động lực với dừng lỗ cho vàng

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

img

Tổng quan

Chiến lược này tính toán độ lệch của giá vàng so với đường trung bình động theo hàm số 21 ngày của nó để xác định tình huống mua quá mức và bán quá mức trên thị trường.

Chiến lược logic

  1. Tính toán đường EMA 21 ngày như đường cơ bản
  2. Tính toán độ lệch của giá so với EMA
  3. Tiêu chuẩn hóa độ lệch thành Z-Score
  4. Đi dài khi Z-Score vượt trên 0,5; Đi ngắn khi Z-Score vượt dưới -0,5
  5. Khóa vị trí khi Z-Score giảm trở lại ngưỡng 0,5/-0,5
  6. Thiết lập stop loss khi Z-Score đi trên 3 hoặc dưới -3

Phân tích lợi thế

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

  1. EMA như là hỗ trợ/kháng cự động để nắm bắt xu hướng
  2. Stddev và Z-Score đánh giá hiệu quả mức mua quá mức / bán quá mức, giảm các tín hiệu sai
  3. EMA theo số nhân đặt trọng lượng nhiều hơn vào giá gần đây, làm cho nó nhạy cảm hơn
  4. Z-Score tiêu chuẩn hóa sự lệch đối với các quy tắc phán đoán thống nhất
  5. Cơ chế dừng lỗ kiểm soát rủi ro và giới hạn lỗ

Phân tích rủi ro

Một số rủi ro cần xem xét:

  1. EMA có thể tạo ra các tín hiệu sai khi giá chênh lệch hoặc phá vỡ
  2. Các ngưỡng Stddev / Z-Score cần điều chỉnh đúng để hiệu suất tốt nhất
  3. Cài đặt stop loss không chính xác có thể dẫn đến tổn thất không cần thiết
  4. Các sự kiện thiên nga đen có thể kích hoạt dừng lỗ và bỏ lỡ cơ hội xu hướng

Giải pháp:

  1. Tối ưu hóa tham số EMA để xác định xu hướng chính
  2. Backtest để tìm ngưỡng tối ưu Stddev / Z-Score
  3. Kiểm tra sự hợp lý của mất mát dừng với dừng kéo theo
  4. Đánh giá lại thị trường sau sự kiện, điều chỉnh chiến lược phù hợp

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

Một số cách để cải thiện chiến lược:

  1. Sử dụng các chỉ số biến động như ATR thay vì đơn giản Stddev để đánh giá sự thèm rủi ro
  2. Kiểm tra các loại trung bình động khác nhau để có đường cơ sở tốt hơn
  3. Tối ưu hóa tham số EMA để tìm thời gian tốt nhất
  4. Tối ưu hóa các ngưỡng điểm số Z để cải thiện hiệu suất
  5. Thêm dừng dựa trên biến động để kiểm soát rủi ro thông minh hơn

Kết luận

Nhìn chung, đây là một chiến lược theo xu hướng vững chắc. Nó sử dụng EMA để xác định hướng xu hướng và sai lệch tiêu chuẩn để xác định rõ mức mua quá mức / bán quá mức cho các tín hiệu giao dịch. Kiểm soát rủi ro dừng lỗ hợp lý trong khi cho phép lợi nhuận chạy. Việc điều chỉnh tham số và thêm các điều kiện có thể làm cho chiến lược này mạnh mẽ hơn cho ứng dụng thực tế.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GC Momentum Strategy with Stoploss and Limits", overlay=true)

// Input for the length of the EMA
ema_length = input.int(21, title="EMA Length", minval=1)

// Exponential function parameters
steepness = 2

// Calculate the EMA
ema = ta.ema(close, ema_length)

// Calculate the deviation of the close price from the EMA
deviation = close - ema

// Calculate the standard deviation of the deviation
std_dev = ta.stdev(deviation, ema_length)

// Calculate the Z-score
z_score = deviation / std_dev

// Long entry condition if Z-score crosses +0.5 and is below 3 standard deviations
long_condition = ta.crossover(z_score, 0.5)

// Short entry condition if Z-score crosses -0.5 and is above -3 standard deviations
short_condition = ta.crossunder(z_score, -0.5)

// Exit long position if Z-score converges below 0.5 from top
exit_long_condition = ta.crossunder(z_score, 0.5)

// Exit short position if Z-score converges above -0.5 from below
exit_short_condition = ta.crossover(z_score, -0.5)

// Stop loss condition if Z-score crosses above 3 or below -3
stop_loss_long = ta.crossover(z_score, 3)
stop_loss_short = ta.crossunder(z_score, -3)

// Enter and exit positions based on conditions
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)
if (exit_long_condition)
    strategy.close("Long")
if (exit_short_condition)
    strategy.close("Short")
if (stop_loss_long)
    strategy.close("Long")
if (stop_loss_short)
    strategy.close("Short")

// Plot the Z-score on the chart
plot(z_score, title="Z-score", color=color.blue, linewidth=2)

// Optional: Plot zero lines for reference
hline(0.5, "Upper Threshold", color=color.red)
hline(-0.5, "Lower Threshold", color=color.green)


Thêm nữa