用聚宽网写双均线策略(1)

鉴于上次自己建立python系统是在说太浪费时间,而且主要是浪费中数据上,实在不爽,这次用一下第三方平台,提高一下建模的速度,平台选择聚宽网,国内的平台很多,聚宽/优矿/米宽,都差不多少,原来还有一家大宽网,里面冯总的水平挺高,讲课也讲的深入浅出,不知道为什么现在不做这块了,很是遗憾。这次就随便选了一个,用聚宽试一下水吧。


先来个简单模型,双均线,直接上代码,这个代码是我自己写的,和网站上的帖子代码不一样

from jqdata import *
def initialize(context):
    set_benchmark('399006.XSHE')
    set_order_cost(OrderCost(close_tax=0.0001, open_commission=0.0001, close_commission=0.0001) ,type='stock')
    g.stock='601699.XSHG'
    set_option('use_real_price',True)
    # set_option('volume',1)
    run_daily(trade,'every_bar')
    g.n1=5
    g.n2=15
def trade(context):
    ma1=attribute_history(g.stock,g.n1,'1d', fields='close')['close'].mean()
    ma2=attribute_history(g.stock,g.n2,'1d', fields='close')['close'].mean()
    
    if (ma1>ma2) and context.portfolio.positions_value==0:
        cash=context.portfolio.available_cash
        order_value(g.stock, cash)
    if (ma1<ma2) and  context.portfolio.positions_value>0:
        order_target(g.stock, 0)
    

这个代码的难点在if判断这行,自己写的时候,很容易报错,如果提示:

“ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().”

这是因为在取ma的时候,用attribute_history()这个函数的时候,返回值默认是一个dataframe,所以在比较的时候,python无法理解怎么去比较,解决的办法就是将dataframe中的close对应的值提取出来——加上['close'],然后再取mean(),就可以了,如果不加的话,返回值是close xxx的一个dataframe,是无法用if xx and xx 来判断的。


如果说,就用聚宽这个平台加上python这么复杂的脚本语言一起上,就为了一个双均线策略,那实在是“杀鸡还用宰牛刀”了,现在这个结论和代码量,如果用文华财经,5行代码就能完成,而且速度一点不差,学习文华财经的麦语言,难度基本上是python的百分之一,所以,如果仅仅是为了使用技术分析指标,就用python的话,纯属吃饱撑的。


策略最少还有以下几个提高的地方:

1.参数优化。我用的是5,15,很明显不上最后的均线参数,这个地方要加一个遍历的for循环来增加参数,当然做单这点也仅仅是和文华财经里面的优化功能打个平手,而且编程还得费半天劲,文华财经拿鼠标点几下就搞定。

2.双均线策略的核心思想是趋势跟踪,趋势跟踪的核心假设是存在趋势,存在趋势的核心假设就比较多了,基本面/技术面/心理层面/宏观经济/国家政策等等等,反正就是一句话,见仁见智。这就造成一个最大的问题,策略本身的普适性极差,因为核心假设有重大漏洞。

这只股票我是随便选的,同样的策略,同样的假设,换一个股票可能赔钱,再换一个股票可能是一年之后打平,白给券商打工,再换一个可能赚钱还没有货币基金多,所以,这个策略核心问题不解决,其实,所谓的收益只不过是水中月镜中花。

这也是这么多年以来,我和无数的客户,分析师,操盘手和基金经理探讨过无数次的问题,究竟什么因素导致趋势,为什么很多股票走出相似的走法,结果完全不同,甚至同一支股票走出相同的走法,结果都不同,技术分析之中三大假设之一的“历史会重演,太阳底下没有新东西”,事实是历史经常不重演,太阳底下天天新东西。

不解决这个核心假设,其实继续挖掘什么新指标也就是竹篮打水,所以,这种核心问题是文华财经解决不了的,也是要用更复杂的算法去解决的问题。

3.双均线策略来自单均线,往后发展就是多条均线的一起使用,以及配合其他指标的集团作战,假如同时使用三个指标一起判断进出场,比如均线,boll,市值,加入了基本面因子之后,很明显这回文华财经是爱莫能助了,就算没有基本面,当用多个技术指标的时候,也有问题,那就是矛盾的时候怎么办?均线让你买,boll让你卖,大多数人一定选择不做,这就是正确的解决方案吗?这就好比考试的时候,有一道不会,前面同学选B,后面同学选C,这个时候,自己就空着?很明显不是,因为二选一的时候,我一定会回忆起来,前后两名同学的平时考试水平,后面的学霸,根本就不需要前面同学的答案,所以,指标之中,是否也有“学霸”?这是文华财经干不了的,也是用python才能解决的。

一个问题一个问题来吧,先优化一下这个策略本身。

如果自己有策略,但是不会写代码的话,可以给我私信,价钱从几十到几百不等,看策略实现的难易程度而定,我使用的是聚宽平台,代码写好之后,可以在上面上模拟盘和实盘,对应的券商是第一创业证券。
   

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值