[关闭]
@Channelchan 2018-03-21T10:16:53.000000Z 字数 877 阅读 54477

Python递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

可视化过程链接: http://www.pythontutor.com/visualize.html#mode=edit

  1. def fact(n):
  2. if n==1:
  3. return 1
  4. return n * fact(n - 1)

recursion.png-5.5kB

  1. print(fact(5))
120

EMA计算

EMA.png-4.4kB

  1. 自定义方法
  2. Pandas递归函数
  3. talib的EMA

1. 自定义方法

  1. import pandas as pd
  2. a = 2/7
  3. Prices = list(range(10)) #prices
  4. def ema ( N , Price) :
  5. if N < 1:
  6. return Price[0]
  7. return (1-a)*ema(N-1,Price) + a*Price[N]
  8. print (pd.Series([ema(i,Prices) for i in range(10)]))
0    0.000000
1    0.285714
2    0.775510
3    1.411079
4    2.150771
5    2.964836
6    3.832026
7    4.737161
8    5.669401
9    6.621001
dtype: float64

2. Pandas递归函数

  1. recursion_df = pd.DataFrame({'test': Prices})
  2. recursion_result = recursion_df.ewm(alpha=2/7, adjust=False).mean()
  3. print(recursion_result)
       test
0  0.000000
1  0.285714
2  0.775510
3  1.411079
4  2.150771
5  2.964836
6  3.832026
7  4.737161
8  5.669401
9  6.621001

3. talib的EMA

  1. import talib as ta
  2. import numpy as np
  3. EMA = pd.Series(ta.EMA(np.array(Prices, dtype=np.float64),6))
  4. print(EMA)
0    NaN
1    NaN
2    NaN
3    NaN
4    NaN
5    2.5
6    3.5
7    4.5
8    5.5
9    6.5
dtype: float64
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注