Chiến lược này tạo ra các tín hiệu giao dịch khi giá vượt qua EMA và sử dụng ATR như một mức dừng lỗ động để quản lý rủi ro.
Lý thuyết chính là:
Tính toán ATR là đường dừng lỗ, giá trị ATR xác định khoảng cách dừng nLoss
Nguồn giá là giá đóng mặc định, sử dụng Heikin Ashi đóng nếu tùy chọn Heikin Ashi h được bật
xATRTrailingStop theo dõi đường dừng mất mát động dựa trên so sánh giá với dừng trước đó
Vị trí pos là 1 cho dài khi giá vượt qua đường dừng lỗ, -1 cho ngắn khi vượt qua dưới, nếu không 0
Các tín hiệu chéo EMA, trên EMA là tín hiệu mua, dưới đây là tín hiệu bán
Nhập giao dịch trên tín hiệu mua/bán, thoát trên tín hiệu ngược lại
Các thanh màu dựa trên vị trí, tín hiệu đánh dấu và đường dừng lỗ
Chiến lược này theo dõi xu hướng với các điểm dừng năng động dựa trên ATR. Nó có thể xác định xu hướng và quản lý rủi ro hiệu quả.
Lợi thế là:
Dừng động dựa trên ATR thích nghi với biến động thị trường
Bộ lọc EMA làm giảm tín hiệu sai từ tiếng ồn
Tùy chọn Heikin Ashi lọc tiếng ồn và xác định xu hướng
Clear long/short position avoids whipsaws from trailing stop:
Các trợ giúp trực quan như đường, nhãn và màu sắc
Đơn giản và dễ hiểu logic để sửa đổi
Thời gian ATR có thể tùy chỉnh và nhân cho các thị trường khác nhau
Tóm lại, bằng cách kết hợp theo xu hướng và dừng động, chiến lược này có thể bắt được xu hướng và quản lý rủi ro tốt cho giao dịch xoay.
Có một số rủi ro cần xem xét:
Các tín hiệu EMA có thể bị chậm trễ khi thiếu các động thái ngắn hạn
Khả năng kích hoạt dừng lỗ thường xuyên trong các thị trường hỗn loạn
Không tính đến chi phí như hoa hồng
Thiếu kiểm soát kích thước vị trí
Hiệu suất phụ thuộc vào điều chỉnh tham số
Rủi ro của các loại whipsaws trên các thị trường khác nhau
Cần theo dõi và can thiệp
Nguy cơ có thể được giảm bằng cách tối ưu hóa các thông số, thêm các bộ lọc, định kích thước vị trí đúng cách, theo dõi hiệu suất và can thiệp khi cần thiết.
Một số cách để cải thiện chiến lược:
Điều chỉnh các thông số ATR cho các thị trường khác nhau
Kiểm tra các đường trung bình động khác để lọc tín hiệu
Thêm các chỉ số lọc xu hướng cho xác suất cao hơn
Thực hiện giới hạn kích thước vị trí
Thêm các điều kiện nhập như khối lượng, khoảng cách từ MA
Kết hợp chi phí như hoa hồng vào dừng
Tối ưu hóa thời gian vào và ra với nhiều tín hiệu hơn
Đưa ra việc lấy lợi nhuận hoặc dừng lại
Tối ưu hóa tham số tự động
Bằng cách kết hợp nhiều kỹ thuật hơn cho các lối vào, lối ra, bộ lọc và điều chỉnh tham số, chiến lược có thể được củng cố hơn nữa.
Chiến lược này kết hợp các điểm dừng năng động và theo xu hướng một cách đẹp. Với các điểm dừng hiệu quả, theo dõi xu hướng mượt mà, dễ sử dụng và tùy biến, nó phù hợp với xu hướng giao dịch xoay. Nhưng cần quản lý rủi ro, giám sát và điều chỉnh tham số thích hợp. Khi áp dụng tốt trên các thị trường xu hướng, có thể đạt được kết quả tốt. Nhìn chung nó cung cấp một cách tiếp cận đơn giản và thực tế để kết hợp giao dịch xu hướng và quản lý rủi ro.
/*backtest start: 2022-10-25 00:00:00 end: 2023-10-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="UT Bot Strategy", overlay = true) //CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. // Inputs a = input(1, title = "Key Vaule. 'This changes the sensitivity'") c = input(10, title = "ATR Period") h = input(false, title = "Signals from Heikin Ashi Candles") xATR = atr(c) nLoss = a * xATR src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema = ema(src,1) above = crossover(ema, xATRTrailingStop) below = crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) strategy.entry("long", true, when = buy) strategy.entry("short", false, when = sell)