
Chiến lược này đánh giá tình trạng quá mua và quá bán của thị trường bằng cách tính toán độ lệch của giá vàng so với chỉ số di chuyển trung bình 21 ngày, kết hợp với chênh lệch chuẩn, sử dụng chiến lược theo dõi xu hướng khi độ lệch đạt đến một mức độ chênh lệch chuẩn nhất định, đồng thời thiết lập cơ chế dừng lỗ để kiểm soát rủi ro.
Đây là một chiến lược theo dõi xu hướng của thị trường quá mua và quá bán dựa trên động lực giá cả và chênh lệch tiêu chuẩn, với những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Giải pháp:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này nói chung là một chiến lược theo dõi xu hướng cơ bản hợp lý. Nó sử dụng trung bình di chuyển để xác định hướng xu hướng chính, đồng thời thông qua xử lý tiêu chuẩn hóa độ lệch giá, có thể xác định rõ ràng tình trạng quá mua quá bán của thị trường, do đó tạo ra tín hiệu giao dịch. Thiết lập phương thức dừng lỗ hợp lý cũng giúp chiến lược kiểm soát rủi ro trong khi đảm bảo lợi nhuận. Bằng cách tối ưu hóa các tham số hơn nữa và thêm nhiều phán đoán điều kiện, chiến lược có thể trở nên ổn định, đáng tin cậy và có giá trị ứng dụng rất mạnh.
/*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)