![]() 本节主要讲2部分内容:ta-lib金融技术分析库&上一节指标的策略应用 TA-LIB金融分析库 TA-Lib,全称“Technical Analysis Library”, 即技术分析库,是Python金融量化的高级库,涵盖了150多种股票、期货交易软件中常用的技术分析指标,如MACD、RSI、KDJ、动量指标、布林带等等。TA-Lib可分为10个子板块:Overlap Studies(重叠指标),Momentum Indicators(动量指标),Volume Indicators(交易量指标),Cycle Indicators(周期指标),Price Transform(价格变换),Volatility Indicators(波动率指标),Pattern Recognition(模式识别),Statistic Functions(统计函数),Math Transform(数学变换)和Math Operators(数学运算),见下图。TA-Lib在国外应用非常广泛,是Python量化投资分析的主要利器之一(另外两个是Pandas和zipline) ![]() 其中 Overlap Studies Functions重叠指标 是我们的常用指标: ![]() 移动平均线是技术分析理论中应用最普遍的指标之一,主要用于确认、跟踪和判断趋势,提示买入和卖出信号,在单边市场行情中可以较好的把握市场机会和规避风险。但是,移动平均线一般要与其他的技术指标或基本面相结合来使用,特别是当市场处于盘整行情时,其买入卖出信号会频繁出现,容易失真。 ![]() 具体案例如下图: ![]() 布林带(Bollinger Band),由压力线、支撑线价格平均线组成,一般情况价格线在压力线和支撑线组成的上下区间中游走,区间位置会随着价格的变化而自动调整。布林线的理论使用原则是:当股价穿越最外面的压力线(支撑线)时,表示卖点(买点)出现。当股价延着压力线(支撑线)上升(下降)运行,虽然股价并未穿越,但若回头突破第二条线即是卖点或买点。在实际应用中,布林线有其滞后性,相对于其他技术指标在判断行情反转时参考价值较低,但在判断盘整行情终结节点上成功率较高。具体案例如下图: ![]() 此次使用的相关指标应该有个了解了,接着我们应用到我们的策略中。 策略开发 策略准备阶段配置 #策略准备配置minimal_roi = { '60': 0.01, '30': 0.03, '20': 0.04, '0': 0.05}#收益率时长要求stoploss = -0.15 #适当放开止损率timeframe = '5m'order_types = { 'entry': 'limit', 'exit': 'limit', 'stoploss': 'market', 'stoploss_on_exchange': False} 策略引入指标:
策略买入&卖出的逻辑: # 买入逻辑dataframe.loc[ ( (qtpylib.crossed_above(dataframe['rsi'], 30)) & #当前市恐慌 (dataframe['tema'] <= dataframe['bb_middleband']) & # 由下而上穿过bb_mid (dataframe['tema'] > dataframe['tema'].shift(1)) & # 当前额指标值大于前一个时段 (dataframe['volume'] > 0) # 要求成交量大于0 ), 'enter_long'] = 1
接着我们看一下回测效果: # 回测docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy MutilIndexStrategy --timerange 20220409-20220509 -i 5m ![]() ![]() 总结一下核心数据: 1、一共进行5个交易对,回测时间一个月,净亏损65USDT 2、表现最好交易对:TRX/USDT,表现最差交易对:ADA/USDT 整体还是一个亏损的策略,接着我们优化一下: 只采用表现最好的交易对TRX/USDT (注:通常情况下不存在一个交易策略可以对大部分的交易对或行情生效,通常我们会为一种行情或交易对定制交易对)
![]() ![]() 效果总结: 1、回测时间一个月,整体盈利12USDT,收益率1.2% 2、单日最大盈利6.4USDT,单日最大亏损-3.2USDT 整体看收益和最大回撤都比较小,是一个相对稳定的策略。 接着我们需要思考以下2个问题: ![]() 1、如果新增交易指标,如何确定指标的阈值? 2、现有的策略是否还有提升空间,是否可以通过调整阈值来提升收益率? 以上不管哪种情况,我们都需要不断的尝试不同的 指标+阈值 的组合,这个组合优化是非常大的,人力很难穷尽,那么是否有办法自动帮我们找出最优的参数组合? 下一节我们接着介绍利用Hyperopt进行超参数优化,使用贝叶斯搜索和ML回归算法在搜索超空间中快速找到使目标值最小化的参数组合 |
|