|
|
51CTO旗下网站
|
|
移动端

2.3.3 静态方法、类方法与属性(2)

《量化交易之路:用Python做股票量化分析》第2章量化语言——Python,第2部分(第2~6章)主要讲解了量化交易需要的基础知识及相关工具,如Python语言、NumPy、pandas、数据可视化及量化数学等知识,适合完全没有任何编程经验的读者从头开始阅读。本节为大家介绍静态方法、类方法与属性。

作者:阿布来源:机械工业出版社|2017-10-19 16:38

2.3.3  静态方法、类方法与属性(2)

从上面输出可以看出结果总盈亏为13.3%,似乎还可以,但是从可视化盈亏曲线可以看出有一段持续下跌的过程,在量化交易中称为最大回撤。最大回撤是一个度量策略优劣的重要因素,在“第9章量化系统——度量与优化”中将详细讲解。

2.静态方法类方法(@classmethod与@staticmethod)

Python中通过装饰器@classmethod和@staticmethod来表明方法为类方法和静态方法,通过类名.方法名()的形式调用:

@staticmethod不需要任何参数。

@classmethod不需要self参数,但第一个参数需要是表示自身类的cls参数。

s_keep_stock_threshold与s_buy_change_threshold在TradeStrategy2中定义的方式都为类全局变量。

@staticmethod方法中如果要使用到这个类中的变量,只能直接使用类名.属性名或类名.方法名,代码如下:

  1. @staticmethod  
  2. def set_buy_change_threshold(buy_change_threshold):  
  3.     # 类名称.类变量:TradeStrategy2.s_buy_change_threshold  
  4.     TradeStrategy2.s_buy_change_threshold = buy_change_threshold 

@classmethod方法函数声明中持有cls参数,可以通过cls来访问类变量,如下面cls.s_ keep_stock_threshold的使用,所以它的优点是避免硬编码。

  1. @classmethod  
  2. def set_keep_stock_threshold(cls, keep_stock_threshold):  
  3.     # cls来访问类变量,避免硬编码  
  4.     cls.s_keep_stock_threshold = keep_stock_threshold 

以下示例代码通过类方法set_keep_stock_threshold()与set_buy_change_threshold()修改策略基础参数,改变策略的交易行为,代码如下:

  1. # 实例化一个新的TradeStrategy2类对象  
  2. trade_strategy2 = TradeStrategy2()  
  3. # 修改为买入后持有股票20天,默认为10天  
  4. TradeStrategy2.set_keep_stock_threshold(20)  
  5. # 修改股价下跌买入阀值为-0.08(下跌8%),默认为-0.10(下跌10%)  
  6. TradeStrategy2.set_buy_change_threshold(-0.08)  
  7. # 实例化新的回测对象trade_loop_back  
  8. trade_loop_back = TradeLoopBack(trade_days, trade_strategy2)  
  9. # 执行回测  
  10. trade_loop_back.execute_trade()  
  11. print '回测策略2 总盈亏为:{}%'.format(  
  12.     reduce(lambda a, b: a + b, trade_loop_back.profit_array) * 100)  
  13. # 可视化回测结果,如图2-5所示  
  14. plt.plot(np.array(trade_loop_back.profit_array).cumsum()) 

输出如下,结果如图2-5所示。

  1. 回测策略2 总盈亏为:31.9% 

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

精通正则表达式(第3版)

随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊