量化投资入门教程二——双均线策略
量化交易策略:MACD双均线交叉策略

概述该策略基于MACD指标,利用MACD指标中的MACD线和Signal线的交叉来判断交易信号。
当MACD 线上穿Signal线时产生做多信号,当MACD线下穿Signal线时产生做空信号。
同时使用前一根K线的最低价作为多头止损位,前一根K线的最高价作为空头止损位。
止盈位设置为4倍ATR(平均真实波幅)。
策略原理MACD指标由DIF线和DEA线组成,DIF线是快速均线和慢速均线的差值,DEA线是DIF线的移动平均线。
当DIF线上穿DEA线时,表明股价已经脱离超卖区域并开始向上,产生做多信号;当DIF线下穿DEA线时,表明股价已经脱离超买区域并开始向下,产生做空信号。
同时,策略使用前一根K线的最低价和最高价分别作为多头止损位和空头止损位,以控制风险。
止盈位设置为4倍ATR,以获取更多利润。
优势分析1.MACD指标能够较好地捕捉股价的趋势变化,特别是中长期趋势。
2.止损位的设置能够有效控制风险,避免单笔交易的损失过大。
3.止盈位的设置能够让利润充分扩大,提高策略收益。
4.代码逻辑清晰,容易理解和实现。
风险分析1.MACD指标有滞后性,可能错过最佳建仓时机。
2.止损位的设置相对简单,可能无法应对某些极端行情。
3.止盈位的设置可能导致错过更大的利润空间。
4.缺乏仓位管理,风险控制能力有限。
优化方向1.可以考虑加入其他指标,如RSI、布林带等,以提高信号准确性。
2.可以优化止损位的设置,如使用ATR或百分比止损,以更好地控制风险。
3.可以优化止盈位的设置,如使用移动止盈或部分止盈,以获取更多利润。
4.可以加入仓位管理,如基于风险比例调整仓位大小,以提高风险控制能力。
总结该策略基于MACD指标,通过MACD线和Signal线的交叉来判断交易信号,同时使用前一根K线的最低价和最高价作为止损位,止盈位设置为4倍ATR。
策略逻辑清晰,容易实现,能够较好地捕捉股价趋势。
但是,该策略也存在一些风险,如指标滞后、止损位设置简单等。
双均线策略代码

双均线策略代码1. 引言双均线策略是一种常见的技术分析方法,通常被用于股票、期货和外汇市场。
本文将介绍双均线策略的原理,并给出一份Python代码实现。
2. 双均线策略原理双均线策略基于均线的交叉信号进行交易决策。
具体而言,该策略使用两种不同周期的均线,通常是短期均线和长期均线。
当短期均线向上穿过长期均线时,被称为“金叉”,意味着市场趋势向上,投资者可以考虑买入;相反,当短期均线向下穿过长期均线时,被称为“死叉”,意味着市场趋势向下,投资者可以考虑卖出。
3. 双均线策略代码实现下面是一个使用Python编写的双均线策略代码实现示例:import pandas as pdimport numpy as np# 读取数据data = pd.read_csv('data.csv')# 计算短期均线data['short_ma'] = data['close'].rolling(window=10).mean()# 计算长期均线data['long_ma'] = data['close'].rolling(window=30).mean()# 计算均线交叉信号data['signal'] = np.where(data['short_ma'] > data['long_ma'], 1, -1)# 计算交易信号data['position'] = data['signal'].diff()# 回测策略data['return'] = data['position'] * data['close'].pct_change()# 计算累计收益率data['cum_return'] = (1 + data['return']).cumprod()# 输出策略表现print('总收益率:', data['cum_return'].iloc[-1] - 1)print('年化收益率:', (data['cum_return'].iloc[-1])**(250/len(data))-1)print('最大回撤:', min(data['cum_return'])-max(data['cum_return'].cummax()))4. 代码解释•第1行导入需要使用的库。
双均线ddi指标

双均线DDI指标是一种用于股票和期货交易的技术分析工具。
它结合了双均线系统和DDI指标,以帮助交易者判断市场的趋势和进出场时机。
双均线系统是通过两条不同周期的移动平均线来判断市场的趋势。
通常,短期均线位于长期均线之上时,市场被认为是处于上升趋势;短期均线位于长期均线之下时,市场被认为是处于下降趋势。
DDI指标,全称为方向标准离差指数,是通过观察一段时间内股价的波动情况来计算向上和向下的比例。
DDI指标通常以柱状线的形式表示,并通过分析该指标的走势来判断是买入还是卖出的信号。
双均线DDI指标策略的基本思路是:
1.定义两条不同周期的移动平均线,用于判断K线走势趋势。
2.定义DDI指标,用于判断进仓时机。
3.设置默认的止盈止损比例,以实现稳定盈利和及时止损。
在应用双均线DDI指标时,交易者需要注意以下几点:
1.长期均线的选择应根据个人的投资目标和风险承受能力来定,
一般选择200日均线作为参考。
2.短期均线的选择应比长期均线短,通常选择50日均线或30日
均线作为参考。
3.在使用DDI指标时,应结合其他技术分析工具和市场走势进行
综合判断。
4.DDI指标并非万能的,交易者应根据自己的风险承受能力和投
资目标来制定合理的交易策略。
总之,双均线DDI指标是一种实用的技术分析工具,可以帮助交易者更好地把握市场的趋势和进出场时机。
但同时,交易者也需要注意市场风险,制定合理的交易计划并严格执行。
量化投资入门教程二——双均线策略

量化投资入门教程二——双均线策略在量化投资中,常用的投资策略之一就是双均线策略。
双均线策略是通过计算短期均线和长期均线的交叉情况,来确定买入和卖出的时机。
下面将介绍如何使用双均线策略进行投资。
首先,我们需要选择合适的均线周期。
一般来说,短期均线周期一般为10日或20日,长期均线周期一般为50日或200日。
选择均线周期时,可以根据市场的特点和个人的投资风格来确定。
接下来,我们需要计算短期均线和长期均线的数值。
均线的计算方法是将一定周期内的股价相加,再除以周期的天数。
例如,10日均线是将过去10天的收盘价相加,再除以10。
长期均线的计算方法也是类似的。
然后,我们需要根据短期均线和长期均线的交叉情况来确定买入和卖出的时机。
当短期均线从下方向上穿过长期均线时,为买入信号;当短期均线从上方向下穿过长期均线时,为卖出信号。
通过交叉信号来进行买卖操作,可以提高投资的效果。
另外,我们还可以加入其他的指标或条件来进行进一步的判断。
例如,可以结合相对强弱指数(RSI)或者随机指标(KDJ)等技术指标,来判断股票当前的买入和卖出力度。
这样可以提高策略的准确性和稳定性。
需要注意的是,双均线策略是一种趋势跟踪策略,适用于市场有明显趋势的时候。
当市场没有明显趋势时,双均线策略的交易信号可能会产生较多的错误信号,导致交易频繁和盈利率下降。
最后,我们需要进行历史回测和实盘测试,来验证我们的双均线策略是否有效。
历史回测是通过回测软件,将策略应用到过去的股票数据上,来模拟交易过程和盈利情况。
实盘测试是将策略应用到真实的交易环境中,通过实际交易来验证策略的可行性。
综上所述,双均线策略是一种简单且常用的量化投资策略。
通过计算短期均线和长期均线的交叉情况,我们可以确定买入和卖出的时机。
在使用双均线策略时,需要选定合适的均线周期,并可以结合其他的技术指标来进行进一步的判断。
最后,需要进行历史回测和实盘测试来验证策略的可行性。
希望以上内容对初学者有所帮助。
手把手教学百年一人双均线交易方法设置方法

手把手教学百年一人双均线交易方法设置方法一、均线的定义1、均线是什么均线是一种投资者经常用的一项重要的技术指标,它是将某一段时间的收盘价之和除以该周期所得到的一根平均线。
假如一个星期内有5个交易日,就是把5个交易日的收盘价全部加起来除去5得出的平均数,当然,10日、20日等也是这样算的。
2、均线有哪些、不同颜色均线根据不同的选取参数,其作用和反应情况也有区别。
常用的参数有5日、10日、20日、30日、60日、120日、250日。
常用的颜色有白色(5日线)、黄色(10日线)、紫色(20日线)、绿色(30日线)、灰色(60日线)、蓝色(120日线)、橙色(250日),颜色和日线并不是固定搭配的,股民可以用自己喜欢的颜色随意设定。
二、均线的简单应用1、如何在走势图看均线(1)添加均线:我们首先调整到股票软件界面接着按MA 键就会出现如下图再按回车键即可添加(2)查看均线:2、分析时用哪条均线是一个时间区间内平均价格和趋势的反映,均线可以将过去一个时段内价格总体运行情况直观地呈现给我们。
每根线的作用和意义都不尽相同,下面简单跟大家说说它们的关系吧(1)5日均线(攻击线):股票价格上升突破攻击线,且攻击线向上则短期内看多。
同样的状况下,假如说5日均线向下股价跌破均线则短期看空。
(2)10日均线(行情线):盘中的操盘线越来越高的时候,股价突破操盘线,就代表着波段性中线上涨,反之下跌。
(3)20日均线(辅助线):就是用于协助10日均线的,不仅对价格运行力度和价格趋势角度进行推进,而且能对二者进行修正,稳定价格趋势运行方向。
若在盘中辅助线呈持续向上的攻击状态之时,当价格高于辅助线,这就表示波段性中线行情从这时候就开始看多了,反之看空。
百年一人讲解均线系统

百年一人讲解均线系统98年10月开始深入研究均线系统,并由此开始着手建立自己的数学模式和操作体系。
均线系统对于建立操作体系非常重要.1。
简单介绍均线的概念和研究均线过程中可能遇到的问题均线计算时的处理方法:算术平均和加权移动平均(但这两种处理方法都存在周期性和一些权重的问题)。
根据多年研究的结果,简单的算术平均就足够了。
对于中长期趋势来说,使用何种价格(开盘、收盘、最高和最低价)来计算均线的差别不大。
均线位置:均线所放位置不同,会产生不同的模式。
例如:向后或左右移动;或移中平均线(由此产生著名的薛斯通道理论).双均线系统(两条均线):均线的个数可以有一条、两条乃至多条。
建议使用两条均线,因为过多均线会使得体系过于复杂,同时存在操作界面的友好性问题。
均线周期的设置:没有最佳的周期(交易市场、品种、时段不同)。
均线的时间滞后性(有利有弊):对于判定趋势、跟随趋势有好处;同时,存在整体(趋势)和局部的关系(损失局部、看清整体).2.研究均线的方法均线研究的四个要素:周期、大小、方向和拐点.-—02年发表的文章《如何研究均线》格兰威尔移动平均线八大法则:重点是看问题的视角3。
均线的实战方法:介绍双均线系统(建议使用)均线可以解决跟随趋势的问题,同时可以实现定量化的研究双均线系统的好处:简单明了,容易建立模式。
同时,利于交易界面的设置.双均线周期设置:(64,256)-—见图60.gif(建议所有周期使用固定的设置)参数设置要符合倍数关系和分数关系:数术上存在内在的对称性和规律性设置(64,256)的原因:每年的交易天数在243天左右,256有年线的意思;64是256的四分之一。
同时还有其他深意。
通过变换周期来解决观察短期均线的问题。
图30。
gif(30分钟图)和图15.gif(15分钟图):在下跌趋势中,金叉一般是卖点。
建立体系就是建立规则。
例如:以60分钟建立交易规则时,可以认为60分钟的256线向下就是趋势向下(也可以用30、15分钟等为标准)。
双均线策略总结

双均线策略总结一、策略概述双均线策略是一种相对简单的技术分析方法,通过将两条不同周期的移动平均线进行比较,来判断市场趋势,并进行买卖决策。
该策略适用于各种市场和时间周期,是许多交易者常用的策略之一。
二、双均线的定义1. 短期移动平均线(Short-term Moving Average):通常使用5日、10日或20日等短期周期计算出来的移动平均线。
2. 长期移动平均线(Long-term Moving Average):通常使用50日、100日或200日等长期周期计算出来的移动平均线。
三、买入信号和卖出信号1. 金叉(Golden Cross):当短期移动平均线从下向上穿过长期移动平均线时,称为金叉。
这是一个买入信号。
2. 死叉(Dead Cross):当短期移动平均线从上向下穿过长期移动平均线时,称为死叉。
这是一个卖出信号。
四、优点和缺点1. 优点:(1)简单易懂:该策略只需要计算两个指标,容易理解和操作。
(2)适用性广:该策略适用于各种市场和时间周期。
(3)有效性高:该策略在一定程度上能够捕捉市场趋势,并且在短期内能够获得一定的收益。
2. 缺点:(1)滞后性强:由于移动平均线是根据过去的价格计算出来的,所以存在一定的滞后性,无法准确预测未来走势。
(2)容易受到噪音干扰:在市场波动较大的情况下,容易产生错误信号,导致交易失败。
五、风险控制1. 止损设置:在进行交易时,应该设置止损点位,以避免出现大幅亏损。
2. 仓位控制:为了降低风险,应该合理控制仓位大小,不要过度杠杆化。
六、总结双均线策略是一种相对简单有效的技术分析方法,在实践中被广泛应用。
但是需要注意的是,在使用该策略时需要结合其他技术指标和基本面分析来进行综合判断,并且要注意风险控制。
两条均线粘合选股公式

两条均线粘合选股公式股票投资是一门艺术与科学的结合,寻找有效的选股策略是投资者追求稳定盈利的关键之一。
而均线粘合选股公式是一种常见的技术指标,能够帮助投资者识别股票的买入时机。
本文将详细介绍两条均线粘合选股公式的原理和应用。
一、均线粘合选股公式的原理均线粘合是指短期均线与长期均线之间的趋势粘合程度。
一般来说,当短期均线上穿长期均线时,表明股票价格的强势将延续;反之,当短期均线下穿长期均线时,表明股票价格的弱势将延续。
均线粘合选股公式通过分析两条均线的相对位置和角度,来确定股票的买入时机。
二、简单移动平均线(SMA)选股公式简单移动平均线(Simple Moving Average,SMA)是最常见的均线类型之一。
它通过计算一段时间内股票价格的平均值,来反映股票价格的整体趋势。
1. 参数设置在使用SMA选股公式时,我们需要确定两条均线的参数。
一般来说,短期均线的周期应设置为较小的值,例如5或10天;而长期均线的周期应设置为较大的值,例如20或30天。
2. 选股信号当短期均线从下方穿越长期均线时,形成“金叉”信号,表示股票价格即将上涨,投资者可以考虑买入;反之,当短期均线从上方穿越长期均线时,形成“死叉”信号,表示股票价格即将下跌,投资者可以考虑卖出。
三、指数移动平均线(EMA)选股公式指数移动平均线(Exponential Moving Average,EMA)在均线粘合选股中也非常常见。
与SMA不同,EMA的计算更加重视近期的数据,因此它能更快地反映股票价格的短期走势。
1. 参数设置在使用EMA选股公式时,我们同样需要确定两条均线的参数。
一般来说,短期均线的周期可以设置为5或10天,长期均线的周期可以设置为20或30天。
2. 选股信号与SMA类似,当短期均线从下方穿越长期均线时,形成“金叉”信号,表示股票价格即将上涨,投资者可以考虑买入;反之,当短期均线从上方穿越长期均线时,形成“死叉”信号,表示股票价格即将下跌,投资者可以考虑卖出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无持仓时直接按照股票池等权买入;有持仓时,不在股票池中的股票卖出
实现量化投资策略的相关编程并非想象中这么困难,从 Python 的安装到量化 编程的实现只需简单几步(具体见 /q/forum.php?mod=viewthread&tid=54&extra=page%3D1 轻松 安装 Python、掘金量化平台及相关工具包)
2. Python 相关函数 2.1Python 标准函数
功能
函数原型
参数 参数名
含义
返回值
reverse 用于反向列表中元素
list.reverse()
该方法没有返回值,但是会对 列表的元素进行反向排序。
该方法没有返回值,但是会对列表的元
extend
list.extend(seq)
seq
素进行反向排序。
注:更多关于量化策略的教程和分析等精彩内容详见
/q/forum.php
# 初始金额
transaction_ratio=1,
# 成交比率
commission_ratio=0.0000,
# 手续费
slippage_ratio=0.000,
# 滑点
price_type=1) start = time.time() ret = ma.run() end = time.time() print(end - start)
3.金融术语
双均线策略:指的是运用两条不同周期的移动平均线,即短周期移动平均线和 长周期移动平均线的相对大小,研判买进与卖出时机的策略。当短周期的均线 从长期均线的下方,向上穿越至长周期的均线,所形成的交点,称为金叉。当 短周期的均线从长期均线的上方,向下穿越至长周期的均线,所形成的交点, 称为死叉。当出现金叉点时,市场属于多头市场;当出现死叉点时,市场属于 空头市场。
def on_bar(self, bar):
if bar.bar_type == 60:
position = self.get_positions() # 获取持仓量 if len(position) == 0: ##如果没有持仓,设 self.holding = 0
self.holding = 0
get_positions 和证券 ID 组成)和买卖方向的持仓信息。 xchange,
sec_id string 证券代码
策略类和交易服务类都提供该接口。
sec_id, side);
side
int
买卖方向
Position 对 象,持仓信息
open_long
异步开多仓,以参数指定的 symbol、价和
量化投资入门教程二——双 均线策略
目录 1. 策略原理及代码
1.1 策略原理 1.2 策略代码 2. Python 相关函数 2.1Python 标准函数 2.2 掘金接口函数 3.金融术语(双均线策略)
1.策略原理及代码
1.1 策略原理
股票:SHSE.600009;
时间:2016/1/1--2017/1/1 分频数据;
exchange
open_long(exch
量下单。如果价格为 0,为市价单,否则为
ange, sec_id,
限价单。策略类和交易服务类都提供该接
price, volume)
口
sec_id
string string
交易所代码, 如上交所
SHSE
委托下单生成
的 Order 对象 证券代码,如浦发银行
600000
self.close_list.append(bar.close)
if len(self.close_list) < 20: self.MA10 = self.close_list[:] self.MA20 = self.close_list[:]
if len(self.close_list) >= 20: close = np.asarray(self.close_list) self.MA10 = SMA(close, timeperiod=10) # 10 周期均线 self.MA20 = SMA(close, timeperiod=20) # 20 周期均线
if self.holding == 0: if self.MA10[-1] > self.MA20[-1]: # 10 周期均线>20 周期均线开仓 self.open_long('SHSE', '600009', 0, 10000)
if self.holding == 1: if self.MA10[-1] < self.MA20[-1]: # 10 周期均线<20 周期均线平仓 self.close_long('SHSE', '600009', 0, self.volume)
hange, sec_id,
为 0,为市价单,否则为限价单。策略类和
price, volume)
交易服务类都提供该接口。
price
string
证券代码,如浦发银行
600000
委托下单生成
的 Order 对象 委托价,如果 price=0,
float 为市价单,否则为限价
单
volume float 平仓量
if len(position) > 0: if position[0].available_yesterday > 0: # 如果有昨仓,设 self.holding = 1 self.volume = position[0].available_yesterday self.holding = 1 if position[0].available_today > 0: # 如果有今仓,设 self.holding = 2 self.holding = 2
price
float
委托价,如果 price=0, 为市价单,否则为限价 单
volume float 委托量
exchange string
交易所代码, 如上交所 SHSE
close_long
异步平多仓接口,以参数指定的 exchange,
sec_id
close_long(exc
证券代码 sec_id, 价和量下单。如果价格
if self.holding == 2: pass
if __name__ == '__main__':
ma = MA(
username='username',
# 输入用户名
password='password',
# 输入密码
strategy_id='strategy_2',
# 输入策略 ID
subscribe_symbols='SHSE.600009.bar.60', # 输入订阅代码
bar_type, n,
end_time='')
n
int
bar 周期,以秒为单 位,比如 60 即 1 分钟
Bar 列表 bar
提取的数据条数
end_time string
指定截止时间, 如 2015-10-30 15:00:00
exchange string 交易所代码
查询当前策略指定 symbol(由交易所代码 get_position(e
bars = self.get_last_n_bars('SHSE.600009', 60, 20, '2016-01-01 00:00:00') last_closes = [bar.close for bar in bars] # 提取每分钟收盘价 last_closes.reverse() # 查询出的结果为倒序,需反转 self.close_list.extend(last_closes)
功能
函数原型
参数
参数名 类型
说明
返回值
symbol
证券代码, 带交易所代 string 码以确保唯一,如
SHSE.600000
get_last_n_bar
s(symbol, 提取单个代码的最新 n 条 Bar 数据,策略类
bar_type int
get_last_n_bars 和行情服务类都提供该接口。
该方法没有返回值,但会在已 元素列表。 存在的列表中添加新的列表内
容。
返回对象(字符、列表、元组等)长度
len
len(s)
或项目个数。
s
对象
返回对象长度。
append 用于在列表末尾添加新的对象。
list.append(obj)
obj
添加到列表 该方法无返回值,但是会修改
末尾的对 原来的列表。
象。
2.2 掘金接口函数
mode=4, # 选择模式
td_addr='localhost:8001'
)
ma.backtest_config(
start_time='2016-01-01 09:00:00', # 起始时间
end_time='2017-01-01 09:00:00', # 结束时间
initial_cash=1000000,
1.2 策略代码(可直接在 python 中实现)
#!/usr/bin/env python # encoding: utf-8
import numpy as np from gmsdk import * from talib import SMA import time
class MA(StrategyBase): def __init__(self, *args, **kwargs): super(MA, self).__init__(*args, **kwargs) self.close_list = []