Chiến lược này tạo ra các tín hiệu giao dịch dựa trên đường chéo vàng và đường chéo chết của đường trung bình động. Nó kết hợp ba đường trung bình động với các thiết lập tham số khác nhau - ngắn hạn, trung hạn và dài hạn. Bằng cách so sánh mối quan hệ chiều cao giữa ba MAs này, nó xác định trạng thái tăng/giảm của thị trường và tạo ra các tín hiệu giao dịch.
Chiến lược đặt ba đường trung bình động, đó là trung bình động đơn giản ngắn hạn, trung bình động cân nhắc trung hạn và trung bình động theo cấp số nhân dài hạn. Cụ thể, nó đặt một SMA 1 giai đoạn, WMA 20 giai đoạn và EMA 25 giai đoạn.
Khi đường SMA ngắn hạn vượt qua đường WMA trung hạn và giá đóng cửa cũng cao hơn đường WMA, nó cho thấy thị trường đang đảo ngược lên và tạo thành một tín hiệu tăng. Khi đường SMA ngắn hạn vượt dưới đường WMA trung hạn hoặc giá đóng cửa thấp hơn đường WMA, nó đưa ra tín hiệu giảm. Do đó, chiến lược này đánh giá tình trạng tăng/giảm của thị trường bằng cách so sánh chiều cao và giao thoa giữa ba MA.
Chiến lược này kết hợp ba MAs ngắn hạn, trung hạn và dài hạn, có thể phản ứng với những thay đổi của thị trường trong các chu kỳ khác nhau và cải thiện độ chính xác của việc nắm bắt xu hướng. Đặc biệt, WMA trung hạn có hiệu quả hơn trong việc lọc ra tiếng ồn thị trường và tránh các tín hiệu sai hiệu quả. Ngoài ra, chiến lược chỉ gửi tín hiệu dài khi các tín hiệu tăng của SMA và giá đóng đạt mức nhất quán cao, ngăn chặn whipsaws và đảm bảo hiệu quả mỗi bước vào.
Chiến lược này có nguy cơ tín hiệu sai. Khi SMA ngắn hạn tạo ra tín hiệu sai, có thể gây ra tổn thất không cần thiết do chiến lược phụ thuộc chặt chẽ vào đường SMA. Ngoài ra, chiến lược nhạy cảm với các tham số. Khi các tham số được đặt không đúng dưới thị trường giới hạn phạm vi, nhiều giao dịch sai có thể được kích hoạt.
Để ngăn ngừa những rủi ro như vậy, nó được đề nghị điều chỉnh chiều dài MA, nới lỏng các điều kiện giao dịch đúng cách và thiết lập stop loss để hạn chế lỗ đơn.
Chiến lược có thể được tối ưu hóa từ các khía cạnh sau:
Kết hợp nhiều loại MAs như KC để tạo ra một danh mục chỉ số để cải thiện độ chính xác
Thêm các yếu tố khối lượng như breakout với khối lượng cao
Kết hợp các chỉ số biến động để tránh thất bại trong thị trường hỗn loạn
Sử dụng máy học để đào tạo và tối ưu hóa các thông số
Chiến lược xác định tình trạng tăng/giảm trên thị trường dựa trên mối quan hệ chéo và cao giữa ba MAs và giá đóng cửa. Bằng cách kết hợp MAs của các điều khoản khác nhau, nó có thể phát hiện hiệu quả xu hướng và các tín hiệu có chất lượng cao. Với điều chỉnh tham số thích hợp và giới thiệu nhiều chỉ số phụ trợ hơn, chiến lược có thể được tăng cường hơn nữa về sự liên quan và ổn định.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Candle Close Strategy KHANH 11/11/2023", overlay=true, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.0000005, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len1 = input.int(1, title="SMA #1 Length", minval=1) src1 = input(close, title="SMA Source #1") out1 = ta.sma(src1, len1) plot(out1, title="SMA #1", color=close >= out1 ? color.rgb(120, 123, 134, 100) : color.rgb(120, 123, 134, 100), linewidth=1) len2 = input.int(20, title="HMA #2 Length", minval=1) src2 = input(close, title="HMA Source #2") out2 = ta.hma(src2, len2) plot(out2, title="HMA #2", color=close >= out2 ? color.rgb(253, 255, 254, 100) : color.rgb(255, 255, 255, 100), linewidth=1) len3 = input.int(25, title="EMA #3 Length", minval=1) src3 = input(close, title="EMA Source #3") out3 = ta.ema(src3, len3) plot(out3, title="EMA #3", color=close >= out3 ? color.blue : color.blue, linewidth=1) // Define the long condition longCondition = (out1 > out2 and close > out2) // Define the short condition shortCondition = (out1 < out2 or close < out2) // Entry conditions if (longCondition) strategy.entry("Long",strategy.long) else if (shortCondition) strategy.entry("Short", strategy.short) // Trade channel plot PeriodLookBack = input(55, title="Period Look Back") xHighest55 = request.security(syminfo.tickerid, timeframe.period, ta.highest(PeriodLookBack)) xLowest55 = request.security(syminfo.tickerid, timeframe.period, ta.lowest(PeriodLookBack)) plot(xHighest55[1], color=color.red, title="HH") plot(xLowest55[1], color=color.green, title="LL") //@version=5 //indicator("Custom Moving Averages", shorttitle="CMA", overlay=true) shortLength = input(defval=40, title="Short Length") longLength = input(defval=80, title="Long Length") // Sử dụng khung thời gian của biểu đồ đang sử dụng thay vì cố định là "D" shortTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, shortLength)) shortBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, shortLength)) longTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, longLength)) longBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, longLength)) shortAverageLine = (shortTopBorder + shortBottomBorder) / 2 longAverageLine = (longTopBorder + longBottomBorder) / 2 plot(shortAverageLine, color=color.new(#fc0000, 0)) plot(longAverageLine, color=color.new(#01ff27, 0))