I cannot make sense of the parameters below... what must I adjust to get a %K that spans a 14 day period and a %D that's a 3 period moving average of my %K ?
slowk, slowd = talib.STOCH(high[stock], low[stock], close[stock], fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
Quantopian provides this sample code demonstrating usage of the TAlib function:
# This algorithm uses talib's STOCH function to determine entry and exit points. # When the stochastic oscillator dips below 10, the stock is determined to be oversold # and a long position is opened. The position is exited when the indicator rises above 90 # because the stock is thought to be overbought. # Because this algorithm uses the history function, it will only run in minute mode. # We will constrain the trading to once per day at market open in this example. import talib import numpy as np import pandas as pd # Setup our variables def initialize(context): context.stocks = symbols('SPY', 'AAPL', 'GLD', 'AMZN') # Set the percent of the account to be invested per stock context.long_pct_per_stock = 1.0 / len(context.stocks) # Create a variable to track the date change context.date = None def handle_data(context, data): todays_date = get_datetime().date() # Do nothing unless the date has changed if todays_date == context.date: return # Set the new date context.date = todays_date # Load historical data for the stocks high = history(30, '1d', 'high') low = history(30, '1d', 'low') close = history(30, '1d', 'close_price') # Iterate over our list of stocks for stock in context.stocks: current_position = context.portfolio.positions[stock].amount slowk, slowd = talib.STOCH(high[stock], low[stock], close[stock], fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0) # get the most recent value slowk = slowk[-1] slowd = slowd[-1] # If either the slowk or slowd are less than 10, the stock is # 'oversold,' a long position is opened if there are no shares # in the portfolio. if slowk < 10 or slowd < 10 and current_position <= 0: order_target_percent(stock, context.long_pct_per_stock) # If either the slowk or slowd are larger than 90, the stock is # 'overbought' and the position is closed. elif slowk > 90 or slowd > 90 and current_position >= 0: order_target(stock, 0)