WeQuant交易策略—Chaikin A/D
策略名称:AD指标策略 多空双方力量浮标- AD(Chaikin A/D线)策略
关键词:ChaikinA/D线、多空对比。
AD指标是一种非常流行的平横交易量指标, 用于估定一段时间内该证券累积的资金流量。指标大于0时多方力量强,买入;小于0时空方力量强,卖出。
方法:
1)通过特定周期内的价格以及成交量,来确定多头和空头的强弱;
2)在多头力量强时买入,空头力量强时卖出
# !/usr/bin/env python # -*- coding: utf-8 -*- # 策略代码总共分为三大部分,1)PARAMS变量 2)initialize函数 3)handle_data函数 # 请根据指示阅读。或者直接点击运行回测按钮,进行测试,查看策略效果。 # 策略名称:AD指标策略 # 关键词:ChaikinA/D线、多空对比。 # 方法: # 1)通过特定周期内的价格以及成交量,来确定多头和空头的强弱; # 2)在多头力量强时买入,空头力量强时卖出 import numpy as np import talib # 阅读1,首次阅读可跳过: # PARAMS用于设定程序参数,回测的起始时间、结束时间、滑点误差、初始资金和持仓。 # 可以仿照格式修改,基本都能运行。如果想了解详情请参考新手学堂的API文档。 PARAMS = { "start_time": "2017-02-01 00:00:00", "end_time": "2017-08-01 00:00:00", "slippage": 0.003, # 此处“slippage"包含佣金(千二)+交易滑点(千一) "account_initial": {"huobi_cny_cash": 100000, "huobi_cny_btc": 0}, } # 阅读2,遇到不明白的变量可以跳过,需要的时候回来查阅: # initialize函数是两大核心函数之一(另一个是handle_data),用于初始化策略变量。 # 策略变量包含:必填变量,以及非必填(用户自己方便使用)的变量 def initialize(context): # 设置回测频率, 可选:"1m", "5m", "15m", "30m", "60m", "4h", "1d", "1w" context.frequency = "4h" # 设置回测基准, 比特币:"huobi_cny_btc", 莱特币:"huobi_cny_ltc", 以太坊:"huobi_cny_eth" context.benchmark = "huobi_cny_btc" # 设置回测标的, 比特币:"huobi_cny_btc", 莱特币:"huobi_cny_ltc", 以太坊:"huobi_cny_eth" context.security = "huobi_cny_btc" # 获取历史数据的长度 context.user_data.ad_window = 6 # 至此initialize函数定义完毕。 # 阅读3,策略核心逻辑: # handle_data函数定义了策略的执行逻辑,按照frequency生成的bar依次读取并执行策略逻辑,直至程序结束。 # handle_data和bar的详细说明,请参考新手学堂的解释文档。 def handle_data(context): # 获取历史数据, 取后ad_window根bar hist = context.data.get_price(context.security, count=context.user_data.ad_window+1, frequency=context.frequency) if len(hist.index) < context.user_data.ad_window+1: context.log.warn("bar的数量不足, 等待下一根bar...") return # 历史收盘价 high = np.array(hist["high"]) low = np.array(hist["low"]) close = np.array(hist["close"]) volume = np.array(hist["volume"]) # 初始化买入/卖出信号 long_signal_triggered = False short_signal_triggered = False # 计算AD值 ad = talib.AD(high, low, close, volume) # 产生买入/卖出信号 if ad[-1] > 0: long_signal_triggered = True elif ad[-1] < 0: short_signal_triggered = True # 有卖出信号,且持有仓位,则市价单全仓卖出 if short_signal_triggered: if context.account.huobi_cny_btc >= HUOBI_CNY_BTC_MIN_ORDER_QUANTITY: context.log.info("正在卖出 %s" % context.security) context.log.info("卖出数量为 %s" % context.account.huobi_cny_btc) context.order.sell_limit(context.security, quantity=str(context.account.huobi_cny_btc), price=str(close[-1]*0.98)) else: context.log.info("仓位不足,无法卖出") # 有买入信号,且持有现金,则市价单全仓买入 elif long_signal_triggered: if context.account.huobi_cny_cash >= HUOBI_CNY_BTC_MIN_ORDER_CASH_AMOUNT: context.log.info("正在买入 %s" % context.security) context.log.info("下单金额为 %s 元" % context.account.huobi_cny_cash) context.order.buy_limit(context.security, quantity=str(context.account.huobi_cny_cash/close[-1]*0.98), price=str(close[-1]*1.02)) else: context.log.info("现金不足,无法下单") else: context.log.info("无交易信号,进入下一根bar")
回测
从回测结果可以看出,AD线指标在捕捉一些较大趋势时比较准确,但是在小幅震荡的行情中表现一般。
AD线的主要优势是对未来价格的趋势预测。在使用过程中,可以将AD线指标与其他一些反转指标相结合。如,使用AD线指标来预测趋势,确认交易方向,用W%R等超买超卖指标指标来确定交易时机。
A/D线指标是一个价量结合的指标,使用日内的价格变化以及成交量,来估算成交流量,能够比较有效的预测未来价格的趋势。实际操作中,可以与一些反转指标共同使用。
WeQuant交易策略—Chaikin A/D的更多相关文章
- WeQuant交易策略—网格交易
网格交易策略(Grid Trading) 策略介绍 网格策略本质上是一种低吸高抛的策略.标的物价格越低,吸纳的头寸越多:标的物价格越高,卖出的头寸越多.网格策略巧妙地借鉴了日常生活中渔翁撒网扑鱼的思路 ...
- WeQuant交易策略—Dual Thrust
Dual Thrust策略 策略介绍 Dual Thrust是一个趋势跟踪系统,由Michael Chalek在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一. Dual ...
- WeQuant交易策略—ATR
ATR(真实波幅均值)策略 策略介绍 ATR(average true range,真实波幅均值),是用来衡量一段时间内价格的真实的平均波动范围,ATR不是一个领先指标,但是它测量最重要的市场参数之一 ...
- WeQuant交易策略—RSI
RSI指标策略 策略介绍 RSI(相对强弱指标),是通过一段时期内的平均收盘上涨和下跌数,计算价格上涨所产生的波动占整个波动的百分比,来分析市场买卖盘的意向和实力. 计算公式(以日为单位举例) RSI ...
- WeQuant交易策略—BOLL
BOLL(布林线指标)策略 简介 BOLL(布林线)指标是技术分析的常用工具之一,由美国股市分析家约翰•布林根据统计学中的标准差原理设计出来的一种非常简单实用的技术分析指标.一般而言,价格的运动总是围 ...
- WeQuant交易策略—KDJ
KDJ随机指标策略策略介绍KDJ指标又叫随机指标,是一种相当新颖.实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具.随机指标KDJ ...
- WeQuant交易策略—MACD
MACD(指数平滑异同平均线)策略简介MACD指标应该是大家最常见的技术指标,在很多股票.比特币的软件中都是默认显示的.MACD是从双指数移动平均线发展而来的.意义和双移动平均线基本相同,即由快.慢均 ...
- WeQuant交易策略—简单均线
简单双均线策略(Simple Moving Average) 策略介绍简单双均线策略,通过一短一长(一快一慢)两个回看时间窗口收盘价的简单移动平均绘制两条均线,利用均线的交叉来跟踪价格的趋势.这里说的 ...
- WeQuant交易策略—EMV
EMV指标策略 简介 EMV(Ease of Movement Value, 简易波动指标),它是由RichardW.ArmJr.根据等量图和压缩图的原理设计而成, 目的是将价格与成交量的变化结合成一 ...
随机推荐
- StringBuilder类中的重要方法
下面的API注解包含了StringBuilder类中的重要方法 append(boolean b):将 boolean 参数的字符串表示形式追加到序列. append(char c):将 char 参 ...
- Android系统--输入系统(十六)APP跟输入系统建立联系_InputChannel和Connection
Android系统--输入系统(十六)APP跟输入系统建立联系_InputChannel和Connection 0. 核心:socketpair机制 1. 回顾Dispatch处理过程: 1.1 放入 ...
- Extjs4+PHP MVC模式一(入门)
Extjs是一个js框架,可以实现大部分web页面的东西,个人理解是一款集html.css.js一体的框架,功能挺强大的.结合PHP和sql可以实现整个系统.现在来说说怎么用它.(我的项目是用的TP框 ...
- 第一章:火狐浏览器 : 环境配置: FireFox 版本38 + jdk 7 + selenium 2.53.6 + selenum-version 2.48.2
配置一套完整的 selenium + Java + Firefox38 环境: 1. 火狐浏览器的版本 : 38 2. JDK 安装 1.7 版本的 3. 安装 Python 的版本是 2.7 4. ...
- 创建 Machine - 每天5分钟玩转 Docker 容器技术(46)
对于 Docker Machine 来说,术语 Machine 就是运行 docker daemon 的主机.“创建 Machine” 指的就是在 host 上安装和部署 docker.先执行 doc ...
- (转)Linux下查看文件和文件夹大小 删除日志
场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...
- Linux学习笔记--一些错误的记录
运行linux的时候,输入shutdown -r now命令提示:bash:shutdown is not found.出现这个错误是因为这条命令没有加入到系统的配置文件中,运行命令export PA ...
- ABP 重写主键ID
[Column("你那表的源主键名")] public override leixing Id{ get; set; }
- Apache Kafka - 介绍
原文地址地址: http://blogxinxiucan.sh1.newtouch.com/2017/07/12/Apache-Kafka-介绍/ Apache Kafka教程 之 Apache Ka ...
- storm从入门到放弃(二),任务分配过程-核心机密
背景:目前就职于国内最大的IT咨询公司,恰巧又是毕业季,所在部门招了100多个应届毕业生,本人要跟部门新人进行为期一个月的大数据入职培训,特此将整理的文档分享出来. 原文和作者一起讨论:http:// ...