Xu hướng theo chiến lược mua và bán

Tác giả:ChaoZhang, Ngày: 2023-10-17 12:59:59
Tags:

img

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 theo xu hướng đơn giản.

Chiến lược logic

Chiến lược này sử dụng Đường trung bình di chuyển đơn giản (SMA) để xác định hướng xu hướng. Trong xu hướng tăng, khi hành động của nến cung cấp một dip, chiến lược sẽ đi dài khi mức cao của nến hiện tại phá vỡ mức cao của nến trước. Trong xu hướng giảm, khi hành động của nến cung cấp một blip, chiến lược sẽ đi ngắn khi mức thấp của nến hiện tại phá vỡ mức thấp của nến trước.

Chiến lược này cũng sử dụng %K và %D của Trình dao động Blanchflower để xác định xu hướng. Nó sẽ đóng vị trí và giao dịch theo hướng ngược lại khi %K vượt trên %D. Ngoài ra, đường MACD và đường tín hiệu hoạt động như bộ lọc để chỉ nhận các giao dịch phù hợp với hướng xu hướng được xác định bởi MACD và tín hiệu.

Chiến lược có thể chỉ đi dài, ngắn hoặc cả hai. Tháng bắt đầu và năm cho phép kiểm tra ngược từ thời điểm đó đến bây giờ. Tất cả các tham số như thời gian SMA, thời gian %K, thời gian %D, tham số MACD vv có thể tùy chỉnh.

Phân tích lợi thế

  • Sử dụng SMA để xác định xu hướng tránh các whipsaws và giao dịch không chính xác
  • Ứng dụng Blanchflower Oscillator kịp thời phát hiện sự đảo ngược xu hướng và kiểm soát rủi ro
  • MACD và bộ lọc tín hiệu giảm các giao dịch ồn chống lại xu hướng
  • Các tham số có thể tùy chỉnh thích nghi với các hành vi giá khác nhau
  • Chỉ giao dịch dài, chỉ giao dịch ngắn hoặc giao dịch hai hướng thích nghi với các chế độ thị trường

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  • Rủi ro mất mát lớn từ sự thâm nhập lớn của SMA có thể làm tăng thời gian SMA để giảm rủi ro.
  • Giao dịch thường xuyên và giao dịch quá mức trong thị trường giới hạn phạm vi. Có thể tăng khoảng thời gian %K để giảm tần suất giao dịch.
  • Không hiệu quả lọc từ MACD kém và thiết lập thông số tín hiệu. nên tối ưu hóa các thông số cho mỗi công cụ.
  • Đặt hàng lớn từ giao dịch hai hướng gây mất mát.

Cơ hội gia tăng

Chiến lược có thể được cải thiện trong các khía cạnh sau:

  • Tối ưu hóa thời gian SMA để lọc whipsaw trong khi giữ khả năng phát hiện xu hướng
  • Tối ưu hóa các tham số %K, %D để nắm bắt sự đảo ngược xu hướng trong khi giảm các whipsaws
  • Tối ưu hóa các tham số MACD để lọc tiếng ồn hiệu quả hơn
  • Thêm kiểm soát kích thước vị trí, ví dụ: số lượng cố định, tỷ lệ phần trăm vốn sở hữu thay đổi v.v.
  • Thêm các cơ chế dừng lỗ, ví dụ như dừng theo dõi, dừng thời gian, dừng ATR v.v.

Kết luận

Chiến lược mua và bán theo xu hướng có một logic đơn giản và thẳng thắn để giao dịch rút lui trong các xu hướng được xác định bởi SMA và được lọc bởi các chỉ số. Các thông số điều chỉnh tinh tế và kiểm soát rủi ro có thể dẫn đến kết quả tốt, nhưng việc đóng gói kết hợp vẫn cần thiết để ngăn ngừa quá mức và cải thiện độ bền.


/*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)


Thêm nữa