Chiến lược này được gọi là Chiến lược giao dịch định lượng dựa trên SMA và EMA. Ý tưởng chính của nó là kết hợp các đường SMA và đường EMA với các thông số khác nhau để xây dựng các tín hiệu giao dịch.
Tính toán SMA9, SMA50, SMA180 của giá đóng và EMA20.
Xác định tín hiệu mua và bán dựa trên mối quan hệ giữa giá đóng và hỗ trợ và kháng cự. Tạo tín hiệu mua BuySignal khi đóng phá vỡ qua sup, và tạo tín hiệu bán SellSignal khi đóng phá vỡ qua res.
Khi mua tín hiệu kích hoạt, thực hiện chiến lược vị trí dài; khi bán tín hiệu kích hoạt, đóng vị trí dài.
Khi bán tín hiệu kích hoạt, thực hiện chiến lược vị trí ngắn; khi mua tín hiệu kích hoạt, đóng vị trí ngắn.
Kết hợp nhiều đường trung bình động để tạo ra tín hiệu giao dịch cải thiện độ chính xác và ổn định.
Tính toán hỗ trợ và kháng cự động làm cho tín hiệu giao dịch đáng tin cậy hơn.
Việc áp dụng các trung bình động biến động cao, trung bình và thấp xem xét cả xu hướng dài hạn và những bước đột phá ngắn hạn, cải thiện lợi nhuận của chiến lược.
Hỗ trợ cả các vị trí dài và ngắn có thể thu được lợi nhuận trên thị trường xu hướng và bên cạnh.
SMA có hiệu ứng chậm trễ, có thể trì hoãn tín hiệu mua và bán và ảnh hưởng đến hiệu suất chiến lược.
Không có cơ chế dừng lỗ, lỗ có thể mở rộng.
Dữ liệu backtesting không đủ, các thông số cần phải được điều chỉnh theo thị trường.
Dựa vào các chỉ số kỹ thuật, không thể đối phó với các sự kiện thiên nga đen.
Giải pháp:
Thêm stop loss dựa trên biến động để kiểm soát lỗ đơn.
Thêm các mô hình học máy để hỗ trợ đánh giá xu hướng và tạo tín hiệu.
Thêm phân tích giá chính để cải thiện độ chính xác hỗ trợ và kháng cự.
Kiểm tra các kết hợp tham số khác nhau để tìm các tham số tốt hơn.
Chiến lược này kết hợp các chỉ số kỹ thuật của SMA và EMA để xây dựng các tín hiệu giao dịch, và tính toán hỗ trợ và kháng cự năng động để hình thành một logic mua và bán hoàn chỉnh. Những lợi thế là các tham số linh hoạt, giao dịch hai chiều, thích nghi với các thị trường khác nhau, nhưng nó cũng phải đối mặt với các vấn đề như chậm trễ và dừng lỗ không đầy đủ.
]
/*backtest start: 2023-12-10 00:00:00 end: 2023-12-11 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="StrategySMA 9/50/180 | EMA 20 | BUY/SELL", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //SMA and EMA code smaInput1 = input(9, title="SMA1") smaInput2 = input(50, title="SMA2") smaInput3 = input(180, title="SMA3") emaInput1 = input(20, title="EMA1") sma1 = sma(close, smaInput1) sma2 = sma(close, smaInput2) sma3 = sma(close, smaInput3) EMA1 = ema(close, emaInput1) plot(sma1, color= color.red , title="SMA1") plot(sma2, color = color.blue, title="SMA2") plot(sma3, color= color.white, title="SMA3") plot(EMA1, color = color.yellow, title="EMA1") no=input(3,title="BUY/SELL Swing") Barcolor=input(false,title="BUY/SELL Bar Color") Bgcolor=input(false,title="BUY/SELL Background Color") res=highest(high,no) sup=lowest(low,no) avd=iff(close>res[1],1,iff(close<sup[1],-1,0)) avn=valuewhen(avd!=0,avd,0) tsl=iff(avn==1,sup,res) // Buy/sell signals BuySignal = crossover(close, tsl) SellSignal = crossunder(close, tsl) // Enter long position strategy.entry("Buy", strategy.long, when=BuySignal) // Exit long position strategy.exit("Sell", "Buy", when=SellSignal) // Enter short position strategy.entry("Sell", strategy.short, when=SellSignal) // Exit short position strategy.exit("Buy", "Sell", when=BuySignal) colr = close>=tsl ? color.green : close<=tsl ? color.red : na plot(tsl, color=colr)