mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-08-12 12:20:27 +08:00
2885 lines
207 KiB
Plaintext
2885 lines
207 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Pandas TA ([pandas_ta](https://github.com/twopirllc/pandas-ta)) Strategies for Custom Technical Analysis\n",
|
||
"\n",
|
||
"## Topics\n",
|
||
"- What is a Pandas TA Strategy?\n",
|
||
" - Builtin Strategies: __AllStrategy__ and __CommonStrategy__\n",
|
||
" - Creating Strategies\n",
|
||
"- Watchlist Class\n",
|
||
" - Strategy Management and Execution\n",
|
||
" - **NOTE:** The **watchlist** module is independent of Pandas TA. To easily use it, copy it from your local pandas_ta installation directory into your project directory.\n",
|
||
"- Indicator Composition/Chaining for more Complex Strategies\n",
|
||
" - Comprehensive Example: _MACD and RSI Momo with BBANDS and SMAs 50 & 200 and Cumulative Log Returns_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n",
|
||
"Pandas TA v0.2.74b0\n",
|
||
"To install the Latest Version:\n",
|
||
"$ pip install -U git+https://github.com/twopirllc/pandas-ta\n",
|
||
"\n",
|
||
"Populating the interactive namespace from numpy and matplotlib\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"%matplotlib inline\n",
|
||
"import datetime as dt\n",
|
||
"\n",
|
||
"from tqdm import tqdm\n",
|
||
"\n",
|
||
"import pandas as pd\n",
|
||
"import pandas_ta as ta\n",
|
||
"from alphaVantageAPI.alphavantage import AlphaVantage # pip install alphaVantage-api\n",
|
||
"\n",
|
||
"from watchlist import Watchlist # Is this failing? If so, copy it locally. See above.\n",
|
||
"\n",
|
||
"print(f\"\\nPandas TA v{ta.version}\\nTo install the Latest Version:\\n$ pip install -U git+https://github.com/twopirllc/pandas-ta\\n\")\n",
|
||
"%pylab inline"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# What is a Pandas TA Strategy?\n",
|
||
"A _Strategy_ is a simple way to name and group your favorite TA indicators. Technically, a _Strategy_ is a simple Data Class to contain list of indicators and their parameters. __Note__: _Strategy_ is experimental and subject to change. Pandas TA comes with two basic Strategies: __AllStrategy__ and __CommonStrategy__.\n",
|
||
"\n",
|
||
"## Strategy Requirements:\n",
|
||
"- _name_: Some short memorable string. _Note_: Case-insensitive \"All\" is reserved.\n",
|
||
"- _ta_: A list of dicts containing keyword arguments to identify the indicator and the indicator's arguments\n",
|
||
"\n",
|
||
"## Optional Requirements:\n",
|
||
"- _description_: A more detailed description of what the Strategy tries to capture. Default: None\n",
|
||
"- _created_: At datetime string of when it was created. Default: Automatically generated.\n",
|
||
"\n",
|
||
"### Things to note:\n",
|
||
"- A Strategy will __fail__ when consumed by Pandas TA if there is no {\"kind\": \"indicator name\"} attribute."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Builtin Examples"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### All\n",
|
||
"Default Values"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"name = All\n",
|
||
"description = All the indicators with their default settings. Pandas TA default.\n",
|
||
"created = Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)\n",
|
||
"ta = None\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"AllStrategy = ta.AllStrategy\n",
|
||
"print(\"name =\", AllStrategy.name)\n",
|
||
"print(\"description =\", AllStrategy.description)\n",
|
||
"print(\"created =\", AllStrategy.created)\n",
|
||
"print(\"ta =\", AllStrategy.ta)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Common\n",
|
||
"Default Values"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"name = Common Price and Volume SMAs\n",
|
||
"description = Common Price SMAs: 10, 20, 50, 200 and Volume SMA: 20.\n",
|
||
"created = Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)\n",
|
||
"ta = [{'kind': 'sma', 'length': 10}, {'kind': 'sma', 'length': 20}, {'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}, {'kind': 'sma', 'close': 'volume', 'length': 20, 'prefix': 'VOL'}]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"CommonStrategy = ta.CommonStrategy\n",
|
||
"print(\"name =\", CommonStrategy.name)\n",
|
||
"print(\"description =\", CommonStrategy.description)\n",
|
||
"print(\"created =\", CommonStrategy.created)\n",
|
||
"print(\"ta =\", CommonStrategy.ta)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Creating Strategies\n",
|
||
"Strategies require a **name** and an array of dicts containing the \"kind\" of indicator (\"sma\") and other potential parameters for **ta**."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Simple Strategy A"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='A', ta=[{'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}], description='TA Description', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"custom_a = ta.Strategy(name=\"A\", ta=[{\"kind\": \"sma\", \"length\": 50}, {\"kind\": \"sma\", \"length\": 200}])\n",
|
||
"custom_a"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Simple Strategy B"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='B', ta=[{'kind': 'ema', 'length': 8}, {'kind': 'ema', 'length': 21}, {'kind': 'log_return', 'cumulative': True}, {'kind': 'rsi'}, {'kind': 'supertrend'}], description='TA Description', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"custom_b = ta.Strategy(name=\"B\", ta=[{\"kind\": \"ema\", \"length\": 8}, {\"kind\": \"ema\", \"length\": 21}, {\"kind\": \"log_return\", \"cumulative\": True}, {\"kind\": \"rsi\"}, {\"kind\": \"supertrend\"}])\n",
|
||
"custom_b"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Bad Strategy. (Misspelled Indicator)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Runtime Failure', ta=[{'kind': 'percet_return'}], description='TA Description', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Misspelled indicator, will fail later when ran with Pandas TA\n",
|
||
"custom_run_failure = ta.Strategy(name=\"Runtime Failure\", ta=[{\"kind\": \"percet_return\"}])\n",
|
||
"custom_run_failure"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Strategy Management and Execution with _Watchlist_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Initialize AlphaVantage Data Source"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AlphaVantage(\n",
|
||
" end_point:str = https://www.alphavantage.co/query,\n",
|
||
" api_key:str = YOUR API KEY,\n",
|
||
" export:bool = True,\n",
|
||
" export_path:str = .,\n",
|
||
" output_size:str = full,\n",
|
||
" output:str = csv,\n",
|
||
" datatype:str = json,\n",
|
||
" clean:bool = True,\n",
|
||
" proxy:dict = {}\n",
|
||
")"
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"AV = AlphaVantage(\n",
|
||
" api_key=\"YOUR API KEY\", premium=False,\n",
|
||
" output_size='full', clean=True,\n",
|
||
" export_path=\".\", export=True\n",
|
||
")\n",
|
||
"AV"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Create Watchlist and set it's 'ds' to AlphaVantage"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"data_source = \"av\" # Default\n",
|
||
"# data_source = \"yahoo\"\n",
|
||
"watch = Watchlist([\"SPY\", \"IWM\"], ds_name=data_source, timed=False)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Info about the Watchlist. Note, the default Strategy is \"All\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Watch(name='Watch: SPY, IWM', ds_name='av', tickers[2]='SPY, IWM', tf='D', strategy[5]='Common Price and Volume SMAs')"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Help about Watchlist"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Help on class Watchlist in module watchlist:\n",
|
||
"\n",
|
||
"class Watchlist(builtins.object)\n",
|
||
" | Watchlist(tickers: list, tf: str = None, name: str = None, strategy: pandas_ta.core.Strategy = None, ds_name: str = 'av', **kwargs)\n",
|
||
" | \n",
|
||
" | # Watchlist Class (** This is subject to change! **)\n",
|
||
" | A simple Class to load/download financial market data and automatically\n",
|
||
" | apply Technical Analysis indicators with a Pandas TA Strategy.\n",
|
||
" | \n",
|
||
" | Default Strategy: pandas_ta.CommonStrategy\n",
|
||
" | \n",
|
||
" | ## Package Support:\n",
|
||
" | ### Data Source (Default: AlphaVantage)\n",
|
||
" | - AlphaVantage (pip install alphaVantage-api).\n",
|
||
" | - Python Binance (pip install python-binance). # Future Support\n",
|
||
" | - Yahoo Finance (pip install yfinance). # Almost Supported\n",
|
||
" | \n",
|
||
" | # Technical Analysis:\n",
|
||
" | - Pandas TA (pip install pandas_ta)\n",
|
||
" | \n",
|
||
" | ## Required Arguments:\n",
|
||
" | - tickers: A list of strings containing tickers. Example: [\"SPY\", \"AAPL\"]\n",
|
||
" | \n",
|
||
" | Methods defined here:\n",
|
||
" | \n",
|
||
" | __init__(self, tickers: list, tf: str = None, name: str = None, strategy: pandas_ta.core.Strategy = None, ds_name: str = 'av', **kwargs)\n",
|
||
" | Initialize self. See help(type(self)) for accurate signature.\n",
|
||
" | \n",
|
||
" | __repr__(self) -> str\n",
|
||
" | Return repr(self).\n",
|
||
" | \n",
|
||
" | indicators(self, *args, **kwargs) -> <built-in function any>\n",
|
||
" | Returns the list of indicators that are available with Pandas Ta.\n",
|
||
" | \n",
|
||
" | load(self, ticker: str = None, tf: str = None, index: str = 'date', drop: list = [], plot: bool = False, **kwargs) -> pandas.core.frame.DataFrame\n",
|
||
" | Loads or Downloads (if a local csv does not exist) the data from the\n",
|
||
" | Data Source. When successful, it returns a Data Frame for the requested\n",
|
||
" | ticker. If no tickers are given, it loads all the tickers.\n",
|
||
" | \n",
|
||
" | ----------------------------------------------------------------------\n",
|
||
" | Data descriptors defined here:\n",
|
||
" | \n",
|
||
" | __dict__\n",
|
||
" | dictionary for instance variables (if defined)\n",
|
||
" | \n",
|
||
" | __weakref__\n",
|
||
" | list of weak references to the object (if defined)\n",
|
||
" | \n",
|
||
" | data\n",
|
||
" | When not None, it contains a dictionary of DataFrames keyed by ticker. data = {\"SPY\": pd.DataFrame, ...}\n",
|
||
" | \n",
|
||
" | name\n",
|
||
" | The name of the Watchlist. Default: \"Watchlist: {Watchlist.tickers}\".\n",
|
||
" | \n",
|
||
" | strategy\n",
|
||
" | Sets a valid Strategy. Default: pandas_ta.CommonStrategy\n",
|
||
" | \n",
|
||
" | tf\n",
|
||
" | Alias for timeframe. Default: 'D'\n",
|
||
" | \n",
|
||
" | tickers\n",
|
||
" | tickers\n",
|
||
" | \n",
|
||
" | If a string, it it converted to a list. Example: \"AAPL\" -> [\"AAPL\"]\n",
|
||
" | * Does not accept, comma seperated strings.\n",
|
||
" | If a list, checks if it is a list of strings.\n",
|
||
" | \n",
|
||
" | verbose\n",
|
||
" | Toggle the verbose property. Default: False\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"help(Watchlist)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Default Strategy is \"Common\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[!] Loading All: SPY, IWM\n",
|
||
"[+] Downloading[av]: SPY[D]\n",
|
||
"[+] Strategy: Common Price and Volume SMAs\n",
|
||
"[i] Indicator arguments: {'timed': False, 'append': True}\n",
|
||
"[i] Multiprocessing 5 indicators with 7 chunks and 8/8 cpus.\n",
|
||
"[i] Total indicators: 5\n",
|
||
"[i] Columns added: 5\n",
|
||
"[i] Last Run: Wednesday May 19, 2021, NYSE: 7:22:10, Local: 11:22:10 PDT, Day 139/365 (38.00%)\n",
|
||
"[+] Downloading[av]: IWM[D]\n",
|
||
"[+] Strategy: Common Price and Volume SMAs\n",
|
||
"[i] Indicator arguments: {'timed': False, 'append': True}\n",
|
||
"[i] Multiprocessing 5 indicators with 7 chunks and 8/8 cpus.\n",
|
||
"[i] Total indicators: 5\n",
|
||
"[i] Columns added: 5\n",
|
||
"[i] Last Run: Wednesday May 19, 2021, NYSE: 7:22:28, Local: 11:22:28 PDT, Day 139/365 (38.00%)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# No arguments loads all the tickers and applies the Strategy to each ticker.\n",
|
||
"# The result can be accessed with Watchlist's 'data' property which returns a \n",
|
||
"# dictionary keyed by ticker and DataFrames as values \n",
|
||
"watch.load(verbose=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'SPY: (5421, 10), IWM: (5277, 10)'"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\", \".join([f\"{t}: {d.shape}\" for t,d in watch.data.items()])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_10</th>\n",
|
||
" <th>SMA_20</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" <th>VOL_SMA_20</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>411.2300</td>\n",
|
||
" <td>412.5900</td>\n",
|
||
" <td>404.0000</td>\n",
|
||
" <td>405.4100</td>\n",
|
||
" <td>134811046.0</td>\n",
|
||
" <td>416.568</td>\n",
|
||
" <td>416.1900</td>\n",
|
||
" <td>403.9984</td>\n",
|
||
" <td>368.48120</td>\n",
|
||
" <td>77217590.60</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>407.0700</td>\n",
|
||
" <td>412.3500</td>\n",
|
||
" <td>407.0200</td>\n",
|
||
" <td>410.2800</td>\n",
|
||
" <td>106393963.0</td>\n",
|
||
" <td>415.590</td>\n",
|
||
" <td>415.9105</td>\n",
|
||
" <td>404.5756</td>\n",
|
||
" <td>368.92675</td>\n",
|
||
" <td>79525796.65</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>413.2100</td>\n",
|
||
" <td>417.4900</td>\n",
|
||
" <td>413.1800</td>\n",
|
||
" <td>416.5800</td>\n",
|
||
" <td>82201629.0</td>\n",
|
||
" <td>415.518</td>\n",
|
||
" <td>415.8765</td>\n",
|
||
" <td>405.3732</td>\n",
|
||
" <td>369.38405</td>\n",
|
||
" <td>79534014.20</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>415.3900</td>\n",
|
||
" <td>416.3900</td>\n",
|
||
" <td>413.3600</td>\n",
|
||
" <td>415.5200</td>\n",
|
||
" <td>65129221.0</td>\n",
|
||
" <td>415.250</td>\n",
|
||
" <td>415.8920</td>\n",
|
||
" <td>406.0110</td>\n",
|
||
" <td>369.84185</td>\n",
|
||
" <td>78865550.45</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>415.8000</td>\n",
|
||
" <td>416.0600</td>\n",
|
||
" <td>411.7700</td>\n",
|
||
" <td>411.9400</td>\n",
|
||
" <td>59810238.0</td>\n",
|
||
" <td>414.882</td>\n",
|
||
" <td>415.8805</td>\n",
|
||
" <td>406.6154</td>\n",
|
||
" <td>370.26895</td>\n",
|
||
" <td>77763470.95</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5421 rows × 10 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_10 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-05-12 411.2300 412.5900 404.0000 405.4100 134811046.0 416.568 \n",
|
||
"2021-05-13 407.0700 412.3500 407.0200 410.2800 106393963.0 415.590 \n",
|
||
"2021-05-14 413.2100 417.4900 413.1800 416.5800 82201629.0 415.518 \n",
|
||
"2021-05-17 415.3900 416.3900 413.3600 415.5200 65129221.0 415.250 \n",
|
||
"2021-05-18 415.8000 416.0600 411.7700 411.9400 59810238.0 414.882 \n",
|
||
"\n",
|
||
" SMA_20 SMA_50 SMA_200 VOL_SMA_20 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN NaN \n",
|
||
"1999-11-05 NaN NaN NaN NaN \n",
|
||
"... ... ... ... ... \n",
|
||
"2021-05-12 416.1900 403.9984 368.48120 77217590.60 \n",
|
||
"2021-05-13 415.9105 404.5756 368.92675 79525796.65 \n",
|
||
"2021-05-14 415.8765 405.3732 369.38405 79534014.20 \n",
|
||
"2021-05-17 415.8920 406.0110 369.84185 78865550.45 \n",
|
||
"2021-05-18 415.8805 406.6154 370.26895 77763470.95 \n",
|
||
"\n",
|
||
"[5421 rows x 10 columns]"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.data[\"SPY\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_10</th>\n",
|
||
" <th>SMA_20</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" <th>VOL_SMA_20</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>411.2300</td>\n",
|
||
" <td>412.5900</td>\n",
|
||
" <td>404.0000</td>\n",
|
||
" <td>405.4100</td>\n",
|
||
" <td>134811046.0</td>\n",
|
||
" <td>416.568</td>\n",
|
||
" <td>416.1900</td>\n",
|
||
" <td>403.9984</td>\n",
|
||
" <td>368.48120</td>\n",
|
||
" <td>77217590.60</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>407.0700</td>\n",
|
||
" <td>412.3500</td>\n",
|
||
" <td>407.0200</td>\n",
|
||
" <td>410.2800</td>\n",
|
||
" <td>106393963.0</td>\n",
|
||
" <td>415.590</td>\n",
|
||
" <td>415.9105</td>\n",
|
||
" <td>404.5756</td>\n",
|
||
" <td>368.92675</td>\n",
|
||
" <td>79525796.65</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>413.2100</td>\n",
|
||
" <td>417.4900</td>\n",
|
||
" <td>413.1800</td>\n",
|
||
" <td>416.5800</td>\n",
|
||
" <td>82201629.0</td>\n",
|
||
" <td>415.518</td>\n",
|
||
" <td>415.8765</td>\n",
|
||
" <td>405.3732</td>\n",
|
||
" <td>369.38405</td>\n",
|
||
" <td>79534014.20</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>415.3900</td>\n",
|
||
" <td>416.3900</td>\n",
|
||
" <td>413.3600</td>\n",
|
||
" <td>415.5200</td>\n",
|
||
" <td>65129221.0</td>\n",
|
||
" <td>415.250</td>\n",
|
||
" <td>415.8920</td>\n",
|
||
" <td>406.0110</td>\n",
|
||
" <td>369.84185</td>\n",
|
||
" <td>78865550.45</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>415.8000</td>\n",
|
||
" <td>416.0600</td>\n",
|
||
" <td>411.7700</td>\n",
|
||
" <td>411.9400</td>\n",
|
||
" <td>59810238.0</td>\n",
|
||
" <td>414.882</td>\n",
|
||
" <td>415.8805</td>\n",
|
||
" <td>406.6154</td>\n",
|
||
" <td>370.26895</td>\n",
|
||
" <td>77763470.95</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5421 rows × 10 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_10 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-05-12 411.2300 412.5900 404.0000 405.4100 134811046.0 416.568 \n",
|
||
"2021-05-13 407.0700 412.3500 407.0200 410.2800 106393963.0 415.590 \n",
|
||
"2021-05-14 413.2100 417.4900 413.1800 416.5800 82201629.0 415.518 \n",
|
||
"2021-05-17 415.3900 416.3900 413.3600 415.5200 65129221.0 415.250 \n",
|
||
"2021-05-18 415.8000 416.0600 411.7700 411.9400 59810238.0 414.882 \n",
|
||
"\n",
|
||
" SMA_20 SMA_50 SMA_200 VOL_SMA_20 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN NaN \n",
|
||
"1999-11-05 NaN NaN NaN NaN \n",
|
||
"... ... ... ... ... \n",
|
||
"2021-05-12 416.1900 403.9984 368.48120 77217590.60 \n",
|
||
"2021-05-13 415.9105 404.5756 368.92675 79525796.65 \n",
|
||
"2021-05-14 415.8765 405.3732 369.38405 79534014.20 \n",
|
||
"2021-05-17 415.8920 406.0110 369.84185 78865550.45 \n",
|
||
"2021-05-18 415.8805 406.6154 370.26895 77763470.95 \n",
|
||
"\n",
|
||
"[5421 rows x 10 columns]"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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aMXXXw/jx0Pbtt6OSkREREREahklsx6W78rnhm9uICMvg2u6XMMHwz7Az8f9Z886cCRxTXI/F063Uyi4MQycVTUS2VWrnKbFAD//DAMHejceERERERGptZTMetjrv73O2oNraRXVincvfddJZNO3w4KrIPH3P+/gF+bUxNbt6TwaXQSB9So/8GPl58MNNzjPd9yhRFZERERERLxKyawH7U/fz4S5EwB49cJXCfILggNzYcFfnf6wfuFQt4eTtEa5nyPaVo05Y4/14IOwbBk0a3akdlZERERERMRLlMx60AP/e4DUnFQuaXMJQ9oOgT0zYMFIsPnOgE79PoWAOt4O88Reew1efBH8/JzRi8PDvR2RiIiIiIjUclWwCrBmKHAV4LIugvyCePXCVyH+B1h4hZPItrsHBnxTPRLZmTNh3Djn9XvvwaBB3oxGREREREQEUDLrMb4+vvxn+H/YctcWWufHw/zh4MpzEtkeL4OPr7dDPLEDB2DsWLAWnnoKRo/2dkQiIiIiIiKAklmPa2KyYd4wKMiG1jc5iawx3g6rbO64AxIT4fzznXlkRUREREREqggls56UkwhzL4HcRGh0CfSeXH0S2S+/hGnTICwM3nmn+sQtIiIiIiK1gpJZT3HlOaMWp22GyK7Q/7Pq0bQYIC0N7rrLef3cc9C8uXfjEREREREROYaSWU8xfhBzLgQ3hIHfgn81GgF40iSnv2yfPnDLLd6ORkRERERE5E+UzHqKMdD5n3DJBght6u1oym73bmcaHoCXXwYfFREREREREal6lKl4WnWYfqeQtfDgg5CdDVdeCWee6e2IRERERERESqRkVhxLl8LAgfDZZxAYCM8+6+2IREREREREjkvJbG23ZQuMHAl9+8L8+VC/PnzwAbRo4e3IREREREREjsvP2wGIlxw8CE88AW+9Bfn5EBwM994L998PdapR02gREREREamVlMzWRh99BHfcAenpzgBPN9wAjz8OjRt7OzIREREREZEyUTJb28THO9PtZGfDJZc4fWM7d/Z2VCIiIiIiIuWiZLa2efppJ5EdPhy+/trb0YiIiIiIiFSIBoCqTbZvh7ffdubAfeopb0cjIiIiIiJSYUpma5PHH3cGexo9Gjp29HY0IiIiIiIiFaZktrZYswY+/hj8/ODRR70djYiIiIiIyElRMltb/N//gcsFt94KrVp5OxoREREREZGTomS2Npg923lERKhWVkREREREagQlszVdQYFTKwvwz39C/frejUdEREREROQUUDJb002b5vSXbdYM7r7b29GIiIiIiIicEh5NZo0xTY0xc4wx640x64wx97iXn26MWWKMWWmM+cMYc4Z7uTHGvGaM2WqMWW2M6eHJ+GqFf/3Leb7/fggK8m4sIiIiIiIip4ifh4+fD/zdWrvcGBMOLDPG/AQ8Bzxurf3eGHOx+/0g4CKgjfvRB5jsfpaKWLkSFiyA8HC49lpvRyMiIiIiInLKeLRm1lq7z1q73P06DdgANAYsEOHerA4Q7359GfCRdSwBIo0xDT0ZY4327387z2PGOAmtiIiIiIhIDWGstZVzImNaAPOAzjgJ7WzA4CTU/ay1u4wx3wLPWmsXuPf5GXjAWvvHMce6GbgZIDo6uucXX3xRKZ+hOvFLTeXMkSPxzc1l6UcfkdW0qbdD8or09HTCwsK8HYZUcSonUhqVDymNyocUp/IgpVH5qJhzzjlnmbW2V0nrPN3MGABjTBgwDRhnrU01xjwF3GutnWaMuQKYApxX1uNZa98G3gZo166dHTRokAeiruYmTYLcXLjgAvqMHu3taLxm7ty5qHzIiaicSGlUPqQ0Kh9SnMqDlEbl49Tz+GjGxhh/nET2E2vt1+7F1wGFr78EznC/jgOKVyE2cS+T8sjKgpdfdl6PG+fVUERERERERDzB06MZG5xa1w3W2peKrYoHBrpfDwa2uF9/A1zrHtW4L5Bird3nyRhrpPffhwMHoEcPuOACb0cjIiIiIiJyynm6mXF/YDSwxhiz0r3sIeAm4FVjjB+Qjbv/K/AdcDGwFcgExng4vponLw+ee855/dBDYIx34xEREREREfEAjyaz7oGcjpdN9Sxhewvc4cmYarz334ddu6B9exg+3NvRiIiIiIiIeITH+8xKJdm9G0aNgltucd6PHw8++ucVEREREZGaqVJGMxYPyshwmhU//7wz8FNgIDzwAPztb96OTERERERExGOUzFZXLhd89pmTuMa5B3y+4gpnSp4WLbwamoiIiIiIiKcpma2O4uLgr3+FJUuc9z17wiuvwFlneTUsERERERGRyqJOldXR7bc7iWxsLLz3Hvz2mxJZERERERGpVVQzW9388AN88w2EhcGyZdCokbcjEhERERERqXSqma1OcnPhnnuc1xMmKJEVEREREZFaS8lsdfLSS7B5M7RteySpFRERERERqYWUzFYXS5bAI484r//1LwgI8G48IiIiIiIiXqRktjo4fNiZdic/H+67D/7yF29HJCIiIiIi4lVKZqs6a2HsWNizB/r2hWef9XZEIiIiIiIiXqdktqqbNcsZvbhOHfj8c/D393ZEIiIiIiIiXqdktirLyjoy0NOTT0KzZt6NR0REREREpIpQMltVWQvPPAM7d0LXrnDbbd6OSEREREREpMrw83YAArhcsH07LFsGy5cfeSQmOuv//W/w0z+ViIiIiIhIIWVI3rJgAUyf7iSwK1ZAauqft6lfH+69F84+u/LjExERERERqcKUzHrDjz/CRRc5NbKFGjaEnj2hR48jjyZNwBjvxSkiIiIiIlJFKZmtbNu3w1VXOYns9dfDyJHQvbuTzIqIiIiIiEiZKJmtTNu3w/DhkJQEQ4bAlCngozG4REREREREykvJrKdlZzv9Yj//HN58E/LyoG1b+PhjJbIiIiIiIiIVpGTWk0aMgFmznAQWnP6v110HEydCnTrejU1ERERERKQaUzLrSf7+kJ8PXbpAv35w++3OnLEiIiIiIiJyUpTMetLzz8Nbb6kWVkRERERE5BRTMutJTZt6OwIREREREZEaSSMQiYiIiIiISLWjZFZERERERESqHSWzIiIiIiIiUu0omRUREREREZFqR8msiIiIiIiIVDtKZkVERERERKTaUTIrIiIiIiIi1Y6SWREREREREal2lMyKiIiIiIhItaNkVkRERERERKodJbMiIiIiIiJS7SiZFRERERERkWpHyayIiIiIiIhUO0pmRUREREREpNpRMisiIiIiIiLVjpJZERERERERqXaUzIqIiIiIiEi1o2RWREREREREqh0lsyIiIiIiIlLtGGutt2M4KcaYNGCTt+OQKqs+kODtIKTKUzmR0qh8SGlUPqQ4lQcpjcpHxTS31kaXtMKvsiPxgE3W2l7eDkKqJmPMHyofciIqJ1IalQ8pjcqHFKfyIKVR+Tj11MxYREREREREqh0lsyIiIiIiIlLt1IRk9m1vByBVmsqHlIXKiZRG5UNKo/Ihxak8SGlUPk6xaj8AlIiIiIiIiNQ+NaFmVkRERERERGoZJbMiUisYY4y3YxARkepP3yciVUe1SGaNMY29HYNUXcaYS40xrb0dh4iIiNQK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\n",
|
||
"text/plain": [
|
||
"<Figure size 1152x720 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.load(\"SPY\", plot=True, mas=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Easy to swap Strategies and run them"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Running Simple Strategy A"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='A', ta=[{'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}], description='TA Description', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Load custom_a into Watchlist and verify\n",
|
||
"watch.strategy = custom_a\n",
|
||
"# watch.debug = True\n",
|
||
"watch.strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded IWM[D]: IWM_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2000-05-26</th>\n",
|
||
" <td>91.06</td>\n",
|
||
" <td>91.44</td>\n",
|
||
" <td>90.630</td>\n",
|
||
" <td>91.44</td>\n",
|
||
" <td>37400.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-05-30</th>\n",
|
||
" <td>92.75</td>\n",
|
||
" <td>94.81</td>\n",
|
||
" <td>92.750</td>\n",
|
||
" <td>94.81</td>\n",
|
||
" <td>28800.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-05-31</th>\n",
|
||
" <td>95.13</td>\n",
|
||
" <td>96.38</td>\n",
|
||
" <td>95.130</td>\n",
|
||
" <td>95.75</td>\n",
|
||
" <td>18000.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-06-01</th>\n",
|
||
" <td>97.11</td>\n",
|
||
" <td>97.31</td>\n",
|
||
" <td>97.110</td>\n",
|
||
" <td>97.31</td>\n",
|
||
" <td>3500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-06-02</th>\n",
|
||
" <td>101.70</td>\n",
|
||
" <td>102.40</td>\n",
|
||
" <td>101.700</td>\n",
|
||
" <td>102.40</td>\n",
|
||
" <td>14700.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>217.10</td>\n",
|
||
" <td>218.77</td>\n",
|
||
" <td>211.540</td>\n",
|
||
" <td>211.85</td>\n",
|
||
" <td>42113404.0</td>\n",
|
||
" <td>223.0168</td>\n",
|
||
" <td>190.10635</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>213.31</td>\n",
|
||
" <td>217.44</td>\n",
|
||
" <td>211.800</td>\n",
|
||
" <td>215.75</td>\n",
|
||
" <td>37739892.0</td>\n",
|
||
" <td>222.9454</td>\n",
|
||
" <td>190.45445</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>217.94</td>\n",
|
||
" <td>221.41</td>\n",
|
||
" <td>215.678</td>\n",
|
||
" <td>221.02</td>\n",
|
||
" <td>25070399.0</td>\n",
|
||
" <td>223.1020</td>\n",
|
||
" <td>190.81280</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>219.78</td>\n",
|
||
" <td>221.39</td>\n",
|
||
" <td>217.900</td>\n",
|
||
" <td>221.32</td>\n",
|
||
" <td>20048545.0</td>\n",
|
||
" <td>223.1742</td>\n",
|
||
" <td>191.17560</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>221.39</td>\n",
|
||
" <td>223.24</td>\n",
|
||
" <td>219.470</td>\n",
|
||
" <td>219.64</td>\n",
|
||
" <td>24564503.0</td>\n",
|
||
" <td>223.1922</td>\n",
|
||
" <td>191.53700</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5277 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_50 SMA_200\n",
|
||
"date \n",
|
||
"2000-05-26 91.06 91.44 90.630 91.44 37400.0 NaN NaN\n",
|
||
"2000-05-30 92.75 94.81 92.750 94.81 28800.0 NaN NaN\n",
|
||
"2000-05-31 95.13 96.38 95.130 95.75 18000.0 NaN NaN\n",
|
||
"2000-06-01 97.11 97.31 97.110 97.31 3500.0 NaN NaN\n",
|
||
"2000-06-02 101.70 102.40 101.700 102.40 14700.0 NaN NaN\n",
|
||
"... ... ... ... ... ... ... ...\n",
|
||
"2021-05-12 217.10 218.77 211.540 211.85 42113404.0 223.0168 190.10635\n",
|
||
"2021-05-13 213.31 217.44 211.800 215.75 37739892.0 222.9454 190.45445\n",
|
||
"2021-05-14 217.94 221.41 215.678 221.02 25070399.0 223.1020 190.81280\n",
|
||
"2021-05-17 219.78 221.39 217.900 221.32 20048545.0 223.1742 191.17560\n",
|
||
"2021-05-18 221.39 223.24 219.470 219.64 24564503.0 223.1922 191.53700\n",
|
||
"\n",
|
||
"[5277 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.load(\"IWM\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Running Simple Strategy B"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='B', ta=[{'kind': 'ema', 'length': 8}, {'kind': 'ema', 'length': 21}, {'kind': 'log_return', 'cumulative': True}, {'kind': 'rsi'}, {'kind': 'supertrend'}], description='TA Description', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Load custom_b into Watchlist and verify\n",
|
||
"watch.strategy = custom_b\n",
|
||
"watch.strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>EMA_8</th>\n",
|
||
" <th>EMA_21</th>\n",
|
||
" <th>CUMLOGRET_1</th>\n",
|
||
" <th>RSI_14</th>\n",
|
||
" <th>SUPERT_7_3.0</th>\n",
|
||
" <th>SUPERTd_7_3.0</th>\n",
|
||
" <th>SUPERTl_7_3.0</th>\n",
|
||
" <th>SUPERTs_7_3.0</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>-0.007172</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>-0.000461</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.007120</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.016915</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>411.2300</td>\n",
|
||
" <td>412.5900</td>\n",
|
||
" <td>404.0000</td>\n",
|
||
" <td>405.4100</td>\n",
|
||
" <td>134811046.0</td>\n",
|
||
" <td>414.652269</td>\n",
|
||
" <td>413.799933</td>\n",
|
||
" <td>1.095466</td>\n",
|
||
" <td>41.002052</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>407.0700</td>\n",
|
||
" <td>412.3500</td>\n",
|
||
" <td>407.0200</td>\n",
|
||
" <td>410.2800</td>\n",
|
||
" <td>106393963.0</td>\n",
|
||
" <td>413.680653</td>\n",
|
||
" <td>413.479939</td>\n",
|
||
" <td>1.107407</td>\n",
|
||
" <td>47.683731</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>413.2100</td>\n",
|
||
" <td>417.4900</td>\n",
|
||
" <td>413.1800</td>\n",
|
||
" <td>416.5800</td>\n",
|
||
" <td>82201629.0</td>\n",
|
||
" <td>414.324953</td>\n",
|
||
" <td>413.761763</td>\n",
|
||
" <td>1.122646</td>\n",
|
||
" <td>54.813191</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>415.3900</td>\n",
|
||
" <td>416.3900</td>\n",
|
||
" <td>413.3600</td>\n",
|
||
" <td>415.5200</td>\n",
|
||
" <td>65129221.0</td>\n",
|
||
" <td>414.590519</td>\n",
|
||
" <td>413.921603</td>\n",
|
||
" <td>1.120098</td>\n",
|
||
" <td>53.492317</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>415.8000</td>\n",
|
||
" <td>416.0600</td>\n",
|
||
" <td>411.7700</td>\n",
|
||
" <td>411.9400</td>\n",
|
||
" <td>59810238.0</td>\n",
|
||
" <td>414.001515</td>\n",
|
||
" <td>413.741457</td>\n",
|
||
" <td>1.111445</td>\n",
|
||
" <td>49.181681</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" <td>-1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>422.422132</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5421 rows × 13 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume EMA_8 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-05-12 411.2300 412.5900 404.0000 405.4100 134811046.0 414.652269 \n",
|
||
"2021-05-13 407.0700 412.3500 407.0200 410.2800 106393963.0 413.680653 \n",
|
||
"2021-05-14 413.2100 417.4900 413.1800 416.5800 82201629.0 414.324953 \n",
|
||
"2021-05-17 415.3900 416.3900 413.3600 415.5200 65129221.0 414.590519 \n",
|
||
"2021-05-18 415.8000 416.0600 411.7700 411.9400 59810238.0 414.001515 \n",
|
||
"\n",
|
||
" EMA_21 CUMLOGRET_1 RSI_14 SUPERT_7_3.0 SUPERTd_7_3.0 \\\n",
|
||
"date \n",
|
||
"1999-11-01 NaN 0.000000 NaN 0.000000 1 \n",
|
||
"1999-11-02 NaN -0.007172 NaN NaN 1 \n",
|
||
"1999-11-03 NaN -0.000461 NaN NaN 1 \n",
|
||
"1999-11-04 NaN 0.007120 NaN NaN 1 \n",
|
||
"1999-11-05 NaN 0.016915 NaN NaN 1 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"2021-05-12 413.799933 1.095466 41.002052 422.422132 -1 \n",
|
||
"2021-05-13 413.479939 1.107407 47.683731 422.422132 -1 \n",
|
||
"2021-05-14 413.761763 1.122646 54.813191 422.422132 -1 \n",
|
||
"2021-05-17 413.921603 1.120098 53.492317 422.422132 -1 \n",
|
||
"2021-05-18 413.741457 1.111445 49.181681 422.422132 -1 \n",
|
||
"\n",
|
||
" SUPERTl_7_3.0 SUPERTs_7_3.0 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN \n",
|
||
"1999-11-02 NaN NaN \n",
|
||
"1999-11-03 NaN NaN \n",
|
||
"1999-11-04 NaN NaN \n",
|
||
"1999-11-05 NaN NaN \n",
|
||
"... ... ... \n",
|
||
"2021-05-12 NaN 422.422132 \n",
|
||
"2021-05-13 NaN 422.422132 \n",
|
||
"2021-05-14 NaN 422.422132 \n",
|
||
"2021-05-17 NaN 422.422132 \n",
|
||
"2021-05-18 NaN 422.422132 \n",
|
||
"\n",
|
||
"[5421 rows x 13 columns]"
|
||
]
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.load(\"SPY\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Running Bad Strategy. (Misspelled indicator)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Runtime Failure', ta=[{'kind': 'percet_return'}], description='TA Description', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Load custom_run_failure into Watchlist and verify\n",
|
||
"watch.strategy = custom_run_failure\n",
|
||
"watch.strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded IWM[D]: IWM_D.csv\n",
|
||
"[X] Oops! 'AnalysisIndicators' object has no attribute 'percet_return'\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"try:\n",
|
||
" iwm = watch.load(\"IWM\")\n",
|
||
"except AttributeError as error:\n",
|
||
" print(f\"[X] Oops! {error}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Indicator Composition/Chaining\n",
|
||
"- When you need an indicator to depend on the value of a prior indicator\n",
|
||
"- Utilitze _prefix_ or _suffix_ to help identify unique columns or avoid column name clashes."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Volume MAs and MA chains"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Volume MAs and Price MA chain', ta=[{'kind': 'ema', 'close': 'volume', 'length': 10, 'prefix': 'VOLUME'}, {'kind': 'sma', 'close': 'volume', 'length': 20, 'prefix': 'VOLUME'}, {'kind': 'ema', 'length': 5}, {'kind': 'linreg', 'close': 'EMA_5', 'length': 8, 'prefix': 'EMA_5'}], description='TA Description', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Set EMA's and SMA's 'close' to 'volume' to create Volume MAs, prefix 'volume' MAs with 'VOLUME' so easy to identify the column\n",
|
||
"# Take a price EMA and apply LINREG from EMA's output\n",
|
||
"volmas_price_ma_chain = [\n",
|
||
" {\"kind\":\"ema\", \"close\": \"volume\", \"length\": 10, \"prefix\": \"VOLUME\"},\n",
|
||
" {\"kind\":\"sma\", \"close\": \"volume\", \"length\": 20, \"prefix\": \"VOLUME\"},\n",
|
||
" {\"kind\":\"ema\", \"length\": 5},\n",
|
||
" {\"kind\":\"linreg\", \"close\": \"EMA_5\", \"length\": 8, \"prefix\": \"EMA_5\"},\n",
|
||
"]\n",
|
||
"vp_ma_chain_ta = ta.Strategy(\"Volume MAs and Price MA chain\", volmas_price_ma_chain)\n",
|
||
"vp_ma_chain_ta"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'Volume MAs and Price MA chain'"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = vp_ma_chain_ta\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>VOLUME_EMA_10</th>\n",
|
||
" <th>VOLUME_SMA_20</th>\n",
|
||
" <th>EMA_5</th>\n",
|
||
" <th>EMA_5_LR_8</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>136.012480</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>411.2300</td>\n",
|
||
" <td>412.5900</td>\n",
|
||
" <td>404.0000</td>\n",
|
||
" <td>405.4100</td>\n",
|
||
" <td>134811046.0</td>\n",
|
||
" <td>9.011529e+07</td>\n",
|
||
" <td>77217590.60</td>\n",
|
||
" <td>413.250716</td>\n",
|
||
" <td>416.421310</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>407.0700</td>\n",
|
||
" <td>412.3500</td>\n",
|
||
" <td>407.0200</td>\n",
|
||
" <td>410.2800</td>\n",
|
||
" <td>106393963.0</td>\n",
|
||
" <td>9.307505e+07</td>\n",
|
||
" <td>79525796.65</td>\n",
|
||
" <td>412.260477</td>\n",
|
||
" <td>414.894366</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>413.2100</td>\n",
|
||
" <td>417.4900</td>\n",
|
||
" <td>413.1800</td>\n",
|
||
" <td>416.5800</td>\n",
|
||
" <td>82201629.0</td>\n",
|
||
" <td>9.109806e+07</td>\n",
|
||
" <td>79534014.20</td>\n",
|
||
" <td>413.700318</td>\n",
|
||
" <td>414.073545</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>415.3900</td>\n",
|
||
" <td>416.3900</td>\n",
|
||
" <td>413.3600</td>\n",
|
||
" <td>415.5200</td>\n",
|
||
" <td>65129221.0</td>\n",
|
||
" <td>8.637646e+07</td>\n",
|
||
" <td>78865550.45</td>\n",
|
||
" <td>414.306879</td>\n",
|
||
" <td>413.592840</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>415.8000</td>\n",
|
||
" <td>416.0600</td>\n",
|
||
" <td>411.7700</td>\n",
|
||
" <td>411.9400</td>\n",
|
||
" <td>59810238.0</td>\n",
|
||
" <td>8.154623e+07</td>\n",
|
||
" <td>77763470.95</td>\n",
|
||
" <td>413.517919</td>\n",
|
||
" <td>413.103758</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5421 rows × 9 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"2021-05-12 411.2300 412.5900 404.0000 405.4100 134811046.0 \n",
|
||
"2021-05-13 407.0700 412.3500 407.0200 410.2800 106393963.0 \n",
|
||
"2021-05-14 413.2100 417.4900 413.1800 416.5800 82201629.0 \n",
|
||
"2021-05-17 415.3900 416.3900 413.3600 415.5200 65129221.0 \n",
|
||
"2021-05-18 415.8000 416.0600 411.7700 411.9400 59810238.0 \n",
|
||
"\n",
|
||
" VOLUME_EMA_10 VOLUME_SMA_20 EMA_5 EMA_5_LR_8 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN NaN \n",
|
||
"1999-11-05 NaN NaN 136.012480 NaN \n",
|
||
"... ... ... ... ... \n",
|
||
"2021-05-12 9.011529e+07 77217590.60 413.250716 416.421310 \n",
|
||
"2021-05-13 9.307505e+07 79525796.65 412.260477 414.894366 \n",
|
||
"2021-05-14 9.109806e+07 79534014.20 413.700318 414.073545 \n",
|
||
"2021-05-17 8.637646e+07 78865550.45 414.306879 413.592840 \n",
|
||
"2021-05-18 8.154623e+07 77763470.95 413.517919 413.103758 \n",
|
||
"\n",
|
||
"[5421 rows x 9 columns]"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"spy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### MACD BBANDS"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='MACD BBands', ta=[{'kind': 'macd'}, {'kind': 'bbands', 'close': 'MACD_12_26_9', 'length': 20, 'ddof': 0, 'prefix': 'MACD'}], description='BBANDS_20 applied to MACD', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# MACD is the initial indicator that BBANDS depends on.\n",
|
||
"# Set BBANDS's 'close' to MACD's main signal, in this case 'MACD_12_26_9' and add a prefix (or suffix) so it's easier to identify\n",
|
||
"macd_bands_ta = [\n",
|
||
" {\"kind\":\"macd\"},\n",
|
||
" {\"kind\":\"bbands\", \"close\": \"MACD_12_26_9\", \"length\": 20, \"ddof\": 0, \"prefix\": \"MACD\"}\n",
|
||
"]\n",
|
||
"macd_bands_ta = ta.Strategy(\"MACD BBands\", macd_bands_ta, f\"BBANDS_{macd_bands_ta[1]['length']} applied to MACD\")\n",
|
||
"macd_bands_ta"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'MACD BBands'"
|
||
]
|
||
},
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = macd_bands_ta\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>MACD_12_26_9</th>\n",
|
||
" <th>MACDh_12_26_9</th>\n",
|
||
" <th>MACDs_12_26_9</th>\n",
|
||
" <th>MACD_BBL_20_2.0</th>\n",
|
||
" <th>MACD_BBM_20_2.0</th>\n",
|
||
" <th>MACD_BBU_20_2.0</th>\n",
|
||
" <th>MACD_BBB_20_2.0</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>411.2300</td>\n",
|
||
" <td>412.5900</td>\n",
|
||
" <td>404.0000</td>\n",
|
||
" <td>405.4100</td>\n",
|
||
" <td>134811046.0</td>\n",
|
||
" <td>2.557923</td>\n",
|
||
" <td>-1.706518</td>\n",
|
||
" <td>4.264441</td>\n",
|
||
" <td>7.578527</td>\n",
|
||
" <td>5.425628</td>\n",
|
||
" <td>3.272729</td>\n",
|
||
" <td>-79.360373</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>407.0700</td>\n",
|
||
" <td>412.3500</td>\n",
|
||
" <td>407.0200</td>\n",
|
||
" <td>410.2800</td>\n",
|
||
" <td>106393963.0</td>\n",
|
||
" <td>1.984006</td>\n",
|
||
" <td>-1.824348</td>\n",
|
||
" <td>3.808354</td>\n",
|
||
" <td>7.766022</td>\n",
|
||
" <td>5.200879</td>\n",
|
||
" <td>2.635735</td>\n",
|
||
" <td>-98.642710</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>413.2100</td>\n",
|
||
" <td>417.4900</td>\n",
|
||
" <td>413.1800</td>\n",
|
||
" <td>416.5800</td>\n",
|
||
" <td>82201629.0</td>\n",
|
||
" <td>2.014310</td>\n",
|
||
" <td>-1.435235</td>\n",
|
||
" <td>3.449545</td>\n",
|
||
" <td>7.771391</td>\n",
|
||
" <td>4.962811</td>\n",
|
||
" <td>2.154232</td>\n",
|
||
" <td>-113.185018</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>415.3900</td>\n",
|
||
" <td>416.3900</td>\n",
|
||
" <td>413.3600</td>\n",
|
||
" <td>415.5200</td>\n",
|
||
" <td>65129221.0</td>\n",
|
||
" <td>1.930539</td>\n",
|
||
" <td>-1.215205</td>\n",
|
||
" <td>3.145744</td>\n",
|
||
" <td>7.694496</td>\n",
|
||
" <td>4.720972</td>\n",
|
||
" <td>1.747447</td>\n",
|
||
" <td>-125.970872</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>415.8000</td>\n",
|
||
" <td>416.0600</td>\n",
|
||
" <td>411.7700</td>\n",
|
||
" <td>411.9400</td>\n",
|
||
" <td>59810238.0</td>\n",
|
||
" <td>1.557322</td>\n",
|
||
" <td>-1.270738</td>\n",
|
||
" <td>2.828060</td>\n",
|
||
" <td>7.641148</td>\n",
|
||
" <td>4.476778</td>\n",
|
||
" <td>1.312409</td>\n",
|
||
" <td>-141.368166</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5421 rows × 12 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume MACD_12_26_9 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-05-12 411.2300 412.5900 404.0000 405.4100 134811046.0 2.557923 \n",
|
||
"2021-05-13 407.0700 412.3500 407.0200 410.2800 106393963.0 1.984006 \n",
|
||
"2021-05-14 413.2100 417.4900 413.1800 416.5800 82201629.0 2.014310 \n",
|
||
"2021-05-17 415.3900 416.3900 413.3600 415.5200 65129221.0 1.930539 \n",
|
||
"2021-05-18 415.8000 416.0600 411.7700 411.9400 59810238.0 1.557322 \n",
|
||
"\n",
|
||
" MACDh_12_26_9 MACDs_12_26_9 MACD_BBL_20_2.0 MACD_BBM_20_2.0 \\\n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN NaN \n",
|
||
"1999-11-05 NaN NaN NaN NaN \n",
|
||
"... ... ... ... ... \n",
|
||
"2021-05-12 -1.706518 4.264441 7.578527 5.425628 \n",
|
||
"2021-05-13 -1.824348 3.808354 7.766022 5.200879 \n",
|
||
"2021-05-14 -1.435235 3.449545 7.771391 4.962811 \n",
|
||
"2021-05-17 -1.215205 3.145744 7.694496 4.720972 \n",
|
||
"2021-05-18 -1.270738 2.828060 7.641148 4.476778 \n",
|
||
"\n",
|
||
" MACD_BBU_20_2.0 MACD_BBB_20_2.0 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN \n",
|
||
"1999-11-02 NaN NaN \n",
|
||
"1999-11-03 NaN NaN \n",
|
||
"1999-11-04 NaN NaN \n",
|
||
"1999-11-05 NaN NaN \n",
|
||
"... ... ... \n",
|
||
"2021-05-12 3.272729 -79.360373 \n",
|
||
"2021-05-13 2.635735 -98.642710 \n",
|
||
"2021-05-14 2.154232 -113.185018 \n",
|
||
"2021-05-17 1.747447 -125.970872 \n",
|
||
"2021-05-18 1.312409 -141.368166 \n",
|
||
"\n",
|
||
"[5421 rows x 12 columns]"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"spy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Comprehensive Strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### MACD and RSI Momentum with BBANDS and SMAs and Cumulative Log Returns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Momo, Bands and SMAs and Cumulative Log Returns', ta=[{'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}, {'kind': 'bbands', 'length': 20, 'ddof': 0}, {'kind': 'macd'}, {'kind': 'rsi'}, {'kind': 'log_return', 'cumulative': True}, {'kind': 'sma', 'close': 'CUMLOGRET_1', 'length': 5, 'suffix': 'CUMLOGRET'}], description='MACD and RSI Momo with BBANDS and SMAs 50 & 200 and Cumulative Log Returns', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"momo_bands_sma_ta = [\n",
|
||
" {\"kind\":\"sma\", \"length\": 50},\n",
|
||
" {\"kind\":\"sma\", \"length\": 200},\n",
|
||
" {\"kind\":\"bbands\", \"length\": 20, \"ddof\": 0},\n",
|
||
" {\"kind\":\"macd\"},\n",
|
||
" {\"kind\":\"rsi\"},\n",
|
||
" {\"kind\":\"log_return\", \"cumulative\": True},\n",
|
||
" {\"kind\":\"sma\", \"close\": \"CUMLOGRET_1\", \"length\": 5, \"suffix\": \"CUMLOGRET\"},\n",
|
||
"]\n",
|
||
"momo_bands_sma_strategy = ta.Strategy(\n",
|
||
" \"Momo, Bands and SMAs and Cumulative Log Returns\", # name\n",
|
||
" momo_bands_sma_ta, # ta\n",
|
||
" \"MACD and RSI Momo with BBANDS and SMAs 50 & 200 and Cumulative Log Returns\" # description\n",
|
||
")\n",
|
||
"momo_bands_sma_strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'Momo, Bands and SMAs and Cumulative Log Returns'"
|
||
]
|
||
},
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = momo_bands_sma_strategy\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" <th>BBL_20_2.0</th>\n",
|
||
" <th>BBM_20_2.0</th>\n",
|
||
" <th>BBU_20_2.0</th>\n",
|
||
" <th>BBB_20_2.0</th>\n",
|
||
" <th>MACD_12_26_9</th>\n",
|
||
" <th>MACDh_12_26_9</th>\n",
|
||
" <th>MACDs_12_26_9</th>\n",
|
||
" <th>RSI_14</th>\n",
|
||
" <th>CUMLOGRET_1</th>\n",
|
||
" <th>SMA_5_CUMLOGRET</th>\n",
|
||
" <th>0</th>\n",
|
||
" <th>30</th>\n",
|
||
" <th>70</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>411.23</td>\n",
|
||
" <td>412.59</td>\n",
|
||
" <td>404.00</td>\n",
|
||
" <td>405.41</td>\n",
|
||
" <td>134811046.0</td>\n",
|
||
" <td>403.9984</td>\n",
|
||
" <td>368.48120</td>\n",
|
||
" <td>422.923781</td>\n",
|
||
" <td>416.1900</td>\n",
|
||
" <td>409.456219</td>\n",
|
||
" <td>-3.235917</td>\n",
|
||
" <td>2.557923</td>\n",
|
||
" <td>-1.706518</td>\n",
|
||
" <td>4.264441</td>\n",
|
||
" <td>41.002052</td>\n",
|
||
" <td>1.095466</td>\n",
|
||
" <td>1.120555</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>407.07</td>\n",
|
||
" <td>412.35</td>\n",
|
||
" <td>407.02</td>\n",
|
||
" <td>410.28</td>\n",
|
||
" <td>106393963.0</td>\n",
|
||
" <td>404.5756</td>\n",
|
||
" <td>368.92675</td>\n",
|
||
" <td>423.121357</td>\n",
|
||
" <td>415.9105</td>\n",
|
||
" <td>408.699643</td>\n",
|
||
" <td>-3.467504</td>\n",
|
||
" <td>1.984006</td>\n",
|
||
" <td>-1.824348</td>\n",
|
||
" <td>3.808354</td>\n",
|
||
" <td>47.683731</td>\n",
|
||
" <td>1.107407</td>\n",
|
||
" <td>1.116315</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>413.21</td>\n",
|
||
" <td>417.49</td>\n",
|
||
" <td>413.18</td>\n",
|
||
" <td>416.58</td>\n",
|
||
" <td>82201629.0</td>\n",
|
||
" <td>405.3732</td>\n",
|
||
" <td>369.38405</td>\n",
|
||
" <td>423.067971</td>\n",
|
||
" <td>415.8765</td>\n",
|
||
" <td>408.685029</td>\n",
|
||
" <td>-3.458465</td>\n",
|
||
" <td>2.014310</td>\n",
|
||
" <td>-1.435235</td>\n",
|
||
" <td>3.449545</td>\n",
|
||
" <td>54.813191</td>\n",
|
||
" <td>1.122646</td>\n",
|
||
" <td>1.113673</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>415.39</td>\n",
|
||
" <td>416.39</td>\n",
|
||
" <td>413.36</td>\n",
|
||
" <td>415.52</td>\n",
|
||
" <td>65129221.0</td>\n",
|
||
" <td>406.0110</td>\n",
|
||
" <td>369.84185</td>\n",
|
||
" <td>423.078993</td>\n",
|
||
" <td>415.8920</td>\n",
|
||
" <td>408.705007</td>\n",
|
||
" <td>-3.456182</td>\n",
|
||
" <td>1.930539</td>\n",
|
||
" <td>-1.215205</td>\n",
|
||
" <td>3.145744</td>\n",
|
||
" <td>53.492317</td>\n",
|
||
" <td>1.120098</td>\n",
|
||
" <td>1.112511</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>415.80</td>\n",
|
||
" <td>416.06</td>\n",
|
||
" <td>411.77</td>\n",
|
||
" <td>411.94</td>\n",
|
||
" <td>59810238.0</td>\n",
|
||
" <td>406.6154</td>\n",
|
||
" <td>370.26895</td>\n",
|
||
" <td>423.091973</td>\n",
|
||
" <td>415.8805</td>\n",
|
||
" <td>408.669027</td>\n",
|
||
" <td>-3.468050</td>\n",
|
||
" <td>1.557322</td>\n",
|
||
" <td>-1.270738</td>\n",
|
||
" <td>2.828060</td>\n",
|
||
" <td>49.181681</td>\n",
|
||
" <td>1.111445</td>\n",
|
||
" <td>1.111412</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_50 SMA_200 \\\n",
|
||
"date \n",
|
||
"2021-05-12 411.23 412.59 404.00 405.41 134811046.0 403.9984 368.48120 \n",
|
||
"2021-05-13 407.07 412.35 407.02 410.28 106393963.0 404.5756 368.92675 \n",
|
||
"2021-05-14 413.21 417.49 413.18 416.58 82201629.0 405.3732 369.38405 \n",
|
||
"2021-05-17 415.39 416.39 413.36 415.52 65129221.0 406.0110 369.84185 \n",
|
||
"2021-05-18 415.80 416.06 411.77 411.94 59810238.0 406.6154 370.26895 \n",
|
||
"\n",
|
||
" BBL_20_2.0 BBM_20_2.0 BBU_20_2.0 BBB_20_2.0 MACD_12_26_9 \\\n",
|
||
"date \n",
|
||
"2021-05-12 422.923781 416.1900 409.456219 -3.235917 2.557923 \n",
|
||
"2021-05-13 423.121357 415.9105 408.699643 -3.467504 1.984006 \n",
|
||
"2021-05-14 423.067971 415.8765 408.685029 -3.458465 2.014310 \n",
|
||
"2021-05-17 423.078993 415.8920 408.705007 -3.456182 1.930539 \n",
|
||
"2021-05-18 423.091973 415.8805 408.669027 -3.468050 1.557322 \n",
|
||
"\n",
|
||
" MACDh_12_26_9 MACDs_12_26_9 RSI_14 CUMLOGRET_1 \\\n",
|
||
"date \n",
|
||
"2021-05-12 -1.706518 4.264441 41.002052 1.095466 \n",
|
||
"2021-05-13 -1.824348 3.808354 47.683731 1.107407 \n",
|
||
"2021-05-14 -1.435235 3.449545 54.813191 1.122646 \n",
|
||
"2021-05-17 -1.215205 3.145744 53.492317 1.120098 \n",
|
||
"2021-05-18 -1.270738 2.828060 49.181681 1.111445 \n",
|
||
"\n",
|
||
" SMA_5_CUMLOGRET 0 30 70 \n",
|
||
"date \n",
|
||
"2021-05-12 1.120555 0 30 70 \n",
|
||
"2021-05-13 1.116315 0 30 70 \n",
|
||
"2021-05-14 1.113673 0 30 70 \n",
|
||
"2021-05-17 1.112511 0 30 70 \n",
|
||
"2021-05-18 1.111412 0 30 70 "
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"# Apply constants to the DataFrame for indicators\n",
|
||
"spy.ta.constants(True, [0, 30, 70])\n",
|
||
"spy.tail()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Additional Strategy Options"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The ```params``` keyword takes a _tuple_ as a shorthand to the parameter arguments in order.\n",
|
||
"* **Note**: If the indicator arguments change, so will results. Breaking Changes will **always** be posted on the README.\n",
|
||
"\n",
|
||
"The ```col_numbers``` keyword takes a _tuple_ specifying which column to return if the result is a DataFrame."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='EMA, MACD History, Outter BBands, Log Returns', ta=[{'kind': 'ema', 'params': (10,)}, {'kind': 'macd', 'params': (9, 19, 10), 'col_numbers': (1,)}, {'kind': 'bbands', 'col_numbers': (0, 2), 'col_names': ('LB', 'UB')}, {'kind': 'log_return', 'params': (5, False)}], description='EMA, MACD History, BBands(LB, UB), and Log Returns Strategy', created='Wednesday May 19, 2021, NYSE: 7:22:07, Local: 11:22:07 PDT, Day 139/365 (38.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"params_ta = [\n",
|
||
" {\"kind\":\"ema\", \"params\": (10,)},\n",
|
||
" # params sets MACD's keyword arguments: fast=9, slow=19, signal=10\n",
|
||
" # and returning the 2nd column: histogram\n",
|
||
" {\"kind\":\"macd\", \"params\": (9, 19, 10), \"col_numbers\": (1,)},\n",
|
||
" # Selects the Lower and Upper Bands and renames them LB and UB, ignoring the MB\n",
|
||
" {\"kind\":\"bbands\", \"col_numbers\": (0,2), \"col_names\": (\"LB\", \"UB\")},\n",
|
||
" {\"kind\":\"log_return\", \"params\": (5, False)},\n",
|
||
"]\n",
|
||
"params_ta_strategy = ta.Strategy(\n",
|
||
" \"EMA, MACD History, Outter BBands, Log Returns\", # name\n",
|
||
" params_ta, # ta\n",
|
||
" \"EMA, MACD History, BBands(LB, UB), and Log Returns Strategy\" # description\n",
|
||
")\n",
|
||
"params_ta_strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'EMA, MACD History, Outter BBands, Log Returns'"
|
||
]
|
||
},
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = params_ta_strategy\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>EMA_10</th>\n",
|
||
" <th>MACDh_9_19_10</th>\n",
|
||
" <th>LB</th>\n",
|
||
" <th>UB</th>\n",
|
||
" <th>LOGRET_5</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-12</th>\n",
|
||
" <td>411.23</td>\n",
|
||
" <td>412.59</td>\n",
|
||
" <td>404.00</td>\n",
|
||
" <td>405.41</td>\n",
|
||
" <td>134811046.0</td>\n",
|
||
" <td>415.008591</td>\n",
|
||
" <td>-1.910055</td>\n",
|
||
" <td>427.262866</td>\n",
|
||
" <td>404.237134</td>\n",
|
||
" <td>-0.025185</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-13</th>\n",
|
||
" <td>407.07</td>\n",
|
||
" <td>412.35</td>\n",
|
||
" <td>407.02</td>\n",
|
||
" <td>410.28</td>\n",
|
||
" <td>106393963.0</td>\n",
|
||
" <td>414.148847</td>\n",
|
||
" <td>-1.945966</td>\n",
|
||
" <td>425.623966</td>\n",
|
||
" <td>402.360034</td>\n",
|
||
" <td>-0.021198</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-14</th>\n",
|
||
" <td>413.21</td>\n",
|
||
" <td>417.49</td>\n",
|
||
" <td>413.18</td>\n",
|
||
" <td>416.58</td>\n",
|
||
" <td>82201629.0</td>\n",
|
||
" <td>414.590875</td>\n",
|
||
" <td>-1.355458</td>\n",
|
||
" <td>421.988870</td>\n",
|
||
" <td>403.779130</td>\n",
|
||
" <td>-0.013211</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-17</th>\n",
|
||
" <td>415.39</td>\n",
|
||
" <td>416.39</td>\n",
|
||
" <td>413.36</td>\n",
|
||
" <td>415.52</td>\n",
|
||
" <td>65129221.0</td>\n",
|
||
" <td>414.759807</td>\n",
|
||
" <td>-1.030027</td>\n",
|
||
" <td>420.589623</td>\n",
|
||
" <td>404.210377</td>\n",
|
||
" <td>-0.005807</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-05-18</th>\n",
|
||
" <td>415.80</td>\n",
|
||
" <td>416.06</td>\n",
|
||
" <td>411.77</td>\n",
|
||
" <td>411.94</td>\n",
|
||
" <td>59810238.0</td>\n",
|
||
" <td>414.247115</td>\n",
|
||
" <td>-1.078192</td>\n",
|
||
" <td>419.933106</td>\n",
|
||
" <td>403.958894</td>\n",
|
||
" <td>-0.005495</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume EMA_10 \\\n",
|
||
"date \n",
|
||
"2021-05-12 411.23 412.59 404.00 405.41 134811046.0 415.008591 \n",
|
||
"2021-05-13 407.07 412.35 407.02 410.28 106393963.0 414.148847 \n",
|
||
"2021-05-14 413.21 417.49 413.18 416.58 82201629.0 414.590875 \n",
|
||
"2021-05-17 415.39 416.39 413.36 415.52 65129221.0 414.759807 \n",
|
||
"2021-05-18 415.80 416.06 411.77 411.94 59810238.0 414.247115 \n",
|
||
"\n",
|
||
" MACDh_9_19_10 LB UB LOGRET_5 \n",
|
||
"date \n",
|
||
"2021-05-12 -1.910055 427.262866 404.237134 -0.025185 \n",
|
||
"2021-05-13 -1.945966 425.623966 402.360034 -0.021198 \n",
|
||
"2021-05-14 -1.355458 421.988870 403.779130 -0.013211 \n",
|
||
"2021-05-17 -1.030027 420.589623 404.210377 -0.005807 \n",
|
||
"2021-05-18 -1.078192 419.933106 403.958894 -0.005495 "
|
||
]
|
||
},
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"spy.tail()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Disclaimer\n",
|
||
"* All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.\n",
|
||
"\n",
|
||
"* Any opinions, news, research, analyses, prices, or other information offered is provided as general market commentary, and does not constitute investment advice. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from use of or reliance on such information."
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.1"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|