Tushareは無料、オープンソースのPythonの財務データ・インタフェース・パッケージです。株式やから他の財務データの主な実績データ収集、処理をクレンジング する データ・ストレージ・プロセスが大幅に作業負荷を軽減するために、迅速な金融アナリスト、清潔、およびそのアクセスの面でデータのための簡単なデータ分析のさまざまなを提供することができ、彼らは戦略とモデルの研究と実装のより集中しています。Pythonのパンダパッケージを考慮すると、金融優位の定量分析を反映して、データ・フォーマットのほとんどのTushareリターンがパンダのデータフレームタイプです。
使用例については
インポートnumpyのNP AS インポートPANDAS AS PD インポートPLTのAS matplotlib.pyplot インポートTS AS tushare #各株式市場のデータ取得tushare使用 DF = ts.get_k_data(' 600519 '、[スタート] = ' 2008-01-01 ' ) を印刷します(タイプ(DF)) df.to_csv(' 600519.csv ' ) DF = pd.read_csv(' 600519.csv '、index_col = ' DATE '、parse_dates = ' DATE ' ])[ ' オープン'、' 閉じる'、' ハイ'、' 低' ]] 印刷(DF) #は在庫が3%または日付のすべてに開放よりも閉じて出力 を印刷(DF [(DF [ ' 閉じる' [-df] ' オープン' ]) / DF [ 「開く」 ]> 0.03 ] .INDEX) #1 df.shift()は正の移動下方に移動し、負の上方に移動 位日付閉鎖前日よりすべての株式の開放2%以上を出力 [DFの[(DFを' 開く' [-df] ' 閉じる' ] .shift(1))/ DF [ ' 閉じます' ]。シフト(1)<= - 0.02] .INDEX #私は2008年1月1日スタート、手の株式を購入するために、各月の最初の取引日から、現在まで、毎年の最終取引日どのように私の収益をすべての株式を売却した場合? price_last = DF [ ' 開く' ] [ - 1 ] DF = DF [ ' 2008-01 ':' 2018から11 ' ] #の削除不要データ包括 df_monthly = df.resample(" MS ")1次回() #あたり月の最初の日 を印刷(" df_monthly 2008:" ) 印刷(df_monthly) 印刷(" df_yearly:" ) df_yearly= df.resample(" A ").last() - 1] #每年最后一天 プリント(df_yearly) cost_money = 0 ホールド = 0 のために年に範囲(2008,2018 ): cost_money + = df_monthly [STR(年)] [ ' オープン' ] .SUM()* 100 保留 + = LEN(df_monthly [STR(年)] [ ' オープン' ])* 100 cost_money - = df_yearly [STR(年)] [ ' オープン' ] [0 ] * ホールド ホールド = 0 印刷(' Cost_money:S%'%(0- cost_money)) #の要求と平均30移動5日 DF = pd.read_csv(' 601318.csvを'、index_col = ' DATE '、parse_dates = ' DATE ' ])[ 【' オープン'、' 閉じる'、' 低'、' 高' ] 印刷(df.head()) DF [ ' MA5 ' ] = np.NAN DF [ ' MA30 '] =np.NAN #1 #範囲(4、LEN(DF))におけるIのための: #1 df.loc [df.index [I]、 'MA5'] = DF [ '閉じる'] [4-I:I + 1] .mean() #1 #範囲(29、LEN(DF))におけるIのための: #1 df.loc [df.index [I]、 'MA30'] = DF [ '閉じる'] [I-29:I + 1 ] .mean() #1 #の印刷(df.head(50)) DF [ ' MA5 ' ] = DF [ ' 閉じる' ] .rolling(5).mean() #のウィンドウスクロールダウン5 DF [ ' MA30 ' ] = DF [ ' 閉じる' ] .rolling(30).mean() #のウィンドウのスクロールダウン30 印刷(DF。ヘッド(50 )) #1 ビデオ図の平均値 DF DF = [800 ] DF [[ ' 閉じる'、' MA5 '、' MA30は' ]]プロット() plt.show() #MACD Sicha及び日付 golden_cross = [] death_cross = [ ] のための I における(1レンジ、LEN(DF)): IF DF [ ' MA5 ' ] [I]> = DF [ ' MA30 ' ] [I] 及び DF [ ' MA5 '。] [I-1] <DF [ ' MA30 ' ] [I.の1-]: golden_cross.append(df.index [I] .to_pydatetime()) もし DF [ ' MA5 ' ] [I] <= DF [ ' MA30 ' ] [I] 及び DF [ ' MA5 ' ] [I - 1] > DF [ ' MA30 ' ] [I - 1 ]: death_cross.append(df.index [i])と 印刷(golden_crossの[5 ]) SR1 = DF [ ' MA5 ' ] <DF [ ' MA30 ' ] SR2 = DF 【' MA5 ' ]> = DF [ 'MA30 "] death_cross = DF [SR1&sr2.shift(1 )]インデックス。 golden_cross = DF [〜(SR1 | sr2.shift(1 ))。]インデックス プリント(death_cross)