Chiến lược này áp dụng EMA chéo để theo dõi xu hướng giá. Nó đi dài khi EMA nhanh vượt qua trên EMA chậm, và đóng vị trí khi EMA nhanh vượt qua dưới EMA chậm. Chủ yếu phù hợp với các sản phẩm có xu hướng rõ ràng, theo xu hướng hiệu quả và thu lợi nhuận dư thừa.
Chỉ số cốt lõi của chiến lược này là EMA.
EMA (t) = C (t) ×2/ (n+1) + EMA (t-1) × (n-1) / (n+1)
EMA là một kỹ thuật trung bình động với yếu tố cân nhắc, gán trọng lượng nhiều hơn cho giá gần đây, do đó phản ứng nhanh hơn với những thay đổi giá mới nhất.
Chiến lược xây dựng EMA nhanh và chậm và sử dụng EMA nhanh vượt qua trên EMA chậm như tín hiệu mua, và EMA nhanh vượt qua dưới EMA chậm như tín hiệu bán.
Những lợi thế của chiến lược này là:
Những rủi ro chính là:
Để giảm các rủi ro trên, các biện pháp tối ưu hóa sau đây có thể được áp dụng:
Chiến lược có thể được tối ưu hóa từ các khía cạnh sau:
Nói tóm lại, đây là một chiến lược theo xu hướng đơn giản và thực tế sử dụng EMA để đánh giá xu hướng giá. Logic là rõ ràng và dễ thực hiện. Những lợi thế nằm trong sự đơn giản để điều chỉnh các tham số và theo dõi xu hướng hiệu quả. Những nhược điểm dễ bị tín hiệu sai và hiệu suất thực tế có thể hoạt động kém hơn các bài kiểm tra.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA交叉策略by GPT", format = format.inherit, overlay = true, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, initial_capital = 1000000) // 定義回測交易開始和結束時間的變數 start_time = input(title="開始時間", type=input.time, defval=timestamp("01 Jan 2020 00:00 +0000")) end_time = input(title="結束時間", type=input.time, defval=timestamp("31 Dec 2050 23:59 +0000")) // 判斷是否在回測交易時間範圍內 in_range = true // Define input variables fast_length = input(title="Fast EMA Length", type=input.integer, defval=5) slow_length = input(title="Slow EMA Length", type=input.integer, defval=20) // Define EMAs fast_ema = ema(close, fast_length) slow_ema = ema(close, slow_length) // Define buy and sell signals buy_signal = crossover(fast_ema, slow_ema) sell_signal = crossunder(fast_ema, slow_ema) // Buy signal if in_range and buy_signal strategy.entry("Buy", strategy.long, when=in_range) // Sell signal if in_range and sell_signal strategy.close("Buy", when=sell_signal)