pine_ema(src, length) =>
alpha = 2 / (length + 1)
sum = 0.0
sum := na(sum[1]) ? sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_ema(close,15))
Die EMA-Formel für TV ist sum:= na(sum[1]) ? sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])
Das ist eine sehr unbegreifliche Frage, kann mir jemand helfen, das in Python zu übersetzen?
Anmerkung:
- df['close'].ewm(span=110,adjust = False).mean()
- talib.EMA(np.array(close), timeperiod=110)
Die Ergebnisse der Tests stimmen nicht mit dem TV überein (eine Wahrscheinlichkeit von weniger als 50 ist die gleiche) und die Wahrscheinlichkeit von mehr als 100 ist die gleiche.
function ema(src, length) {
var arr = [];
var sum = 0;
var alpha = 2 / (length + 1)
for(var i in src) {
if( i<length-1 ) {
arr[i] = null;
sum += src[i];
}
if( i==length-1 ) {
arr[i] = (sum+src[i])/length;
}
else {
arr[i] = alpha * src[i] + (1 - alpha) * arr[i-1]
}
}
return arr;
}
好像结果跟ewma也不相同
def EMA(ps,period=5,exp=0.1):
ewma=pd.Series(0.0,index=ps.index)
ewma[period-1]=ps[:period].mean()
for i in range(period,len(ps)):
ewma[i] =exp*ps[i]+(1-exp)*ewma[i-1]
return ewma
- 1
