Xu hướng theo chiến lược trung bình động

Tác giả:ChaoZhang, Ngày: 2024-02-29 14:00:35
Tags:

img

Tổng quan

Chiến lược này tính toán các đường trung bình động của kênh và thiết lập các vị trí dài hoặc ngắn khi giá vượt qua các đường kênh để theo xu hướng của giá cổ phiếu.

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

Chiến lược đầu tiên tính toán trung bình cao 20 ngày như đường ray trên của kênh, trung bình thấp 20 ngày như đường ray dưới của kênh, và tính toán đường trung bình của kênh. Đường trung bình của kênh đại diện cho xu hướng giá trung bình gần đây. Khi giá vượt qua đường trung bình của kênh lên, một vị trí dài được thiết lập. Khi giá vượt qua đường trung bình của kênh xuống, một vị trí ngắn được thiết lập. Theo dõi xu hướng giá cho đến khi giá giảm trở lại phía đối diện của phạm vi kênh, đóng vị trí.

Phân tích lợi thế

  • Sử dụng kênh để theo dõi xu hướng giá, tránh các quỹ bị khóa trong các thị trường khác nhau;
  • Các đường ray kênh giúp xác định các điểm vào và ra, giúp dễ dàng kiểm soát các lối vào;
  • Phạm vi kênh lọc ra một số tiếng ồn và tăng xác suất lợi nhuận;
  • Các thông số kênh có thể được điều chỉnh để điều chỉnh độ nhạy của chiến lược;

Phân tích rủi ro

  • Các sự đột phá đáng kể ở đường giữa có thể được theo sau bởi các thử nghiệm rút lại của đường giữa, dẫn đến bị mắc kẹt;
  • Các cổ phiếu dao động không phù hợp với chiến lược này và có thể dẫn đến giao dịch tần số cao;
  • Các thiết lập tham số không chính xác cũng có thể ảnh hưởng đến hiệu suất chiến lược;

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

  • Tối ưu hóa các tham số chu kỳ kênh để kiểm tra tác động của các tham số khác nhau;
  • Thêm chiến lược lấy lợi nhuận và dừng lỗ để kiểm soát tổn thất đơn và tổng;
  • Kết hợp các chỉ số khác như các phán đoán phụ để tránh các tín hiệu sai;
  • Lấy vị trí theo lô để giảm khả năng bị mắc kẹt trong các thử nghiệm kéo trở lại;

Tóm lại

Nói chung, chiến lược này tương đối đơn giản và thẳng thắn. Nó đánh giá xu hướng giá cổ phiếu thông qua các kênh giá cơ bản và thuộc loại xu hướng sau. Những lợi thế là hoạt động dễ dàng, sử dụng đầy đủ các cơ hội đầu tư do xu hướng giá mang lại và tránh khóa quỹ. Những nhược điểm là cài đặt tham số không đúng có thể ảnh hưởng đến hiệu suất và có một số rủi ro của các thử nghiệm rút lui. Thông qua tối ưu hóa hợp lý, sự ổn định của chiến lược có thể được cải thiện và hiệu suất giao dịch thực tế có thể được tăng cường.


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

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)
    



Thêm nữa