
Chiến lược này sử dụng phương pháp giao chéo đường EMA nhanh chậm để theo dõi xu hướng giá. Khi đường nhanh đi qua đường chậm từ phía dưới, hãy làm nhiều hơn; Khi đường nhanh đi qua đường chậm từ phía trên xuống, hãy cân bằng. Chiến lược này chủ yếu áp dụng cho các giống có xu hướng rõ ràng hơn, có thể theo dõi xu hướng một cách hiệu quả và thu được lợi nhuận vượt trội.
Chỉ số cốt lõi của chiến lược là đường trung bình EMA. Công thức tính toán đường trung bình EMA là:
EMA(t)=C(t)×2/(n+1)+EMA(t-1)×(n-1)/(n+1)
Trong đó, t là thời điểm hiện tại, C ((t) là giá đóng cửa hiện tại, n là giá trị của tham số N. Như vậy, EMA là một chỉ số kỹ thuật trung bình di chuyển có yếu tố cân nặng. EMA cho giá mới nhất trọng lượng cao hơn, vì vậy nó có thể phản ứng nhanh hơn với biến động giá mới nhất.
Chiến lược này xây dựng đường trung bình EMA nhanh và đường trung bình EMA chậm, cắt đường chậm trên đường nhanh là tín hiệu mua, cắt đường chậm dưới đường nhanh là tín hiệu bán. Khi cắt đường nhanh, báo hiệu giá bắt đầu một đợt tăng mới; khi cắt đường nhanh, báo hiệu xu hướng tăng lên kết thúc và bắt đầu điều chỉnh giảm.
Chiến lược này có những lợi thế sau:
Những rủi ro chính của chiến lược này là:
Để giảm nguy cơ 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 này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược này nói chung là một chiến lược theo dõi xu hướng thực tế đơn giản hơn. Nó sử dụng EMA để xác định xu hướng giá, logic hoạt động rõ ràng, dễ thực hiện. Ưu điểm là điều chỉnh tham số đơn giản, có thể theo dõi xu hướng hiệu quả; nhược điểm là dễ phát ra tín hiệu giả, hiệu suất thực tế có thể yếu hơn so với đo lại.
/*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)