量化交易之日内回转策略:如何利用MACD指标实现盈利?

哈喽,大家好,我是木头左!

日内回转策略是一种短线交易策略,其核心思想是在一天内通过买入和卖出股票来实现利润。这种策略的主要优点是可以在短期内获取较高的收益,同时风险相对较小。日内回转策略主要适用于个股波动较大、流动性较好的股票。本文将详细介绍日内回转策略的基本原理和操作方法,并结合实例进行解析,帮助投资者更好地理解和运用这一策略。

日内回转策略的原理

日内回转策略的原理是利用股票价格的短期波动来获取收益。具体来说,投资者首先买入一定数量的股票,然后根据60秒的数据来计算MACD(12,26,9)线。当MACD>0且MACD_pre<0时,买入100股;当MACD<0且MACD_pre>0时,卖出100股。但每日操作的股票数不超过原有仓位,并于收盘前把仓位调整至开盘前的仓位。本策略需在个股分钟线下运行。

日内回转策略的操作步骤

第一步:选择股票

在选择股票时,投资者需要关注以下几个方面:

  1. 股票的流动性:选择流动性较好的股票,以便在需要时能够快速买入和卖出。
  2. 股票的波动性:选择波动较大的股票,以便在短期内获取较高的收益。
  3. 股票的业绩:选择业绩较好的股票,没有退市风险的,以便降低投资风险。
第二步:设定仓位

在进行日内回转交易之前,投资者需要设定一个合理的仓位。仓位的大小应根据投资者的风险承受能力、资金规模以及市场情况来确定。一般来说,仓位不宜过大,以免在市场出现不利变化时造成较大的损失。

第三步:买入股票

在确定了股票和仓位之后,投资者可以开始买入股票。买入时,投资者需要关注股票的价格走势,选择合适的时机进行买入。一般来说,当股票价格出现上涨趋势时,投资者可以选择买入;当股票价格出现下跌趋势时,投资者可以选择观望。

第四步:计算MACD指标

在买入股票之后,投资者需要根据60秒的数据来计算MACD(12,26,9)线。当MACD>0且MACD_pre<0时,表示股票价格可能出现上涨趋势;当MACD<0且MACD_pre>0时,表示股票价格可能出现下跌趋势。

	# 计算MACD线
	if ContextInfo.total >= 0:
		recent_date = np.array(df.iloc[-35:, 0])

		macd = talib.MACD(recent_date)[0][-1]
		macd_pre = talib.MACD(recent_date)[0][-2]
第五步:买入和卖出股票

根据计算得到的MACD指标,投资者可以决定是否进行买入或卖出操作。当MACD>0且MACD_pre<0时,投资者可以买入100股;当MACD<0且MACD_pre>0时,投资者可以卖出100股。但每日操作的股票数不超过原有仓位,并于收盘前把仓位调整至开盘前的仓位。

# 根据MACD>0则开仓,小于0则平仓

		if date[-8:-3] != '14:55':
			if macd > 0 and macd_pre < 0:
				# 根据MACD>0则开仓,小于0则平仓
				if avaliable > df.iloc[-1, 0] * ContextInfo.Lots * 100:
					order_shares(ContextInfo.get_universe()[0], ContextInfo.Lots, 'fix', df.iloc[-1, 0], ContextInfo,
									ContextInfo.accountID)
					flage = True
					singleemited = True
					ContextInfo.MarketPosition[ContextInfo.get_universe()[0]] += ContextInfo.Lots
					print (ContextInfo.get_universe()[0], 'open position at market price', ContextInfo.Lots, '股')

			elif macd < 0 and macd_pre > 0 and holding[ContextInfo.get_universe()[0]] >= ContextInfo.Lots:
				order_shares(ContextInfo.get_universe()[0], -ContextInfo.Lots, 'fix', df.iloc[-1, 0], ContextInfo,
								ContextInfo.accountID)
				flage = False
				singleemited = True
				print(ContextInfo.get_universe()[0], 'close position at market price', ContextInfo.Lots, '股')
				ContextInfo.MarketPosition[ContextInfo.get_universe()[0]] -= ContextInfo.Lots	
第六步:收盘前调整仓位

在交易日结束前,投资者需要将手中的股票数量调整至开盘前的仓位。这样可以避免因为持仓过重而导致的风险。

if ContextInfo.MarketPosition[ContextInfo.get_universe()[0]] > ContextInfo.total:
				order_shares(ContextInfo.get_universe()[0],
								-(ContextInfo.MarketPosition[ContextInfo.get_universe()[0]] - ContextInfo.total), 'fix',
								df.iloc[-1, 0], ContextInfo, ContextInfo.accountID)
				flage = False
				singleemited = True				
				ContextInfo.MarketPosition[ContextInfo.get_universe()[0]] = ContextInfo.total

			if ContextInfo.MarketPosition[ContextInfo.get_universe()[0]] < ContextInfo.total:
				order_shares(ContextInfo.get_universe()[0],
								(ContextInfo.total - ContextInfo.MarketPosition[ContextInfo.get_universe()[0]]), 'fix',
								df.iloc[-1, 0], ContextInfo, ContextInfo.accountID)
				flage = True
				singleemited = True
				ContextInfo.MarketPosition[ContextInfo.get_universe()[0]] = ContextInfo.total
	

总结

1. 底仓

日内回转策略是一种短线交易策略,其主要优点是可以在短期内获取较高的收益,但是最大缺点就是需要底仓。由于该策略依赖于股票价格的短期波动,如果市场出现单边行情时,投资者也可能会遭受重大损失。

2. 高频率交易

日内回转策略需要频繁地进行买卖操作,这会增加交易成本,包括佣金和印花税等。此外,频繁的交易也可能导致投资者过度关注短期的市场波动,而忽视了长期的投资目标。

可以通过以下几种方式来优化该策略。

1. 设定止损点

为了降低风险,可以设定一个止损点。一旦股票价格跌破这个点,就立即卖出股票,以防止进一步的损失。

2. 选择合适的交易时间

可以选择在市场波动较小的时候进行交易,以降低交易成本和风险。此外,还可以通过技术分析来确定最佳的交易时间。

3. 控制交易频率

可以通过设定交易次数的限制来控制交易频率。例如,可以规定每天最多进行若干次交易,或者每次交易的股票数量不超过总仓位的一定比例。

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python自动化工具

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值