Today, we are updating the return types from the TALib API. This change could potentially break algorithms that use TALib functions that have named outputs, e.g. the MACD function, if the algorithm was indexing into the result with the index number. TALib functions that return just one value should be unaffected by this change.
TALib functions that returned multiple values are now identified with the output names. We are hoping this will improve the ease of use functions that produce multiple values, since the output names will be immediately available while working with the algorithm, instead of having to keep documentation of the TALib function up to cross reference which index maps to each value.
Previously, to get the 'macdsignal' value from the MACD function, an algorithm would have to do:
macd_result = my_macd(data)
record(macdsignal=macd_result[context.my_sid][1]
With the updated API, the way to get the macdsignal will be:
macd_result = my_macd(data)
record(macdsignal=macd_result[context.my_sid]['macdsignal']
On a technical level, the return types are changing from dictionaries to pandas data types, depending on the number of return values.
- For functions with multiple return values, instead of a dictionary with keys of sids and values of tuples, the result is now a pandas DataFrame, where the columns are the sids and the index is the output names.
- For functions with a single return value, instead of a dictionary with keys of sids that point to a float value, the result is now a pandas Series, where the index is the sids.