Files
quant/code/.ipynb_checkpoints/Untitled1-checkpoint.ipynb
2019-11-21 12:02:03 +08:00

1209 lines
31 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"import tushare as ts\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import MySQLdb\n",
"import time\n",
"import datetime\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")\n",
"from imp import reload\n",
"import chan"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "arrays must all be same length",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-97-b75f7ddce5e4>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 27\u001b[0m \u001b[0mclose_list\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mclose\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[0mv\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mrd\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 29\u001b[1;33m \u001b[0mdf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'ts_code'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mts_code_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'trade_time'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mtrade_time_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'trade_date'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mtrade_date_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'high'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mhigh_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'low'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mlow_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'open'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mopen_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'close'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mclose_list\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 30\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'build end'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 31\u001b[0m \u001b[0mreload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchan\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#重新加载外部chan.py\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32me:\\app\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, data, index, columns, dtype, copy)\u001b[0m\n\u001b[0;32m 346\u001b[0m dtype=dtype, copy=copy)\n\u001b[0;32m 347\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 348\u001b[1;33m \u001b[0mmgr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_init_dict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 349\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mma\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMaskedArray\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 350\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mma\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmrecords\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mmrecords\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32me:\\app\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_init_dict\u001b[1;34m(self, data, index, columns, dtype)\u001b[0m\n\u001b[0;32m 457\u001b[0m \u001b[0marrays\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkeys\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 458\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 459\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0m_arrays_to_mgr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_names\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 460\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 461\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_init_ndarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32me:\\app\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_arrays_to_mgr\u001b[1;34m(arrays, arr_names, index, columns, dtype)\u001b[0m\n\u001b[0;32m 7313\u001b[0m \u001b[1;31m# figure out the index, if necessary\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7314\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mindex\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 7315\u001b[1;33m \u001b[0mindex\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mextract_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7316\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7317\u001b[0m \u001b[1;31m# don't force copy because getting jammed in an ndarray anyway\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32me:\\app\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36mextract_index\u001b[1;34m(data)\u001b[0m\n\u001b[0;32m 7359\u001b[0m \u001b[0mlengths\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mraw_lengths\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7360\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlengths\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 7361\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'arrays must all be same length'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7362\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7363\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mhave_dicts\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: arrays must all be same length"
]
}
],
"source": [
"df=pd.DataFrame(columns=['ts_code','trade_time','trade_date','high','low','open','close'])\n",
"ts_code_list=[]\n",
"trade_time_list=[]\n",
"trade_date_list=[]\n",
"high_list=[]\n",
"low_list=[]\n",
"open_list=[]\n",
"close_list=[]\n",
"base_time=datetime.datetime.now()\n",
"v=20\n",
"for i in range(60000):\n",
" rd=random.randint(0,20)-10\n",
" ts_code='000000.SZ'\n",
" time_time=base_time+datetime.timedelta(minutes=i-600000)\n",
" trade_time=time_time.strftime(\"%Y-%m-%d %H:%M:%S\")\n",
" trade_date=time_time.strftime(\"%Y-%m-%d\")\n",
" high=v if rd<=0 else v+rd\n",
" low=v if rd>0 else v-rd\n",
" open=v\n",
" close=v+rd\n",
" ts_code_list.append(ts_code)\n",
" trade_time_list.append(trade_time)\n",
" trade_date_list.append(trade_date)\n",
" high_list.append(high)\n",
" low_list.append(low)\n",
" open_list.append(open)\n",
" close_list.append(close)\n",
" v=v+rd\n",
"df = pd.DataFrame({'ts_code':ts_code_list, 'trade_time':trade_time_list, 'trade_date':trade_date_list, 'high':high_list, 'low':low_list, 'open':open_list, 'close':close_list})\n",
"print('build end')\n",
"reload(chan) #重新加载外部chan.py\n",
"df=chan.build(df)\n",
"print('handle end')"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '0',\n",
" '.',\n",
" 'S',\n",
" 'Z',\n",
" '0',\n",
" ...]"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ts_code_list"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"√找到两个连续符合中枢 000000.SZ 2018-09-21 12:06:08 2 共找到: 1\n",
"√找到两个连续符合中枢 000000.SZ 2018-09-29 05:01:08 22 共找到: 2\n",
"√找到两个连续符合中枢 000000.SZ 2018-10-16 01:59:08 57 共找到: 3\n"
]
}
],
"source": [
"result_df=pd.DataFrame()\n",
"found_qs_count=0 #找到的趋势数\n",
"found_count=0 #符合趋势的本组中枢已找到个数\n",
"zs_no_pre=0\n",
"zs_zg_pre=0\n",
"zs_zd_pre=0 \n",
"zs_gg_pre=0\n",
"zs_dd_pre=0\n",
"zs_direction_pre=''\n",
"for n, k in df.loc[(df[\"line\"]=='bottom') | (df[\"line\"]=='top')].iterrows():\n",
" #print(k.zs_no, n, zs_no_pre==0 , k.zs_no>zs_no_pre)\n",
" if k.zs_no!=0 and (zs_no_pre==0 or k.zs_no>zs_no_pre): #新中枢\n",
" #print(k.zs_no,\"新中枢\",k.zs_no,k.zs_direction)\n",
" if found_count==0 and (k.zs_direction=='downdown' or k.zs_direction=='upup'):\n",
" found_count=found_count+1\n",
" else: #前面已经找到一个待确认的\n",
" if zs_direction_pre=='downdown' and k.zs_direction=='downdown' and k.gg<zs_dd_pre: #与前面的方向一致\n",
" found_count=found_count+1\n",
" #print('下降趋势延申')\n",
" elif zs_direction_pre=='upup' and k.zs_direction=='upup' and k.dd>zs_gg_pre: #与前面的方向一致\n",
" found_count=found_count+1\n",
" #print('上升趋势延申')\n",
" elif k.zs_direction=='upup' or k.zs_direction=='downdown': #盘整中枢,结束\n",
" found_count=0\n",
" #print('×盘整中枢,重新找')\n",
" elif zs_direction_pre!=k.zs_direction: #与前面的方向不一致,作为第一个继续往下找\n",
" found_count=1\n",
" #print('×与之前方向不同,作为第一个往下找')\n",
" else: #不成趋势\n",
" found_count=1\n",
" #print('×条件不符合,作为第一个往下找')\n",
" if found_count>=2: #找到两个,记录\n",
" found_qs_count=found_qs_count+1\n",
" result_df=result_df.append({'ts_code':k.ts_code, 'trade_time':k.zs_confirm_time, 'trade_price':k.zs_confirm_price, 'n':n, 'direction': k.zs_direction},ignore_index=True)\n",
" print('√找到两个连续符合中枢',k.ts_code, k.zs_confirm_time, k.zs_no,'共找到:',found_qs_count)\n",
" found_count=0\n",
" zs_no_pre=k.zs_no\n",
" zs_zg_pre=k.zg\n",
" zs_zd_pre=k.zg \n",
" zs_gg_pre=k.gg\n",
" zs_dd_pre=k.dd\n",
" zs_direction_pre=k.zs_direction\n",
" elif k.zs_no==0 and found_count>0:\n",
" line_point=k.high if k.line=='top' else k.low\n",
" if (zs_direction_pre=='upup' and line_point<zs_gg_pre) or (zs_direction_pre=='downdown' and line_point>zs_dd_pre): #连接线段触碰前中枢\n",
" found_count=0\n",
" #print('×连接不符合')"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"direction\n",
"downdown -187.0\n",
"upup -115.5\n",
"Name: trade_price, dtype: float64"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result_df.groupby('direction')['trade_price'].mean()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"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.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}