修改后的案例程序增加了绘图输出和回报率、夏普比率、最大回撤率等指标的计算。此外,因为绘图数据源自getSMA类函数:
plt.getInstrumentSubplot('orcl').addDataSeries("sma",myStrategy.getSMA())
所以,类定义增加了一个getSMA类函数:
def getSMA(self):
return self.__sma
其他部分未做大的修改。
再看看下面的类定义事件(on)定义事件(on)函数:
def onEnterOk(self, position):进入交易
def onExitOk(self, position):退出交易
以上事件(on)函数对应买卖交易流水清单,最终资产价值(Portfolio)的变化过程就更加清楚了。
(1)在2000年年初,有1000美元本金。
(2)2月底,略有亏损,资产总值大约是980美元。
(3)最高峰是4月下旬,资产总值大约1120美元。
(4)随后就是起起伏伏,到了10月,资产总值还处于盈利状态,大约为1030美元。
(5)12月略有亏损,最终资产总值为974.53美元,亏损2.55%。
有关程序源码请参看脚本文件\zwpython\zw_k10\k404_tur04ed.py。
A股版SMA均线策略
修改部分在主流程开头,增加了一个数据格式转换部分,并且增加了一个cname变量,便于修改股票代码名称:
#--------数据格式转换,常用国内A股数据,转换为Yahoo财经格式
cod="002739";#万达院线
cname='wanda';
fss="dat\\"+cod+".csv";
df=pd.read_csv(fss,encoding='gbk');
#df2=zwBox.zw_df2yhaoo(df);
df2=zwBox.df2yhaoo(df);
cfn="dat\\"+cod+"_yh.csv";print(fss);
df2.to_csv(cfn,encoding='utf-8')
读者可以自行修改以上的股票代码变量“cod”和名称变量“cname”,并套用自己熟悉的股票数据。使用前要记得把指定的股票交易数据复制到下面的数据目录中:
x:\zwPython\zw_k10\dat\
程序源码请参见脚本文件\zwpython\zw_k10\k405_tur04zw.py。
本文节选自《零起点Python大数据与量化交易》