
Chiến lược này là hệ thống giao dịch theo xu hướng dựa trên Đường trung bình động hàm mũ ba (TEMA). Chiến lược này nắm bắt xu hướng thị trường bằng cách so sánh các tín hiệu giao nhau của TEMA ngắn hạn và dài hạn và quản lý rủi ro bằng cách kết hợp các điểm dừng biến động. Chiến lược này chạy trên khung thời gian 5 phút và sử dụng các chỉ báo TEMA 300 và 500 kỳ làm cơ sở để tạo tín hiệu.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Chiến lược này là một hệ thống theo dõi xu hướng hoàn chỉnh, nắm bắt xu hướng thông qua điểm giao nhau của chỉ báo TEMA và quản lý rủi ro bằng lệnh dừng lỗ động. Chiến lược này có logic rõ ràng, triển khai đơn giản và tính thực tiễn cao. Tuy nhiên, trong giao dịch thực tế, cần phải chú ý đến việc xác định môi trường thị trường và kiểm soát rủi ro. Nên tối ưu hóa các thông số theo điều kiện thị trường thực tế dựa trên xác minh kiểm tra ngược.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("TEMA Strategy for Gold", overlay=true)
// Inputs
tema_short_length = input.int(300, title="Short TEMA Length")
tema_long_length = input.int(500, title="Long TEMA Length")
pip_value = input.float(0.10, title="Pip Value (10 pips = 1 point for Gold)")
// Calculate TEMA
tema_short = ta.ema(2 * ta.ema(close, tema_short_length) - ta.ema(ta.ema(close, tema_short_length), tema_short_length), tema_short_length)
tema_long = ta.ema(2 * ta.ema(close, tema_long_length) - ta.ema(ta.ema(close, tema_long_length), tema_long_length), tema_long_length)
// Plot TEMA
plot(tema_short, color=color.blue, title="300 TEMA")
plot(tema_long, color=color.red, title="500 TEMA")
// Crossover conditions
long_condition = ta.crossover(tema_short, tema_long)
short_condition = ta.crossunder(tema_short, tema_long)
// Calculate recent swing high/low
swing_low = ta.lowest(low, 10)
swing_high = ta.highest(high, 10)
// Convert pips to price
pip_adjustment = pip_value * syminfo.mintick
// Long entry logic
if (long_condition and strategy.position_size == 0)
stop_loss_long = swing_low - pip_adjustment
strategy.entry("Long", strategy.long)
label.new(bar_index, swing_low, style=label.style_label_down, text="Buy", color=color.green)
// Short entry logic
if (short_condition and strategy.position_size == 0)
stop_loss_short = swing_high + pip_adjustment
strategy.entry("Short", strategy.short)
label.new(bar_index, swing_high, style=label.style_label_up, text="Sell", color=color.red)
// Exit logic
if (strategy.position_size > 0 and short_condition)
strategy.close("Long")
label.new(bar_index, high, style=label.style_label_up, text="Exit Long", color=color.red)
if (strategy.position_size < 0 and long_condition)
strategy.close("Short")
label.new(bar_index, low, style=label.style_label_down, text="Exit Short", color=color.green)