ESSMA

Tác giả:ChaoZhang, Ngày: 2022-05-12 15:19:33
Tags:EMASMAWMARMAATR

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ẻ.

img


/*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)

Có liên quan

Thêm nữa