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 cho phép các nhà giao dịch thiết lập các thông số chính sau:
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.
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.
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.
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.
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")