Chiến lược này là một chiến lược chéo trung bình động dựa trên biểu đồ nến Renko. Nó sử dụng chỉ số TEMA để xây dựng các tín hiệu chéo và kết hợp các đường trung bình động dài hạn để lọc, nhằm xác định xu hướng trên biểu đồ Renko và tạo ra tín hiệu mua và bán.
Nguồn tín hiệu chính của chiến lược này đến từ thập tự vàng và thập tự tử của chỉ số TEMA ngắn hạn và chỉ số SMA.
Khi TEMA ngắn hạn vượt qua SMA ngắn hạn, mua dài; khi TEMA ngắn hạn vượt dưới SMA ngắn hạn, đóng các vị trí.
Ngoài ra, chiến lược cũng thiết lập hai tham số tùy chọn avg_protection và gain_protection để điều chỉnh logic nhập và dừng lỗ:
Khi avg_protection>0, chỉ mua khi giá đóng thấp hơn giá nắm giữ trung bình hiện tại, có thể làm giảm cơ sở chi phí;
Khi gain_protection>0, chỉ bán khi giá đóng vượt quá giá nhập khẩu một tỷ lệ phần trăm nhất định để khóa lợi nhuận.
Cuối cùng, chiến lược cũng sử dụng chỉ số SMMA dài hạn làm bộ lọc xu hướng. Chỉ khi giá đóng dưới SMMA, tín hiệu dài sẽ được kích hoạt.
Những lợi thế chính của chiến lược này là:
Chiến lược này cũng có một số rủi ro:
Để giảm thiểu những rủi ro này, có thể áp dụng điều chỉnh tham số thích hợp, thiết lập lỗ dừng v.v.
Các hướng tối ưu hóa chính cho chiến lược này là:
Nói chung, đây là một chiến lược chéo trung bình động cơ cơ bản, đơn giản nhưng rất thực tế. Nó chủ yếu dựa trên hiệu ứng giảm tiếng ồn tuyệt vời của thanh Renko và độ nhạy cao của chỉ số TEMA để tạo ra tín hiệu. Trong khi đó, sự hợp tác giữa các đường trung bình động dài hạn và ngắn hạn cũng tăng khả năng theo dõi xu hướng của nó. Với điều chỉnh tham số và tối ưu hóa thích hợp, chiến lược này có thể trở thành một lựa chọn hiệu quả cho giao dịch định lượng.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("TEMA Cross", overlay = true) tema(src, len) => 3*ema(src, len) - 3*ema(ema(src, len), len) + ema(ema(ema(src, len),len),len) smma(src, len) => sa = 0.0 sa := na(sa[1]) ? sma(src, len) : (sa[1] * (len - 1) + src) / len sa temaLength = input(5) smaLength = input(3) smmaLength = input(30) tema1 = tema(close, temaLength) sma1 = sma(tema1, smaLength) smma1 = smma(close,smmaLength) plot(tema1, color = green, title = "TEMA") plot(sma1, color = orange, title = "SMA") plot(smma1, color = red, title = "SMMA") minGainPercent = input(2) gainMultiplier = minGainPercent * 0.01 + 1 avg_protection = input(1) gain_protection = input(1) longCondition = crossover(tema1, sma1) and tema1 < smma1 shortCondition = crossunder(tema1, sma1) strategy.entry("Buy", strategy.long, when = longCondition and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true)) strategy.close_all(when = shortCondition and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))