[英]Pine Script v5, EMA clouds and alerts
嘗試在這里學習 Pine 腳本來優化我的交易策略。 我有大約 1.5 年的交易經驗。 我使用的趨勢系統是全能的 Ripster Clouds。 它基於多個 EMA 移動,形成雲(如 ichimoku 雲)並發現趨勢反轉。 我將鏈接粘貼下面的代碼。
我苦苦掙扎的是添加警報和箭頭,指出趨勢反轉開始的位置和結束的位置。
牛市 = 當 EMA 雲 2 穿過 EMA 雲 3
熊 = 當 EMA 雲 3 在 EMA 雲 3 下方穿過。
我還想要一個它所基於的時間范圍的變量。 我的建議是 3 分鍾、10 分鍾、1 小時、1 天和 1 周。
如果有人可以指出我獲得幫助的方向,或者在評論中幫助我,將不勝感激。
該代碼當然是免費的。
雲層變化的屏幕截圖。 雲 2 = 5-13 EMA 交叉,雲 3 = 34-50 EMA 交叉
EMA 雲的描述視頻視頻在這里。 視頻在這里
干杯,
//@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)
有幾種方法可以從 TA 的角度計算這些雲的交叉或交叉。
首先是等待整個雲 2 與雲 3 交叉; 這可以通過使用每個雲中較慢的 MA 的交叉來完成。
bull_signal = ta.crossover(htf_ma4, htf_ma6)
bear_signal = ta.crossunder(htf_ma4, htf_ma6)
其次是在雲層開始交叉或下方時立即獲得交叉信號。 在這種情況下,您將在每個雲中使用更快的 MA。
bull_signal = ta.crossover(htf_ma3, htf_ma5)
bear_signal = ta.crossunder(htf_ma3, htf_ma5)
另一種選擇是獲取每個雲的平均點並將其用於交叉信號。
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)
最后,要存儲正在使用的時間范圍,您可以使用內置的timeframe.period
所以:
res = timeframe.period
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.