Ý tưởng chính của chiến lược này là sử dụng đường chéo vàng và đường chéo chết của đường trung bình động làm tín hiệu giao dịch, kết hợp với sự đột phá giá của đường trung bình động kép để thực hiện các mục nhập và dừng. Nó tạo ra tín hiệu mua khi đường trung bình động ngắn vượt qua đường trung bình động dài; tín hiệu bán được tạo ra khi đường trung bình động ngắn vượt qua đường trung bình động dài. Do đó, chiến lược có cả hai đặc điểm theo xu hướng và đảo ngược trung bình.
Các nguyên tắc hoạt động chi tiết như sau:
Tính toán trung bình di chuyển đơn giản ngắn hạn (SMA) và trung bình di chuyển đơn giản dài hạn.
So sánh nếu giá trên hoặc dưới mức trung bình động. Giá trên mức trung bình động cho thấy vị trí dài, trong khi giá dưới đây cho thấy vị trí ngắn.
Đi dài khi SMA ngắn vượt qua SMA dài; đi ngắn khi SMA ngắn vượt qua dưới SMA dài.
Chuyển đổi giữa các vị trí dài và ngắn.
Những lợi thế chính của chiến lược này là:
Chiến lược trung bình động kép kết hợp cả theo xu hướng và đảo ngược trung bình, tận dụng lợi thế theo dõi xu hướng thị trường và nắm bắt các cơ hội đảo ngược.
Chữ thập vàng và chữ thập chết của đường trung bình động có một số sự kiên trì, giúp lọc ra các đột phá sai.
Dựa trên lý thuyết trung bình động, nó có lợi để khóa lợi nhuận trong xu hướng và thị trường giới hạn phạm vi.
Những rủi ro chính của chiến lược này là:
Chiến lược trung bình động kép nhạy cảm với các thông số.
Việc phá vỡ thất bại có thể dẫn đến tổn thất.
Sự đảo ngược xu hướng không đảm bảo thành công. Xu hướng ban đầu có thể tiếp tục dẫn đến tổn thất.
Các hướng tối ưu hóa chính:
Kiểm tra và tối ưu hóa các thông số trung bình động để tìm ra sự kết hợp thông số tốt nhất.
Thêm một chỉ số xác định xu hướng để phân biệt giữa các thị trường xu hướng và dao động.
Thực hiện lệnh dừng lỗ hiệu quả để kiểm soát rủi ro, chẳng hạn như lệnh dừng lỗ, lệnh dừng lỗ vv.
Kết hợp với các chỉ số khác để cải thiện tính vững chắc của chiến lược.
Kết luận, như một chiến lược theo dõi đảo ngược trung bình động kép, nó xem xét cả việc theo dõi xu hướng và giao dịch đảo ngược. Với tối ưu hóa tham số và kiểm soát rủi ro thích hợp, nó có thể đạt được kết quả tốt. Tuy nhiên, bất kỳ chiến lược nào cũng phải đối mặt với rủi ro như sai hướng, thất bại dừng lỗ vv. Kiểm tra và tối ưu hóa liên tục là cần thiết để thích nghi với thị trường thay đổi.
/*backtest start: 2023-11-29 00:00:00 end: 2023-12-06 00:00:00 period: 10m basePeriod: 1m 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/ // © HPotter // Simple SMA strategy // // WARNING: // - For purpose educate only // - This script to change bars colors //@version=4 strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true) Resolution = input(title="Resolution", type=input.resolution, defval="D") Source = input(title="Source", type=input.source, defval=close) xSeries = security(syminfo.tickerid, Resolution, Source) Length = input(title="Length", type=input.integer, defval=14, minval=2) TriggerPrice = input(title="Trigger Price", type=input.source, defval=close) BarColors = input(title="Painting bars", type=input.bool, defval=true) ShowLine = input(title="Show Line", type=input.bool, defval=true) UseAlerts = input(title="Use Alerts", type=input.bool, defval=false) reverse = input(title="Trade Reverse", type=input.bool, defval=false) pos = 0 xSMA = sma(xSeries, Length) pos := iff(TriggerPrice > xSMA, 1, iff(TriggerPrice < xSMA, -1, nz(pos[1], 0))) nRes = ShowLine ? xSMA : na alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY') alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL') alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position') possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() nColor = BarColors ? possig == -1 ? color.red : possig == 1 ? color.green : color.blue : na barcolor(nColor) plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)