ESSMA

Penulis:ChaoZhang, Tarikh: 2022-05-12 15:19:33
Tag:EMASMAWMARMAATR

Konsep:

Terdapat sebilangan besar purata bergerak yang tersedia.

Walau bagaimanapun, mereka berkesan dengan cara yang berbeza.

Pengesahan trend dan tindak lanjut memerlukan sebilangan besar purata bergerak untuk digunakan secara berbeza.

Konsep di sini adalah untuk menjana purata bergerak gabungan, setiap jenis MA boleh ditimbang untuk memberikan tahap pengesahan trend yang lebih tinggi.

Berat boleh dikonfigurasikan dalam tetapan, dan sebagai sampel panjang 50 telah digunakan.

ATR tidak menghasilkan hasil yang baik, jadi telah disimpan sebagai pilihan.

Sumber boleh diubah.

Indikator ini memberikan nilai sokongan rintangan yang baik dalam jangka masa yang lebih besar. dan juga memberikan petunjuk pecah dan kerosakan.

Keadaan berjaga-jaga telah dibuat sedemikian rupa sehingga ia boleh dipindahkan secara langsung ke Diskord.

Untuk amaran seseorang mesti mengkonfigurasi mesej mereka sendiri.

Selamat berdagang.

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)

Berkaitan

Lebih lanjut