Chiến lược mua và bán theo xu hướng


Ngày tạo: 2023-10-17 12:59:59 sửa đổi lần cuối: 2023-10-17 12:59:59
sao chép: 0 Số nhấp chuột: 386
1
tập trung vào
1166
Người theo dõi

Chiến lược mua và bán theo xu hướng

Tổng quan

Chiến lược mua và bán theo xu hướng là một chiến lược giao dịch trong ngày theo xu hướng đơn giản. Ý tưởng cơ bản của chiến lược này là đánh giá hướng xu hướng dựa trên đường trung bình di chuyển, mua và bán khi có biến động trong xu hướng.

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

Chiến lược này sử dụng SMA đơn giản để xác định hướng của xu hướng. Trong xu hướng tăng, khi đường K xuất hiện ở mức thấp, chiến lược sẽ làm nhiều hơn khi phá vỡ điểm cao nhất của đường K trước đó; trong xu hướng giảm, khi đường K xuất hiện ở mức cao, chiến lược sẽ làm trống khi phá vỡ điểm thấp nhất của đường K trước đó.

Chiến lược này cũng sử dụng các chỉ số Blanchflower %K và %D để đánh giá xu hướng. Khi%K vượt qua%D, giao dịch theo hướng ngược. Ngoài ra, chiến lược cũng sử dụng đường cong MACD và Signal làm điều kiện lọc và chỉ thực hiện giao dịch khi MACD và Signal phù hợp với hướng xu hướng.

Chiến lược này có thể chỉ làm nhiều, chỉ làm rỗng hoặc làm nhiều rỗng cùng một lúc. Ngày bắt đầu có thể được đặt thành tháng và năm bắt đầu đo đạc. Tất cả các tham số như chu kỳ trung bình di chuyển, chu kỳ K, chu kỳ D, tham số MACD, v.v. đều có thể được tùy chỉnh.

Phân tích lợi thế

  • Sử dụng đường trung bình di chuyển để xác định hướng xu hướng có thể lọc hiệu quả các biến động và tránh giao dịch sai
  • Sử dụng chỉ số Blanchflower có thể đánh giá xu hướng đảo ngược để kiểm soát rủi ro
  • Bộ lọc MACD và Signal giảm giao dịch ồn không phù hợp với xu hướng
  • Các tham số có thể tùy chỉnh để phù hợp với hành vi giá của các giống khác nhau
  • Có thể chỉ giao dịch nhiều, chỉ giao dịch ngắn hoặc giao dịch hai chiều, có thể thích nghi với môi trường thị trường một cách linh hoạt

Phân tích rủi ro

Chiến lược này có những rủi ro:

  • Nguy cơ phá vỡ đáng kể đường trung bình di chuyển dẫn đến tổn thất lớn. Bạn có thể tăng chu kỳ trung bình di chuyển một cách thích hợp để giảm nguy cơ.
  • Việc giao dịch thường xuyên trong xu hướng dao động gây ra quá giao dịch. Bạn có thể tăng% K chu kỳ để giảm tần suất giao dịch.
  • Các tham số MACD và Signal được thiết lập không đúng sẽ làm cho bộ lọc không hiệu quả. Các tham số phải được tối ưu hóa cho từng giống.
  • Khi giao dịch hai chiều, các vị trí trống đã tích lũy gây ra tổn thất lớn.

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

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

  • Tối ưu hóa chu kỳ trung bình di chuyển, cố gắng lọc các biến động trong khi vẫn giữ được phán đoán về xu hướng
  • Tối ưu hóa tham số% K,% D, giảm whipsaw trong khi vẫn giữ xu hướng capture
  • Tối ưu hóa các tham số MACD để có hiệu quả lọc tốt hơn và giảm giao dịch nhiễu
  • Tăng kiểm soát vị trí, chẳng hạn như mở số lượng cố định, vị trí nổi, v.v.
  • Thêm các chiến lược dừng lỗ như dừng di chuyển, dừng thời gian, dừng ATR

Tóm tắt

Chiến lược theo dõi xu hướng mua bán có ý tưởng tổng thể rõ ràng và đơn giản, đánh giá hướng xu hướng bằng đường trung bình di chuyển và sử dụng bộ lọc chỉ số để khóa cơ hội giao dịch trong xu hướng. Chiến lược này có thể có hiệu quả tốt thông qua tối ưu hóa tham số, nhưng vẫn cần gói mã Combine để giảm rủi ro tối ưu hóa và tăng sự ổn định. Ngoài ra, tối ưu hóa thích hợp cũng rất quan trọng để kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)

// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)

//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal

if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)//	if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
    if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
		strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
    if (k < k[1])
		strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")

if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
    if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
		strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
    if (k > k[1])
		strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)