Python Pandas中慢速随机实现

Viv*_*Jha 3 numpy matplotlib pandas

我是熊猫新手,我需要一个计算慢速随机的函数.我认为它应该没有太大困难,但我不熟悉pandas中的高级API.

我的数据框包含"开盘价","高价","低价"和"收盘价",并按日期编制索引.这么多信息应该足以计算慢随机.

Following is the formula for calculating Slow Stochastic:
%K = 100[(C - L14)/(H14 - L14)] 

C = the most recent closing price 
L14 = the low of the 14 previous trading sessions 
H14 = the highest price traded during the same 14-day period.

%D = 3-period moving average of %K 
Run Code Online (Sandbox Code Playgroud)

小智 8

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

def stochastics( dataframe, low, high, close, k, d ):
    """
    Fast stochastic calculation
    %K = (Current Close - Lowest Low)/
    (Highest High - Lowest Low) * 100
    %D = 3-day SMA of %K

    Slow stochastic calculation
    %K = %D of fast stochastic
    %D = 3-day SMA of %K

    When %K crosses above %D, buy signal 
    When the %K crosses below %D, sell signal
    """

    df = dataframe.copy()

    # Set minimum low and maximum high of the k stoch
    low_min  = df[low].rolling( window = k ).min()
    high_max = df[high].rolling( window = k ).max()

    # Fast Stochastic
    df['k_fast'] = 100 * (df[close] - low_min)/(high_max - low_min)
    df['d_fast'] = df['k_fast'].rolling(window = d).mean()

    # Slow Stochastic
    df['k_slow'] = df["d_fast"]
    df['d_slow'] = df['k_slow'].rolling(window = d).mean()

    return df


stochs = stochastics( df, 'Low', 'High', 'Close', 14, 3 )
slow_k = stochs['k_slow'].values
fast_k = stochs['k_fats'].values
Run Code Online (Sandbox Code Playgroud)


Ami*_*ory 5

您可以使用该rolling_*系列函数执行此操作.

例如,100[(C - L14)/(H14 - L14)]可以通过以下方式找到:

import pandas as pd

l, h = pd.rolling_min(c, 4), pd.rolling_max(c, 4)
k = 100 * (c - l) / (h - l) 
Run Code Online (Sandbox Code Playgroud)

滚动平均值可以通过以下方式找到:

pd.rolling_mean(k, 3)
Run Code Online (Sandbox Code Playgroud)

此外,如果你喜欢这些东西,你可以查看大熊猫和计量经济学.

  • 这些是熊猫功能不是numpy(例如使用pd) (2认同)