简体   繁体   中英

Pine Script v5, EMA clouds and alerts

Trying to learn Pine script here to optimize my trading strategy. I have around 1.5 year of experience trading. The trendsystem Im using is the all mighty Ripster Clouds. It is based on several EMAs moving, and making a cloud(like a ichimoku cloud) and spotting trend reversing. I'll link paste the code below.

What Im struggling with is adding alerts and arrows pointing where the trendreversing start, and where it ends.

Bull = When EMA cloud 2 crosses OVER EMA cloud 3

Bear = When EMA cloud 3 crosses UNDER EMA cloud 3.

I also want a variable of what timeframe it is based upon. My suggestions are 3min, 10min, 1hour, 1 day and 1 week.

If anyone can either point me in a direction to get help, or help me in the comments, it will be greatly appreciated.

The code will be free of course.

Screenshot where the clouds change. Cloud 2 = 5-13 EMA cross, Cloud 3 = 34-50 EMA cross

Video of descriptive video of EMA clouds here. Video here

Cheers,

//@version=5

indicator("TwntySQ EMA Clouds - modified version of Ripster47 EMA clouds", shorttitle="TQ", overlay=true)

matype = input.string(title='MA Type', defval='EMA', options=['EMA', 'SMA'])



ma_len1 = input(title='Short EMA1 Length', defval=8)

ma_len2 = input(title='Long EMA1 Length', defval=9)

ma_len3 = input(title='Short EMA2 Length', defval=5)

ma_len4 = input(title='Long EMA2 Length', defval=13)

ma_len5 = input(title='Short EMA3 Length', defval=34)

ma_len6 = input(title='Long EMA3 Length', defval=50)

ma_len7 = input(title='Short EMA4 Length', defval=72)

ma_len8 = input(title='Long EMA4 Length', defval=89)

ma_len9 = input(title='Short EMA5 Length', defval=180)

ma_len10 = input(title='Long EMA5 Length', defval=200)



src = input(title='Source', defval=hl2)

ma_offset = input(title='Offset', defval=0)

//res = input(title="Resolution", type=resolution, defval="240")



f_ma(malen) =>

float result = 0

if matype == 'EMA'

result := ta.ema(src, malen)

result

if matype == 'SMA'

result := ta.sma(src, malen)

result

result



htf_ma1 = f_ma(ma_len1)

htf_ma2 = f_ma(ma_len2)

htf_ma3 = f_ma(ma_len3)

htf_ma4 = f_ma(ma_len4)

htf_ma5 = f_ma(ma_len5)

htf_ma6 = f_ma(ma_len6)

htf_ma7 = f_ma(ma_len7)

htf_ma8 = f_ma(ma_len8)

htf_ma9 = f_ma(ma_len9)

htf_ma10 = f_ma(ma_len10)



//plot(out1, color=green, offset=ma_offset)

//plot(out2, color=red, offset=ma_offset)



//lengthshort = input(8, minval = 1, title = "Short EMA Length")

//lengthlong = input(200, minval = 2, title = "Long EMA Length")

//emacloudleading = input(50, minval = 0, title = "Leading Period For EMA Cloud")

//src = input(hl2, title = "Source")

showlong = input(false, title='Show Long Alerts')

showshort = input(false, title='Show Short Alerts')

showLine = input(false, title='Display EMA Line')

ema1 = input(true, title='Show EMA Cloud-1')

ema2 = input(true, title='Show EMA Cloud-2')

ema3 = input(true, title='Show EMA Cloud-3')

ema4 = input(true, title='Show EMA Cloud-4')

ema5 = input(true, title='Show EMA Cloud-5')



emacloudleading = input.int(0, minval=0, title='Leading Period For EMA Cloud')

mashort1 = htf_ma1

malong1 = htf_ma2

mashort2 = htf_ma3

malong2 = htf_ma4

mashort3 = htf_ma5

malong3 = htf_ma6

mashort4 = htf_ma7

malong4 = htf_ma8

mashort5 = htf_ma9

malong5 = htf_ma10



cloudcolour1 = mashort1 >= malong1 ? #036103 : #880e4f

cloudcolour2 = mashort2 >= malong2 ? #4caf50 : #f44336

cloudcolour3 = mashort3 >= malong3 ? #2196f3 : #ffb74d

cloudcolour4 = mashort4 >= malong4 ? #009688 : #f06292

cloudcolour5 = mashort5 >= malong5 ? #05bed5 : #e65100

//03abc1



mashortcolor1 = mashort1 >= mashort1[1] ? color.olive : color.maroon

mashortcolor2 = mashort2 >= mashort2[1] ? color.olive : color.maroon

mashortcolor3 = mashort3 >= mashort3[1] ? color.olive : color.maroon

mashortcolor4 = mashort4 >= mashort4[1] ? color.olive : color.maroon

mashortcolor5 = mashort5 >= mashort5[1] ? color.olive : color.maroon





mashortline1 = plot(ema1 ? mashort1 : na, color=showLine ? mashortcolor1 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA1')

mashortline2 = plot(ema2 ? mashort2 : na, color=showLine ? mashortcolor2 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA2')

mashortline3 = plot(ema3 ? mashort3 : na, color=showLine ? mashortcolor3 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA3')

mashortline4 = plot(ema4 ? mashort4 : na, color=showLine ? mashortcolor4 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA4')

mashortline5 = plot(ema5 ? mashort5 : na, color=showLine ? mashortcolor5 : na, linewidth=1, offset=emacloudleading, title='Short Leading EMA5')



malongcolor1 = malong1 >= malong1[1] ? color.green : color.red

malongcolor2 = malong2 >= malong2[1] ? color.green : color.red

malongcolor3 = malong3 >= malong3[1] ? color.green : color.red

malongcolor4 = malong4 >= malong4[1] ? color.green : color.red

malongcolor5 = malong5 >= malong5[1] ? color.green : color.red



malongline1 = plot(ema1 ? malong1 : na, color=showLine ? malongcolor1 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA1')

malongline2 = plot(ema2 ? malong2 : na, color=showLine ? malongcolor2 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA2')

malongline3 = plot(ema3 ? malong3 : na, color=showLine ? malongcolor3 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA3')

malongline4 = plot(ema4 ? malong4 : na, color=showLine ? malongcolor4 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA4')

malongline5 = plot(ema5 ? malong5 : na, color=showLine ? malongcolor5 : na, linewidth=3, offset=emacloudleading, title='Long Leading EMA5')



fill(mashortline1, malongline1, color=cloudcolour1, title='MA Cloud1', transp=45)

fill(mashortline2, malongline2, color=cloudcolour2, title='MA Cloud2', transp=65)

fill(mashortline3, malongline3, color=cloudcolour3, title='MA Cloud3', transp=70)

fill(mashortline4, malongline4, color=cloudcolour4, title='MA Cloud4', transp=65)

fill(mashortline5, malongline5, color=cloudcolour5, title='MA Cloud5', transp=65)

There are a few ways you can calculate a crossover or crossunder of these clouds from a TA perspective.

First is waiting for the entire cloud 2 to crossover cloud 3; this can be done by using the crossover of the slower MAs in each cloud.

bull_signal = ta.crossover(htf_ma4, htf_ma6)
bear_signal = ta.crossunder(htf_ma4, htf_ma6)

Second is getting the crossover signal as soon as the clouds begin to crossover or under. In this case you would use the faster MAs in each cloud.

bull_signal = ta.crossover(htf_ma3, htf_ma5)
bear_signal = ta.crossunder(htf_ma3, htf_ma5)

Another option would be getting the average point of each cloud and using those for the crossover signals.

cloud2_avg = math.avg(htf_ma3, htf_ma4)
cloud3_avg = math.avg(htf_ma5, htf_ma6)

bull_signal = ta.crossover(cloud2_avg , cloud3_avg)
bear_signal = ta.crossunder(cloud2_avg, cloud3_avg)

lastly, to store the timeframe being used you can use the built-in timeframe.period

so:

res = timeframe.period

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM