一个简单的仓位设置策略(适合实战!)

一个成熟的量化策略通常都会包含三部分:选股、择时以及风险控制。如果要给这三部分的重要性排序,我的排序为:风险控制>择时>选股。

在进行投资的过程中,保本是第一步,赚钱才是第二步,所以对于风险的控制格外的重要。如果对于风险的控制不合理,即使短期运气好赚了很多钱,在长期而言赚的也会亏回去甚至把本也亏完。择时就是买入或卖出时机。选股就是股票的选择。

接下来我将会介绍一下我瞎设计的风险控制策略或者叫仓位控制策略。

在计算每日的仓位设置时,首先初始化仓位为0。

(1) 如果大盘收盘指数在5天均线上,加一层仓。

(2) 如果大盘收盘指数在10天均线上,加1.5层仓。在10天均线下,并且偏离10天均线3%以内,加1层仓。在10天均线下,并且偏离10天均线6%以内,加0.5层仓。

(3) 如果大盘收盘指数在21天均线上,加1.5层仓。在21天均线下,并且偏离21天均线3%以内,加1层仓。在21天均线下,并且偏离21天均线6%以内,加0.5层仓。
(4) 如果大盘收盘指数在30天均线上,加1层仓。在30天均线下,并且偏离30天均线5%以内,加0.5层仓。
(5) 如果5天均线趋势向上,加一层仓。
(6) 如果10天均线趋势向上,加1.5层仓。如果走平加0.5层仓。
(7) 如果21天均线趋势向上,加1.5层仓。如果走平加0.5层仓。
(8) 如果30天均线趋势向上,加1层仓。如果走平加0.5层仓。

举个例子,今天(2020年3月3日)收盘指数在5天均线上,仓位+1;在10天均线上,仓位+1.5;在21天均线上,仓位+1.5;在30天均线上仓位+1;5天均线趋势走平仓位+0;10天均线趋势走平仓位+0.5;21天均线趋势向上仓位+1.5;30天均线趋势向下仓位+0。所以仓位设置可以在7成仓左右。(当然实战中可以结合基本面和个股判断)

衡量均线趋势
如何衡量均线趋势向上、向下还是走平呢?肉眼对于趋势的走向很好判断,那计算机如何识别呢?我的设计如下:

如果连续两天均线都上升并且涨幅超过0.005,则表示趋势向上;如果连续两天均线都下跌并且跌幅超过0.005,则表示趋势向下;除此之外均线走平。

回测

回测策略:不买个股,仅买指数。跟买股票不同(至少需要买100股),买指数可以以任意金额买入(像支付宝基金最低10元那种买入)。

回测结果1
回测时间:2004年1月1日至2020年1月1日
账户最终涨幅在280%左右,也就是翻了将近3倍。指数只上涨了84%。差不多年化利率在8.7%左右。虽然在前面没有跑过指数,但后面却远远地超过了指数,几乎也没有人能把行情从头吃到尾吧,我觉得这个策略还是有效的。
在这里插入图片描述
回测结果2
那假设我们在最高点买入会是一个什么情况呢?最高点时有6100多点,大概在2007年10月到11月之间。
回测时间:2007年11月1日至2020年1月1日
账户的最终涨幅在42%左右,相当于年化利率3%左右。账户最大亏损也仅在20%左右。指数最终跌了48%,将近跌了一半。
在这里插入图片描述

结语

本篇文章介绍了一个超级简单的仓位控制策略。在个人投资的过程,如果不知道该持几成仓可以用这个简单的方法进行计算,口算即可!!!我个人觉得这个策略可以给自己的实战策略做一个参考。当然仓位的控制不仅仅要考虑技术面,还要考虑基本面、个股持仓情况等。

虽然这个仓位控制策略在指数上受益一般,但如果再细化设计一下并结合个股进行投资,我相信这个年化利率只会在20%以上。

本篇文章的一些参数我一个都没有调过,一气呵成,大家可以根据我的代码自己调整一些参数设置观察收益情况,比如重新调整10天均线为13天均线。

本篇文章代码
https://github.com/wbbhcb/stock_market

对量化、数据挖掘、深度学习感兴趣的可以关注公众号,本人不定期分享有关这些方面的研究。
在这里插入图片描述
个人知乎:
https://www.zhihu.com/people/e-zhe-shi-wo/activities

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于Hibernate实战程序的建议和实现方法,您可以参考以下步骤: 1.首先,您需要在Maven或Gradle中添加Hibernate依赖,例如: ``` <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.4.10.Final</version> </dependency> ``` 2.然后,您需要设置Hibernate的配置文件hibernate.cfg.xml,其中包含Hibernate的数据库连接信息、实体类映射关系、缓存策略等配置。例如: ``` <hibernate-configuration> <session-factory> <!-- 配置数据库连接信息 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">pwd</property> <!-- 配置实体类映射关系 --> <mapping class="com.example.User"/> <!-- 配置缓存策略 --> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> <property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.use_query_cache">true</property> </session-factory> </hibernate-configuration> ``` 3.接下来,您可以创建一个实体类,例如User类,该类需要使用Hibernate注解来映射到数据库表中。例如: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // ... } ``` 4.最后,您可以使用Hibernate的API来进行数据库操作,例如: ``` // 创建SessionFactory SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); // 创建Session Session session = sessionFactory.openSession(); // 开始事务 Transaction tx = session.beginTransaction(); // 保存实体类 User user = new User(); user.setName("Tom"); user.setAge(20); session.save(user); // 提交事务 tx.commit(); // 关闭Session和SessionFactory session.close(); sessionFactory.close(); ``` 以上就是一个简单的Hibernate实战程序的实现步骤,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值