學習鏈接:
一:https://www.jianshu.com/p/820cb5300fc1
二:https://www.jianshu.com/p/5e5b368eea53
三:https://www.jianshu.com/p/fe22393024d2
1.os.path.join()函數
https://www.cnblogs.com/an-ning0920/p/10037790.html
2.url.request.urlretrieve()函數
https://blog.csdn.net/pursuit_zhangyu/article/details/80556275
3.sys.stdout.write()用法
sys.stdout的形式就是print的一種默認輸出格式
import sys i=1 file_num=2 sys.stdout.write('\r>> read json file %d/%d' % (i, file_num)) #屏幕顯示>> read json file 1/21/2 sys.stdout.flush() #-> 這句代碼的意思是刷新輸出 print('%d/%d' % (i, file_num))#屏幕打印輸出1/2
4.os.mkdir(path,mode)
https://www.runoob.com/python/os-mkdir.html
#os.mkdir(path,mode) 方法用於以數字權限模式創建目錄。
# 默認的模式為 0777 (八進制)。path -- 要創建的目錄,可以是相對或者絕對路徑。
# mode -- 要為目錄設置的權限數字模式。
5.python用mpl_finance中的candlestick_ohlc畫分時圖
https://blog.csdn.net/boystray/article/details/82740772
matplotlib.finance獨立出來成為mpl_finance,而mpl_finance中的candlestick_ochl和candlestick_ohlc一般用來畫股票的K線圖。我需要分析分時圖,也就是一分鍾的行情,這個時候就不能直接用candlestick_ochl函數,因為candlestick_ochl中x軸最小的單位是日期,不是分鍾。 經過對mpl_finance的源代碼進行分析,問題在於matplotlib的date2num將日期轉換為浮點數,浮點數的整數部分表示日期,小數部分代表小時和分鍾。比如下面4個時間段是連續的分鍾。 可以看出date2num函數計算之后,4個時間的整數部分都是736954,導致在X軸上這4個時間段都重疊在一起,無法區分了。要達到的效果是每一個分鍾也能成為一個整數,這樣就可以顯示出來了。那么一天是24小時,每小時60分鍾,那么一天就是1440分鍾,將date2num計算的浮點數乘以1440就可以將每一分鍾轉為整數,那么就可以在x軸上。 最后還需要對x軸格式化,因為自己對x軸進行了處理(乘以1440),采用默認的格式化是亂碼。需要自定義x軸的格式化函數。 完整例子如下: import pandas as pd from pandas import DataFrame import matplotlib.pyplot as plt import matplotlib.dates as dates import mpl_finance as mpf from matplotlib.ticker import Formatter import numpy as np dfcvs = DataFrame([ ["2018/09/17-21:34", 3646, 3650,3644,3650], ["2018/09/17-21:35", 3650, 3650,3648,3648], ["2018/09/17-21:36", 3650, 3650,3648,3650], ["2018/09/17-21:37", 3652, 3654,3648,3652] ]) dfcvs.columns = ['時間','開盤','最高','最低','收盤'] dfcvs['時間']=pd.to_datetime(dfcvs['時間'],format="%Y/%m/%d-%H:%M") #matplotlib的date2num將日期轉換為浮點數,整數部分區分日期,小數區分小時和分鍾 #因為小數太小了,需要將小時和分鍾變成整數,需要乘以24(小時)×60(分鍾)=1440,這樣小時和分鍾也能成為整數 #這樣就可以一分鍾就占一個位置 dfcvs['時間']=dfcvs['時間'].apply(lambda x:dates.date2num(x)*1440) data_mat=dfcvs.as_matrix() fig,ax=plt.subplots(figsize=(1200/72,480/72)) fig.subplots_adjust(bottom=0.1) mpf.candlestick_ohlc(ax,data_mat,colordown='#53c156', colorup='#ff1717',width=0.2,alpha=1) #將x軸的浮點數格式化成日期小時分鍾 #默認的x軸格式化是日期被dates.date2num之后的浮點數,因為在上面乘以了1440,所以默認是錯誤的 #只能自己將浮點數格式化為日期時間分鍾 #參考https://matplotlib.org/examples/pylab_examples/date_index_formatter.html class MyFormatter(Formatter): def __init__(self, dates, fmt='%Y%m%d %H:%M'): self.dates = dates self.fmt = fmt def __call__(self, x, pos=0): 'Return the label for time x at position pos' ind = int(np.round(x)) #ind就是x軸的刻度數值,不是日期的下標 return dates.num2date( ind/1440).strftime(self.fmt) formatter = MyFormatter(data_mat[:,0]) ax.xaxis.set_major_formatter(formatter) for label in ax.get_xticklabels(): label.set_rotation(90) label.set_horizontalalignment('right')
6.plt.grid() 是否顯示網格線
import matplotlib as mpl import matplotlib.pyplot as plt plt.grid() # 顯示網格線 1=True=默認顯示;0=False=不顯示 plt.grid(1) # 顯示網格線 plt.grid(True) # 顯示網格線 plt.grid(b=True) # 顯示網格線 plt.grid(b=1) # 顯示網格線 plt.grid(b=True, axis='x') #只顯示x軸網格線 plt.grid(b=True, axis='y') #只顯示y軸網格線 plt.grid(b=1, which='major') # 默認就是major,例如x軸最大值為3.5(這個值占比極小,不影響作圖的話),這部分圖像不會顯示;若which='both'則顯示;若設置為minor則不顯示網格(其實這里有點不懂,,既然不顯示,那為什么不直接設置為b=0呢????)
7.pyalgotrade板塊
下面列出了pyalgotrade常用的幾個子模塊,其中又以數據采集和策略最為重要,程序可繁可簡,最簡單的代碼二三十行即可實現。 數據采集pyalgotrade.barfeed 提供了一些常用的數據采集類,開發者也可基於采集基類自定義采集類。 策略pyalgotrade.strategy 繼承策略基類,開發者在其中實現具體策略:編寫邏輯,確定買入、賣出時間,金額等等。 分析pyalgotrade.stratanalyzer 評價策略的運行結果,如:盈利/虧損金額、次數、單位回報率等等。 技術指標pyalgotrade.technical 常用的技術指標,無需安裝其它軟件即可使用。 繪圖pyalgotrade. plotter 繪圖工具,主要用於直觀地分析和顯示策略的結果。 經紀商pyalgotrade.broker 設置交易費用等細節,用於執行訂單。 作者:xieyan0811 鏈接:https://www.jianshu.com/p/fe22393024d2 來源:簡書 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
相關概念 夏普比率Sharpe Ratio 夏普比率綜合考慮了收益和風險,公式如下: 其中E(Rp)是預期報酬率,Rf是無風險利率,op是標准差,等號上面是收益,等號下面是風險,因此,該值越大越好。當在幾種策略之間選擇時,也可以考慮夏普比率。 最大回撤率 在指定周期內,產品凈值走到最低點時的收益率回撤幅度的最大值,即:最壞情況下的虧損比例。 成交量加權平均價策略VWAP 對於較大的交易,如果全部按當前市價下單,會對市場造成巨大的沖擊,更好的方法是小批量分時下單。VWAP的目標是最小化沖擊成本,使交易價格等於一段時間內的平均價格。在機構和庄家大資金進貨、出貨操作時需要考慮沖擊問題,一般散戶很少使用。 Bar 在一定時間段內的時間序列構成了一根 K 線(蠟燭圖),單根K線被稱為 Bar。 評價指標 評價函數在pyalgotrade.stratanalyzer子模塊中,下面列出了幾個常用的評價指標類: pyalgotrade.stratanalyzer.returns.Returns() 收益率 pyalgotrade.stratanalyzer.sharpe.SharpeRatio() 夏普比率 pyalgotrade.stratanalyzer.drawdown.DrawDown() 回撤率 pyalgotrade.stratanalyzer.trades.Trades() 具體交易 trade提供的信息最多,一般關注 getCount():總的交易次數 getProfitableCount():盈利的交易次數 getUnprofitableCount():虧損的交易次數 getEvenCount():不賺不虧的交易次數 getAll():返回numpy.array的數據,內容是每次交易的盈虧 getProfits():返回numpy.array的數據,內容是每次盈利交易的盈利 getLosses():返回numpy.array的數據,內容是每次虧損交易的虧損額 getAllReturns():返回numpy.array的數據,內容是每次交易的盈利(百分比) getPositiveReturns():返回numpy.array的數據,內容是每次盈利交易的收益 getNegativeReturns():返回numpy.array的數據,內容是每次虧損交易的損失 作者:xieyan0811 鏈接:https://www.jianshu.com/p/fe22393024d2 來源:簡書 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
pyalgotrade模塊源碼詳解
https://blog.csdn.net/weixin_33834075/article/details/85088607
8.MA\SMA
https://www.douban.com/note/628768846/
9.ewm(),用於計算EMA
https://blog.csdn.net/weixin_41494909/article/details/99670246
10.聚寬api文檔
https://www.joinquant.com/help/api/help#JQData:get_price-獲取行情數據
12.枚舉函數enum
https://www.cnblogs.com/skaarl/p/10279428.html
