Chiến lược xu hướng chéo SMA năng động

Tác giả:ChaoZhang, Ngày: 2024-02-05 12:14:12
Tags:

img

Tổng quan

Chiến lược này là một chiến lược chéo trung bình động (SMA) đơn giản phù hợp với thị trường tiền điện tử. Nó sử dụng SMA nhanh, trung bình và chậm để xác định các tín hiệu vào và ra tiềm năng. Khi SMA nhanh vượt qua SMA trung bình, một tín hiệu mua được tạo ra. Khi SMA nhanh vượt qua dưới SMA trung bình, một tín hiệu bán được tạo ra.

Chiến lược logic

Cài đặt tham số

Chiến lược cho phép các nhà giao dịch thiết lập các thông số chính sau:

  • Nguồn giá: giá đóng cửa hoặc giá khác
  • Xem xét các thanh không đầy đủ hoặc không
  • Phương pháp dự báo SMA: dự đoán chuyển đổi hoặc dự đoán hồi quy tuyến tính
  • Độ dài SMA nhanh: mặc định 7
  • Độ dài SMA trung bình: mặc định 30
  • Độ dài SMA chậm: mặc định 50
  • Số tiền tài khoản
  • Tỷ lệ rủi ro cho mỗi giao dịch

Tính toán SMA

SMA nhanh, SMA trung bình và SMA chậm được tính dựa trên chiều dài SMA được thiết lập bởi người dùng.

Các tín hiệu giao dịch

Khi SMA nhanh vượt qua SMA trung bình, tín hiệu mua được tạo ra. Khi SMA nhanh vượt qua dưới SMA trung bình, tín hiệu bán được tạo ra.

Mức độ rủi ro và vị trí

Chiến lược tính toán số tiền chính danh nghĩa cho mỗi giao dịch dựa trên số tiền tài khoản và tỷ lệ rủi ro chấp nhận được cho mỗi giao dịch. Sau đó nó sử dụng ATR để tính phạm vi dừng lỗ và cuối cùng xác định kích thước vị trí cho mỗi giao dịch.

Phân tích lợi thế

  • Sử dụng nhiều SMAs để xác định xu hướng với niềm tin lớn hơn
  • Phương pháp dự báo SMA tùy chọn để có khả năng thích nghi tốt hơn
  • Các tín hiệu giao dịch đơn giản và rõ ràng dễ thực hiện
  • Bao gồm quản lý rủi ro khoa học và vị trí

Phân tích rủi ro

  • Bản chất chậm của SMA có thể bỏ lỡ các điểm đảo ngược giá
  • Chỉ xem xét các chỉ số kỹ thuật mà không kết hợp các chỉ số cơ bản
  • Không xem xét tác động của các sự kiện đột ngột

Có thể tối ưu hóa bằng cách rút ngắn thời gian SMA, thêm các chỉ số khác v.v.

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

  • Thêm các chỉ số khác để lọc tín hiệu sai
  • Bao gồm phân tích cơ bản
  • Tối ưu hóa các thông số thời gian SMA
  • Tối ưu hóa các tham số rủi ro và kích thước vị trí

Kết luận

Chiến lược này tích hợp các quy tắc chéo SMA, quản lý rủi ro và kích thước vị trí cho một hệ thống theo xu hướng mạnh mẽ phù hợp với thị trường tiền điện tử. Các nhà giao dịch có thể điều chỉnh các tham số như phong cách giao dịch, điều kiện thị trường vv để tùy chỉnh và tối ưu hóa.


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

//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")

// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) => 
    maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)

offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]

fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)

// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)

// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold

if (enterLong)
    strategy.entry("Enter Long", strategy.long, qty=tradeSize)

if (exitLong)
    strategy.close("Enter Long")

// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")


Thêm nữa