numpy 在Python Pandas中缓慢的随机实现

wz1wpwve  于 2022-11-10  发布在  Python
关注(0)|答案(3)|浏览(163)

我是Pandas的新手,我需要一个计算缓慢随机数的函数。我认为这应该是可能的,没有太大困难,但我不熟悉Pandas的高级API。
我的数据框包含“开盘”、“高点”、“低点”和“收盘价”,并以日期为索引。这些信息应该足以计算出缓慢的随机性。

  1. Following is the formula for calculating Slow Stochastic:
  2. %K = 100[(C - L14)/(H14 - L14)]
  3. C = the most recent closing price
  4. L14 = the low of the 14 previous trading sessions
  5. H14 = the highest price traded during the same 14-day period.
  6. %D = 3-period moving average of %K
e5nszbig

e5nszbig1#

您可以使用以下简单的函数来处理慢随机和快随机。

  1. def stochastics( dataframe, low, high, close, k, d ):
  2. """
  3. Fast stochastic calculation
  4. %K = (Current Close - Lowest Low)/
  5. (Highest High - Lowest Low) * 100
  6. %D = 3-day SMA of %K
  7. Slow stochastic calculation
  8. %K = %D of fast stochastic
  9. %D = 3-day SMA of %K
  10. When %K crosses above %D, buy signal
  11. When the %K crosses below %D, sell signal
  12. """
  13. df = dataframe.copy()
  14. # Set minimum low and maximum high of the k stoch
  15. low_min = df[low].rolling( window = k ).min()
  16. high_max = df[high].rolling( window = k ).max()
  17. # Fast Stochastic
  18. df['k_fast'] = 100 * (df[close] - low_min)/(high_max - low_min)
  19. df['d_fast'] = df['k_fast'].rolling(window = d).mean()
  20. # Slow Stochastic
  21. df['k_slow'] = df["d_fast"]
  22. df['d_slow'] = df['k_slow'].rolling(window = d).mean()
  23. return df
  24. stochs = stochastics( df, 'Low', 'High', 'Close', 14, 3 )
  25. slow_k = stochs['k_slow'].values
  26. fast_k = stochs['k_fast'].values
展开查看全部
hgqdbh6s

hgqdbh6s2#

您可以使用rolling_*系列函数来实现这一点。
例如,可以通过以下方式找到100[(C - L14)/(H14 - L14)]

  1. import pandas as pd
  2. l, h = pd.rolling_min(c, 4), pd.rolling_max(c, 4)
  3. k = 100 * (c - l) / (h - l)

并且滚动装置可以通过以下方式找到:

  1. pd.rolling_mean(k, 3)

此外,如果你对这些东西感兴趣,你可以去看看Pandas和计量经济学。

px9o7tmv

px9o7tmv3#

我认为我所做的是正确的,请谁来核实一下:

  1. def simple_moving_average(prices, period=26):
  2. """
  3. :param df: pandas dataframe object
  4. :param period: periods for calculating SMA
  5. :return: a pandas series
  6. """
  7. weights = np.repeat(1.0, period)/period
  8. sma = np.convolve(prices, weights, 'valid')
  9. return sma
  10. def fast_stochastic(lowp, highp, closep, period=14, smoothing=3):
  11. """ calculate slow stochastic
  12. Fast stochastic calculation
  13. %K = (Current Close - Lowest Low)/(Highest High - Lowest Low) * 100
  14. %D = 3-day SMA of %K
  15. """
  16. low_min = pd.rolling_min(lowp, period)
  17. high_max = pd.rolling_max(highp, period)
  18. k_fast = 100 * (closep - low_min)/(high_max - low_min)
  19. k_fast = k_fast.dropna()
  20. d_fast = simple_moving_average(k_fast, smoothing)
  21. return k_fast, d_fast
  22. def slow_stochastic(lowp, highp, closep, period=14, smoothing=3):
  23. """ calculate slow stochastic
  24. Slow stochastic calculation
  25. %K = %D of fast stochastic
  26. %D = 3-day SMA of %K
  27. """
  28. k_fast, d_fast = fast_stochastic(lowp, highp, closep, period=period, smoothing=smoothing)
  29. # D in fast stochastic is K in slow stochastic
  30. k_slow = d_fast
  31. d_slow = simple_moving_average(k_slow, smoothing)
  32. return k_slow, d_slow
展开查看全部

相关问题