Files
my_wiki/raw/量化/abuquant-src/python/extC.py
T

77 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- encoding:utf-8 -*-
from __future__ import print_function
import seaborn as sns
import warnings
# noinspection PyUnresolvedReferences
import abu_local_env
import abupy
from abupy import EStoreAbu, abu
from abupy import ABuSymbolPd
from abupy import tl
from abupy import nd
from abupy import ABuMarketDrawing
warnings.filterwarnings('ignore')
sns.set_context(rc={'figure.figsize': (14, 7)})
"""
附录C-量化统计分析及指标应用
abu量化系统github地址:https://github.com/bbfamily/abu (您的star是我的动力!)
abu量化文档教程ipython notebookhttps://github.com/bbfamily/abu/tree/master/abupy_lecture
本节内容建议对照阅读abu量化文档:第13节 量化技术分析应用
"""
def sample_c1():
"""
C.1 量化统计分析应用
:return:
"""
tsla_df = ABuSymbolPd.make_kl_df('usTSLA', n_folds=2)
jumps = tl.jump.calc_jump(tsla_df)
print('jumps:\n', jumps)
# sw[0]代表非时间因素的jump_powersw[1]代表时间加权因素的jump_power,当sw[0]=1时与非加权方式相同,具体实现请参考源代码
filter_jumps = tl.jump.calc_jump_line_weight(tsla_df, sw=(0.5, 0.5))
print('filter_jumps:\n', filter_jumps)
# tl.wave.calc_wave_abs()函数可视化价格波动情况
tl.wave.calc_wave_abs(tsla_df, xd=21, show=True)
"""
C.2 量化技术指标应用: 对量化策略失败结果的人工分析
"""
def sample_c2():
"""
C.2 量化技术指标应用: 对量化策略失败结果的人工分析
:return:
"""
abupy.env.disable_example_env_ipython()
# 从之前章节的缓存中读取交易数据
abu_result_tuple_train = abu.load_abu_result_tuple(n_folds=5, store_type=EStoreAbu.E_STORE_CUSTOM_NAME,
custom_name='train_cn')
# 只筛选orders中有交易结果的单子
has_result = abu_result_tuple_train.orders_pd[
abu_result_tuple_train.orders_pd.result == -1]
# 随便拿一个交易数据作为示例
sample_order = has_result.ix[100]
_ = ABuMarketDrawing.plot_candle_from_order(sample_order)
nd.macd.plot_macd_from_order(sample_order, date_ext=252)
nd.boll.plot_boll_from_order(has_result.ix[100], date_ext=252)
nd.ma.plot_ma_from_order(has_result.ix[100], date_ext=252, time_period=[10, 20, 30, 60, 90, 120])
if __name__ == "__main__":
sample_c1()
# sample_c2()