Khái niệm:
Có một số lượng lớn các đường trung bình động có sẵn.
Tuy nhiên, hiệu quả của chúng khác nhau.
Việc xác nhận xu hướng và theo dõi đòi hỏi một số lượng lớn các đường trung bình động được sử dụng khác nhau.
Khái niệm ở đây là tạo ra một kết hợp trung bình động, mỗi loại MA có thể được cân nhắc để cung cấp mức độ xác nhận xu hướng cao hơn.
Các trọng lượng có thể cấu hình trong cài đặt, và như một mẫu 50 chiều dài đã được sử dụng.
ATR không mang lại kết quả tốt, vì vậy đã được giữ như tùy chọn.
Nguồn có thể được sửa đổi.
Chỉ số cung cấp một giá trị hỗ trợ kháng cự tốt trong khung thời gian lớn hơn và cũng cung cấp một dấu hiệu đột phá và phá vỡ.
Tình trạng cảnh báo đã được tạo ra để nó có thể được chuyển trực tiếp sang sự bất đồng.
Đối với cảnh báo, người ta phải cấu hình thông điệp của riêng họ.
Chúc giao dịch vui vẻ.
/*backtest start: 2022-04-11 00:00:00 end: 2022-05-10 23:59:00 period: 1h 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/ // © bhavishya //@version=5 indicator("ESSMA", overlay=true) //inputs source = input(close, "Source", group="Source") length1 = input(50, "Length1", group = "Length") w1 = input.float(2.0, "SMA Weight", group="Weights") w2 = input.float(2.0, "EMA Weight", group="Weights") w3 = input.float(2.0, "WMA Weight", group="Weights") w4 = input.float(2.0, "SMMA Weight", group="Weights") w5 = input.float(2.0, "RMA Weight", group="Weights") useatr = input.bool(false, "Use ATR", group="ATR") atrLen = input.int(title="ATR Length", defval=14, group="ATR") // functions smma(src, length) => smma = 0.0 smma := na(smma[2]) ? ta.sma(src, length) : (smma[2] * (length - 1) + src) / length smma essma(src,length) => essma = 0.0 smma = smma(src * w4,length) ema = ta.ema(src * w2, length) sma = ta.sma(src * w1, length) wma = ta.wma(src * w3, length) rma = ta.rma(src * w5, length) essma := (smma/w4+ema/w2+sma/w1 - wma/w3 - rma/w5 + open + close)/(3) essma // calucations // atr and MAs atr = ta.atr(atrLen) usesource = useatr ? atr : source essma1 = essma(usesource, length1) sessma1 = ta.wma(essma1, length1) // plots p1 = plot(essma1, "ESSMA", color.green) ps1 = plot(sessma1, "ESSMA Smooth", color.red) bool up = na bool down = na if (ta.crossover(essma1,sessma1)) up := true if (ta.crossunder(essma1, sessma1)) down := true plotshape(up, style=shape.labelup, location = location.belowbar, color=color.lime, text="B", textcolor=color.black) plotshape(down, style=shape.labeldown, location = location.abovebar, color=color.orange, text="S", textcolor=color.black) // alerts alertcondition(up, "ESSMA UP", '{"content":"ESSMA BUY @ {{close}}" : "{{ticker}} int : {{interval}} - essma : {{plot_0}} / sessma {{plot_1}}"}') alertcondition(down, "ESSMA DOWN", '{"content":"ESSMA SELL @ {{close}}" : "{{ticker}} int : {{interval}} - essma :{{plot_0}} /sessma : {{plot_1}}"}') if up strategy.entry("Enter Long", strategy.long) else if down strategy.entry("Enter Short", strategy.short)