code: def stoch(df, window=14, d=3, k=3, fast=False):
      
  
      my_df = pd.DataFrame(index=df.index)
  
      my_df['rolling_max'] = df['high'].rolling(window).max()
      my_df['rolling_min'] = df['low'].rolling(window).min()
  
      my_df['fast_k'] = 100 * (df['close'] - my_df['rolling_min'])/(my_df['rolling_max'] - my_df['rolling_min'])
      my_df['fast_d'] = my_df['fast_k'].rolling(d).mean()
  
      if fast:
          return my_df.loc[:, ['fast_k', 'fast_d']]
  
      my_df['slow_k'] = my_df['fast_k'].rolling(k).mean()
      my_df['slow_d'] = my_df['slow_k'].rolling(d).mean()
  
      return my_df.loc[:, ['slow_k', 'slow_d']]
docs: compute the n period relative strength indicator
      http://excelta.blogspot.co.il/2013/09/stochastic-oscillator-technical.html