
Chiến lược này là chiến lược chéo trung bình di chuyển dựa trên biểu đồ Renko. Nó sử dụng chỉ số TEMA để xây dựng tín hiệu chéo và lọc kết hợp với đường trung bình dài để xác định xu hướng trên biểu đồ Renko và phát 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 là các chỉ số TEMA ngắn hạn và các chỉ số SMA.
Khi ngắn hạn trên TEMA vượt qua SMA ngắn hạn, làm nhiều hơn; khi ngắn hạn dưới TEMA vượt qua SMA ngắn hạn, bán ngang.
Ngoài ra, chính sách cũng đặt hai tham số tùy chọn avg_protection và gain_protection để điều chỉnh logic nhập cảnh và dừng lỗ:
Khi avg_protection>0, chỉ mua khi giá đóng thấp hơn giá trung bình hiện tại để giảm chi phí nắm giữ;
Khi gain_protection > 0, chỉ khi giá đóng cửa vượt quá một tỷ lệ phần trăm của giá vào cửa, lệnh dừng sẽ được bán, do đó khóa lợi nhuận.
Cuối cùng, chiến lược cũng sử dụng một chỉ số SMMA dài hạn làm bộ lọc xu hướng. Chỉ khi giá đóng thấp hơn SMMA, tín hiệu đa sẽ được phát ra.
Chiến lược này có những lợi thế chính như sau:
Chiến lược này cũng có một số rủi ro:
Những rủi ro này có thể được tránh bằng cách điều chỉnh các tham số thích hợp, thiết lập vị trí dừng lỗ.
Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:
Chiến lược này nói chung là một chiến lược chéo đường trung bình di động cơ bản đơn giản nhưng rất thiết thực. Nó chủ yếu dựa trên hiệu quả loại bỏ tiếng ồn tuyệt vời của đường Renko K và khả năng tạo tín hiệu nhạy cảm cao của chỉ số TEMA. Đồng thời, sự kết hợp của đường trung bình ngắn hạn cũng tăng cường khả năng theo dõi xu hướng của nó.
/*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))