道路のPythonの定量化:歴史的瞬間の市場に上海と深セン証券コードと時間のリストに掲載する企業
株式市場と上場廃止の情報が不可欠であるので在庫は、完全なバックテストをしたいので、最近私は、定量化するために株式市場の再生を開始しました。我々は右の上海と深センの株式を含んで特定の日付の構図を知っている必要がありますバックテスト時にあるため。したがって、我々はダウン登るためにすべての時間を上場廃止上海と深セン株式の市場へのすべての時間を持っている(後に地元の速い検索を保存します)。
0.1。主要なツールを確認
ツールを使用するには、次のとおりです。
(1)のpython:基本的なツール
(2)パンダ:フォーマットデータ処理
(3)データ通信インタフェース:HTTP://www.datayes.com
(4)通信インタフェースAPI:HTTPS://api.wmcloud.com/docs/pages/viewpage.action PAGEID = 1867781?
1.データの取得を開始
まず第一に、私たちは私たちの任務は非常に簡単であることがわかりますコミュニケーションズデータインタフェースと市場投入までの時間と時間(もしあれば)リストの上場廃止、すべての上場企業を取得する必要があります。
パンダのインポートデータフレームから dataapiclientインポートクライアントからの インポートのJSON クライアント=クライアント() client.init( 'cae5c4acc4ad4ccb93a8aaac4b8adb04363feaa9852c34d14ddd2248613b09b3') URL = '/ API /株式/ getEqu.json?フィールド=ティッカー、secShortName、listDate、delistDate&listStatusCD = L、S、DE 、UN&secID =&ティッカー=&equTypeCD = A ' コード、結果= client.getData(URL) J = json.loads(result.decode()) D =データフレーム(J [ 'データ']) D = d.set_index('ティッカー') = D D [[「、 'secShortName listDate'、 'delistDate']] d.to_csv( 'データ/ ticker_and _day_of_(デ)list_date.csv')
したがって、ticker_and _day_of_(デ)list_date.csvファイルは、所望のコンテンツに保存されています。データは特殊なケースを持っていることに注意してください。DY600019
これは、ティッカーDYプレフィックスは違いを示すために追加ゆえコミュニケーションズのデータの前に、メインの変化につながった再編や買収の結果です。
そして、全ての取引可能なの時刻歴のA株株式コードへのアクセスを容易にするために、我々は、デフォルトでローカルデータを使用して、関数を定義する:get_a_stocks(日付=なし、更新= False)が、日付のデフォルトの日付が現在の日付システムで、更新があるかどうかを示しますあなたは、ローカルデータを更新する必要があります。ファイル名beefinance.py
パンダインポートデータフレームから datetime型のインポート日時から dataapiclientインポートクライアントから の輸入パンダ JSONインポート インポートのOS インポートタイプが 日時のインポート インポート時の デフget_a_stocksを(日付=なし、更新=偽): 日付がある場合なし: 日付= datetime.datetime.now() :でisinstance(日付、文字列)の場合 、日付= datetime.datetime.strptime( "%Y-%M-%D"日付) :でisinstanceない場合(日付、datetime.datetimeの) ValueErrorを送出し( '日付不接受此类型' ) でisinstanceない場合(更新、ブール値): ValueErrorを送出し( '更新不接受此类型') DATA_DIR = u'data」 data_filename = DATA_DIR + U '/ ticker_and _day_of_(デ)list_date.csv' D = D [[ 'secShortName'、」 listDate」、 'delistDate']] そうでない場合はos.path.exists(DATA_DIR): os.mkdir(DATA_DIR) であれば(ないos.path.exists(data_filename))またはupdate: クライアント=クライアント() client.init( 'cae5c4acc4ad4ccb93a8aaac4b8adb04363feaa9852c34d14ddd2248613b09b3') URL = '/ API /equity/getEqu.json?field=ticker,secShortName,listDate,delistDate&listStatusCD=L,S,DE,UN&secID=&ticker=&equTypeCD=A」 コード、結果= client.getData(URL) J = json.loads(result.decode ()) 、D =データフレーム(J [ 'データ']) D = d.set_index( 'ティッカー') d.to_csv(data_filename、エンコード= 'UTF-8') D [ 'listDate'] = pandas.to_datetime(D [ 'listDate']) のD [」delistDate '] = pandas.to_datetime(D [' delistDate ']) D = D [D [ 'listDate'] <=日付】 D1 = D [pandas.isnull(D [ 'delistDate'])] D2 = D [パンダ。 notnull(D [ 'delistDate'])] D2 = D2 [D2 [ 'delistDate']>日付] D = d1.append(D2) を返すD 他: D = pandas.read_csv(data_filename、index_col = 'ティッカー'、parse_dates = [ 'listDate'、 'delistDate']、符号化= 'UTF-8') D [ 'listDate'] = pandas.to_datetime(D [ 'listDate']) D [ 'delistDate'] = pandas.to_datetime(D [ 'delistDate']) D = D [D [ 'listDate'] <=日付】 D1 = D [pandas.isnull(dは[」delistDate '])] D2 = D [pandas.notnull(D [' delistDate '])] D2 = D2 [D2 [ 'delistDate']>日付] D = d1.append(D2) リターンD
以下の試験結果:
beefinanceインポートget_a_stocksから D = get_a_stocks( '2010-05-05') プリント(D)
データ/ ticker_and _day_of_(デ)list_date.csv secShortName listDate delistDate ティッカー 000001 PABのNaT 1991年4月3日 000002 1991年1月29日のNaT万科A 000004国立農業科学技術のNaT 1991年1月14日 000005泉1990-12- NaT 10 000006 1992年4月27日NATはshenzhenye 000007新しいNaTの良い1992年4月13日 000008のNaT中国高速鉄道1992年5月7日 000009中国宝安のNaT 1991年6月25日 000010美しい生態のNaT 1995年10月27日 000011深センのプロパティを1992年3月30日のNaT A 000012 1992年2月28日のNaT CSG A 000014沙株式1992年6月2日のNaT 000016 1992年3月27日のNaT深い康佳A 000017 ShenChinaのNaT 1992年3月31日 000018中国の万里の長城のNaT 1992年6月16日 000019 1992年10月12日のNaT Shenshenbao A 000020深いHuafa A 1992年4月28日のNaT 000021深い技術のNaT 1994年2月2日 000022 1993年5月5日のNaT赤湾A 000023 1993年4月29日のNaT地中深く 000025 1993年6月21日のNaT TELLUS A 000026 FIYTA A 1993年6月3日のNaT 000027深センエネルギーのNaT 1993年9月3日 000028医薬品継続性NAT 1993年8月9日 000029 1993年9月15日のNaT SHENSHENFANG A 000030のNaT豊かなオーストリアの株式1993年9月29日 000031 COFCOプロパティ1993年10月8日のNaT 000032深センSongdaのNaT 1993年10月28日 000033 * STの新しい資本のNaT 1994年1月3日 000034デジタルのNaT 1994年5月9日 ... ... ... ... 601899紫金鉱業2008-04- NaT 25 601918 * STの新しいセットは、NAT 2007-12-19 601919中国海のNaT 2007-06-26は 601939建設銀行のNaT 2007-09-25 金モリブデンの601958株式のNaT 2008-04-17 中国2006-07-05のNAT 601988銀行 601 989中国ヘビーのNaT 2009-12-16妥当性 601991大唐発電のNaT 2006-12-20 601998 CITIC銀行のNaT 2007-04-27 601 999出版&メディアのNaT 2007-12-21 000024不動産投資1993年6月7日2015年12月30日 000522 1993年11月8日2013年4月26日白雲山A 000527美的1993年11月12日2013年9月18日 000562香港人民元証券1994年2月2日2015年1月26日 000578ソルトレイク・グループ1995-03-032011 -03-22 000 594バック1996年3月20日2015年7月13日クォックハング 000602ゴールデンホースグループ2013年8月14日1996年8月19日 000 787 * ST Powerise 2013年2月8日1997年6月26日 000 805 * ST Yanhuang 1998年5月29日2013年3月27日 600087 1997年6月12日2014年6月5日に引退市長油 600102莱蕪鋼鉄1997年8月28日2012年2月28日 600253日牙製薬2000-12-27 2013- 7月15日 600 263道路や橋の建設2000-07-25 2012-03-01 600553太行セメント2002-08-22 2011-02-18 ブリリアンスの600631株式1993年2月19日2011年8月23日 600656上場廃止Boyuan 1990年から1912年-192016-05-13 東方明珠1994年2月24日2015年5月20日600 832 600 991長豊2012-03-20 2004-06-14 601268 * STのダブル2010-02-02 2015年5月21日 601299中国CNR 2009-12-292015 -05-20 [1815行3列X]
かなり良いです。
株式市場と上場廃止の情報が不可欠であるので在庫は、完全なバックテストをしたいので、最近私は、定量化するために株式市場の再生を開始しました。我々は右の上海と深センの株式を含んで特定の日付の構図を知っている必要がありますバックテスト時にあるため。したがって、我々はダウン登るためにすべての時間を上場廃止上海と深セン株式の市場へのすべての時間を持っている(後に地元の速い検索を保存します)。
0.1。主要なツールを確認
ツールを使用するには、次のとおりです。
(1)のpython:基本的なツール
(2)パンダ:フォーマットデータ処理
(3)データ通信インタフェース:HTTP://www.datayes.com
(4)通信インタフェースAPI:HTTPS://api.wmcloud.com/docs/pages/viewpage.action PAGEID = 1867781?
1.データの取得を開始
まず第一に、私たちは私たちの任務は非常に簡単であることがわかりますコミュニケーションズデータインタフェースと市場投入までの時間と時間(もしあれば)リストの上場廃止、すべての上場企業を取得する必要があります。
パンダのインポートデータフレームから dataapiclientインポートクライアントからの インポートのJSON クライアント=クライアント() client.init( 'cae5c4acc4ad4ccb93a8aaac4b8adb04363feaa9852c34d14ddd2248613b09b3') URL = '/ API /株式/ getEqu.json?フィールド=ティッカー、secShortName、listDate、delistDate&listStatusCD = L、S、DE 、UN&secID =&ティッカー=&equTypeCD = A ' コード、結果= client.getData(URL) J = json.loads(result.decode()) D =データフレーム(J [ 'データ']) D = d.set_index('ティッカー') = D D [[「、 'secShortName listDate'、 'delistDate']] d.to_csv( 'データ/ ticker_and _day_of_(デ)list_date.csv')
したがって、ticker_and _day_of_(デ)list_date.csvファイルは、所望のコンテンツに保存されています。データは特殊なケースを持っていることに注意してください。DY600019
これは、ティッカーDYプレフィックスは違いを示すために追加ゆえコミュニケーションズのデータの前に、メインの変化につながった再編や買収の結果です。
そして、全ての取引可能なの時刻歴のA株株式コードへのアクセスを容易にするために、我々は、デフォルトでローカルデータを使用して、関数を定義する:get_a_stocks(日付=なし、更新= False)が、日付のデフォルトの日付が現在の日付システムで、更新があるかどうかを示しますあなたは、ローカルデータを更新する必要があります。ファイル名beefinance.py
パンダインポートデータフレームから datetime型のインポート日時から dataapiclientインポートクライアントから の輸入パンダ JSONインポート インポートのOS インポートタイプが 日時のインポート インポート時の デフget_a_stocksを(日付=なし、更新=偽): 日付がある場合なし: 日付= datetime.datetime.now() :でisinstance(日付、文字列)の場合 、日付= datetime.datetime.strptime( "%Y-%M-%D"日付) :でisinstanceない場合(日付、datetime.datetimeの) ValueErrorを送出し( '日付不接受此类型' ) でisinstanceない場合(更新、ブール値): ValueErrorを送出し( '更新不接受此类型') DATA_DIR = u'data」 data_filename = DATA_DIR + U '/ ticker_and _day_of_(デ)list_date.csv' でない場合os.path.exists(DATA_DIR): os.mkdir(DATA_DIR) (ないos.path.exists(data_filename))の場合または更新: クライアント=クライアント() client.init( 'cae5c4acc4ad4ccb93a8aaac4b8adb04363feaa9852c34d14ddd2248613b09b3') URL = '/ API /株式/ getEqu.json?フィールド=ティッカー、secShortName、listDate、delistDate&listStatusCD = L、S、DE、UN&secID =&ティッカー=&equTypeCD = A' コード、結果= client.getData(URL) J = json.loads(result.decode()) D =データフレーム(J [ 'データ']) D = d.set_index( 'ティッカー') D = D [[ 'secShortName'、」 listDate」、 'delistDate']] d.to_csv(data_filename、エンコード= 'UTF-8') D [ 'listDate'] pandas.to_datetime(D [ 'listDate'])= D [ 'delistDate'] = pandas.to_datetime(D [ 'delistDate']) D = D [D [ 'listDate'] <=日付】 D1 = D [pandas.isnull(D [ 'delistDate'])] D2 = D [pandas.notnull(D [ 'delistDate'])] D2 = D2 [ D2 [ 'delistDate']>日付] D = d1.append(D2) を返すD 他: D = pandas.read_csv(data_filename、index_col = 'ティッカー'、parse_dates = [ 'listDate'、 'delistDate']、エンコード=」 UTF-8 ') D [' listDate '] = pandas.to_datetime(D [' listDate ']) のD ['delistDate '] = pandas.to_datetime(D [' delistDate ']) D = D [D [' listDate '] <=日付] D1 = D [pandas.isnull(D [ 'delistDate'])] D2 = D [pandas.notnull(D [ 'delistDate'])] D2 = D2 [D2 [ 'delistDate']>日付] D = d1.append (D2) リターンD
以下の試験結果:
beefinanceインポートget_a_stocksから D = get_a_stocks( '2010-05-05') プリント(D)
データ/ ticker_and _day_of_(デ)list_date.csv secShortName listDate delistDate ティッカー 000001 PABのNaT 1991年4月3日 000002 1991年1月29日のNaT万科A 000004国立農業科学技術のNaT 1991年1月14日 000005泉1990-12- NaT 10 000006 1992年4月27日NATはshenzhenye 000007新しいNaTの良い1992年4月13日 000008のNaT中国高速鉄道1992年5月7日 000009中国宝安のNaT 1991年6月25日 000010美しい生態のNaT 1995年10月27日 000011深センのプロパティを1992年3月30日のNaT A 000012 1992年2月28日のNaT CSG A 000014沙株式1992年6月2日のNaT 000016 1992年3月27日のNaT深い康佳A 000017 ShenChinaのNaT 1992年3月31日 000018中国の万里の長城のNaT 1992年6月16日 000019 1992年10月12日のNaT Shenshenbao A 000020深いHuafa A 1992年4月28日のNaT 000021深い技術のNaT 1994年2月2日 000022 1993年5月5日のNaT赤湾A 000023 1993年4月29日のNaT地中深く 000025 1993年6月21日のNaT TELLUS A 000026 FIYTA A 1993年6月3日のNaT 000027深センエネルギーのNaT 1993年9月3日 000028医薬品継続性NAT 1993年8月9日 000029 1993年9月15日のNaT SHENSHENFANG A 000030のNaT豊かなオーストリアの株式1993年9月29日 000031 COFCOプロパティ1993年10月8日のNaT 000032深センSongdaのNaT 1993年10月28日 000033 * STの新しい資本のNaT 1994年1月3日 000034デジタルのNaT 1994年5月9日 ... ... ... ... 601899紫金鉱業2008-04- NaT 25 601918 * STの新しいセットは、NAT 2007-12-19 601919中国海のNaT 2007-06-26は 601939建設銀行のNaT 2007-09-25 金モリブデンの601958株式のNaT 2008-04-17 中国2006-07-05のNAT 601988銀行 601 989中国ヘビーのNaT 2009-12-16妥当性 601991大唐発電のNaT 2006-12-20 601998 CITIC銀行のNaT 2007-04-27 601 999出版&メディアのNaT 2007-12-21 000024不動産投資1993年6月7日2015年12月30日 000522 1993年11月8日2013年4月26日白雲山A 000527美的1993年11月12日2013年9月18日 000562香港人民元証券1994年2月2日2015年1月26日 000578ソルトレイク・グループ1995-03-032011 -03-22 000 594バック1996年3月20日2015年7月13日クォックハング 000602ゴールデンホースグループ2013年8月14日1996年8月19日 000 787 * ST Powerise 2013年2月8日1997年6月26日 000 805 * ST Yanhuang 1998年5月29日2013年3月27日 600087 1997年6月12日2014年6月5日に引退市長油 600102莱蕪鋼鉄1997年8月28日2012年2月28日 600253日牙製薬2000-12-27 2013- 7月15日 600 263道路や橋の建設2000-07-25 2012-03-01 600553太行セメント2002-08-22 2011-02-18 ブリリアンスの600631株式1993年2月19日2011年8月23日 600656上場廃止Boyuan 1990年から1912年-192016-05-13 東方明珠1994年2月24日2015年5月20日600 832 600 991長豊2012-03-20 2004-06-14 601268 * STのダブル2010-02-02 2015年5月21日 601299中国CNR 2009-12-292015 -05-20 [1815行3列X]
かなり良いです。