Bài viết này chủ yếu phân tích chiến lược giao dịch định lượng được phát triển bởi Ravikant_sharma dựa trên nhiều đường trung bình chuyển động theo cấp số nhân (EMA) và chỉ số sức mạnh tương đối (RSI). Chiến lược xác định xu hướng giá và xác định các điểm vào và ra bằng cách vượt qua đường EMA với các chu kỳ và giá trị khác nhau của RSI.
Chiến lược này sử dụng 5 EMA với các khoảng thời gian khác nhau, bao gồm các đường 9 ngày, 21 ngày, 51 ngày, 100 ngày và 200 ngày. Chỉ có 4 EMA đầu tiên được vẽ trong mã.
Một trong những điều kiện sau đây phải được đáp ứng trước khi mua:
Đồng thời, chỉ số RSI phải lớn hơn 65, cho thấy xu hướng tăng mạnh.
Một trong những điều kiện sau đây phải được đáp ứng trước khi đóng vị trí:
Đó là một xu hướng điển hình theo chiến lược với những điểm mạnh sau:
Vẫn còn một số rủi ro:
Chiến lược có thể được tối ưu hóa thêm theo các cách sau:
Tóm lại, đây là một chiến lược theo xu hướng tổng thể đáng tin cậy và dễ thực hiện. Với EMA chéo cho hướng xu hướng và bộ lọc RSI cho tín hiệu sai, kết quả backtest tốt cung cấp một nền tảng vững chắc cho các thông số và tối ưu hóa mô hình để có được lợi nhuận ổn định. Tuy nhiên, các nhà giao dịch vẫn nên thận trọng với sự đảo ngược mạnh và các thông số không phù hợp gây ra rủi ro.
/*backtest start: 2024-01-30 00:00:00 end: 2024-02-29 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Ravikant_sharma //@version=5 strategy('new', overlay=true) start = timestamp(1990, 1, 1, 0, 0) end = timestamp(2043, 12, 12, 23, 59) ema0 = ta.ema(close, 9) ema1 = ta.ema(close, 21) ema2 = ta.ema(close, 51) ema3 = ta.ema(close, 100) ema4 = ta.ema(close, 200) rsi2=ta.rsi(ta.sma(close,14),14) plot(ema0, '9', color.new(color.green, 0)) plot(ema1, '21', color.new(color.black, 0)) plot(ema2, '51', color.new(color.red, 0)) plot(ema3, '200', color.new(color.blue, 0)) //plot(ema4, '100', color.new(color.gray, 0)) //LongEntry = ( ta.crossover(ema0,ema3) or ta.crossover(ema0,ema2) or ta.crossunder(ema2,ema3) ) // ta.crossover(ema0,ema1) // LongEntry=false if ta.crossover(ema0,ema1) if rsi2>65 LongEntry:=true if ta.crossover(ema1,ema2) if rsi2>65 LongEntry:=true LongExit = ta.crossunder(ema0,ema2) or close >(strategy.position_avg_price*1.25) or rsi2 <40 or close < (strategy.position_avg_price*0.98) if time >= start and time <= end if(LongEntry and rsi2>60) strategy.entry('Long', strategy.long, 1) if(LongExit) strategy.close('Long')