{ "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\u001b[0m in \u001b[0;36m\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.ggzs_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_pointzs_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 }