
Chiến lược này là một chiến lược chéo trung bình di chuyển đơn giản (SMA) dành cho thị trường tiền điện tử. Nó sử dụng ba nhóm SMA nhanh, trung bình và chậm để xác định tín hiệu mua và thoát tiềm năng. Khi SMA nhanh vượt qua SMA trung bình, nó tạo ra tín hiệu mua; khi SMA nhanh vượt qua SMA trung bình, nó tạo ra tín hiệu bán.
Chiến lược cho phép các nhà giao dịch đặt các tham số quan trọng sau:
Theo chiều dài SMA được thiết lập bởi người dùng, tính toán SMA nhanh, SMA trung bình và SMA chậm.
Khi SMA nhanh vượt qua SMA trung bình, nó tạo ra tín hiệu mua; khi SMA nhanh vượt qua SMA trung bình, nó tạo ra tín hiệu bán.
Chiến lược kết hợp số tiền tài khoản và tỷ lệ rủi ro cho mỗi giao dịch, tính toán số vốn danh nghĩa cho mỗi giao dịch. Sau đó kết hợp với ATR để tính toán mức dừng lỗ, và cuối cùng xác định vị trí cụ thể cho mỗi giao dịch.
Các chỉ số khác có thể được tối ưu hóa bằng cách rút ngắn chu kỳ SMA một cách thích hợp.
Chiến lược này tích hợp nhiều chức năng phán đoán chéo SMA, quản lý rủi ro và tối ưu hóa vị trí, là một chiến lược theo dõi xu hướng 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ố và thực hiện tối ưu hóa theo các yếu tố như phong cách giao dịch và môi trường thị trường của họ.
/*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")