松脚本中的移动平均线

问题描述

我想根据历史数据计算为期两天的简单移动平均线。 我正在使用以下代码获取前一天的高低收盘价。

// Getting prevIoUs 2 days day high low close
prev_daily_high = security(syminfo.tickerid,'D',high)
prev_daily_low = security(syminfo.tickerid,low)
prev_daily_close = security(syminfo.tickerid,close)

但是上面的代码获取前一天的数据来计算移动平均线,我需要两天的数据。

cp=(prev_daily_high+prev_daily_low+prev_daily_close)/3
bc=(prev_daily_high+prev_daily_low)/2
tc=2*cp-bc

下面的代码计算两天的SMA(简单移动平均线),但我正在获取的数据是一天的时间”。如何获取两天的数据并获取正确的SMA值?

// two days moving average for the central pivot,top central,bottom central
MAC = sma(cp,2)
MAB = sma(bc,2)
MAT = sma(tc,2)

解决方法

您需要让security()在其HTF上下文中进行计算。在这里,我们使用一个元组通过一次调用获取所有3个值:

MAC = sma(hlc3,2)
MAB = sma(hl2,2)
MAT = sma(2*hlc3-hl2,2)
[dMAC,dMAB,dMAT] = security(syminfo.tickerid,'D',[MAC,MAB,MAT])

请参阅:
https://www.tradingview.com/pine-script-reference/v4/#var_hlc3
https://www.tradingview.com/pine-script-reference/v4/#var_hl2