V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
datayes2015
V2EX  ›  推广

分钟线策略的初步探索

  •  
  •   datayes2015 · 2016-08-26 17:49:51 +08:00 · 2306 次点击
    这是一个创建于 2799 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本文主要讲了如下几点:
    分钟线如何获取开盘价如何做超短线策略如何控制仓位如何设置计数器限价单、市价单与涨跌停示例策略
    分钟线如何获取开盘价在分钟线策略框架中,提供了 account.get_attribute_history 来获取历史分钟线,故我们可以依据此来获得 09:30 那根分钟线,而 09:30 那根分钟线开高低收都是开盘价,我们就可以获取到开盘价了。
    如下是获取先分钟线到开盘价的距离的 windows 的函数,再通过调用 account.get_attribute_history 就可以获得开盘价啦。

    点击链接查看社区高清源代码: https://uqer.io/community/share/57ae9678228e5ba


    如下策略仅为测试,我们在各分钟线都可以得到各股票的开盘价。


    如下策略仅为测试,获得了股票的开盘价,计算当前分钟线收盘价到开盘价的收益率,若收益率小于-4%,则买入 1 手。


    通过查看回测详情可以看出,和日线级别策略不同,我们在一天内买了多次,因为这一分钟满足买入条件的股票,下一分钟也可能满足,而每次满足时,都会进行下单。
    如何做超短线因为我国股票买卖是 T+1 制度,在进行超短线策略时,我们往往需在今天就买入,才能在隔天卖出。当我们需要拿今日收盘价来做分析时,可以近似用 14:59 分钟线的收盘价做为当日收盘价来代替。
    如下策略仅为测试,当股票 14:59 分钟的收盘价大于开盘价时,买入 1 手,隔天卖出。


    如何控制仓位分钟线策略可以非常灵活的买卖,所以我们对仓位的控制也就会更复杂。下面分析两种较为初级的情况。
    情况一:在某一分钟时点判断符合条件的股票进行买入这样设置的策略,仓位相对比较好控制,可以在那一个特定时间点做所有的仓位的控制。譬如在上面的例子,可以选择尾盘等权买入所有收盘价大于开盘价的股票。
    情况二:在任意分钟判断符合条件的股票进行买入这样设置的策略,就必须要考虑这次买入对下一次买入的影响了。主要考虑两点。
    满足条件的股票不可能全部都在同一分钟出现,在一天没过完你也无法判断到底会有几只股票满足条件(当然做一些样本内的统计可能是有帮助的)。碰到这种情况必须做一些 tradeoff ,假设你大概是想买 10 只股票,那么可以对每只股票出现买入信号的股票买入 0.1 的仓位。
    这分钟满足买入条件的股票下一分钟也可能会满足,所以如果你在一次买入已经觉得买到位的情况下,应当设置其不再买入。
    下面的策略设置是若某只股票距开盘当天下降了-4%,一次性买到 10%仓位,不再买入。


    如何设置计数器通常如果我们不是做超短线(今日买入隔日卖出),我们必须做一个判断,这只股票买了多少天了,可以持有多少天,出现了什么情况我就卖掉,故必须要设置一个计数器。
    下面的策略思想是开盘下跌 4%买入 10%仓位,持有 5 天后开盘卖出。


    限价单、市价单与涨跌停限价单是指挂一个单,倘若目前不能成交,则今天一直等到它能成交,隔天撤销。而市价单指以报价成交,倘若不能成交则当即撤销。
    下面是一个例子测试优矿的分钟线回测用的是限价单还是市价单, universe 是 600919.XSHG 江苏银行,其在 2016-08-05 是一个 T 字板。


    大家打开回测详情,查看调仓记录可以看到,下单时间在 09:30 、 09:31 、 09:32 、 09:33 和 09:34 下单买入的 100 股,均在 09:34 中成交。大家可以查看当天江苏银行的行情,开盘三分钟内都是涨停的。据此,我们可以知道分钟线策略中的下单都是限价单,若碰到股票涨停的股票,将会延迟成交,这在我们考虑仓位的时候也会引起一些 trick 的事情。
    譬如,假设我们今天要买入 10%仓位的江苏银行股票,我们用刚才的语句进行买入。


    通过查看回测详情中我们可以看到,江苏银行还是买了 5 笔单,最后仓位达到了 50%,这和我们想要的并不一致。怎么解决呢,可以从两个方面出发。
    1.获取当天的涨停价,涨停的这一分钟我就不下单买了。 2.判断是否我之前有下过一个单但没有成交。方法二好像分钟线回测没有给出一个好的函数来判断是否成交,故我们用方法一来控制
    如下给出获取某只股票的涨停价,因为回测中的数据都是前复权的,故我们应当把不复权的涨停价转化为复权的涨停价,如下所示。


    查看回测详情可知,这次我们只下单一次,保持 10%的仓位。并且和刚才不同我们是在 09:35 分钟才成交的,这是因为我们用的 account.referencePrice 返回的上一分钟的数据,只有上一分钟的收盘价格小于涨停价时,我们才会下单。
    示例策略股票池:最近 30 天上市的新股
    买卖逻辑: 09:31 分买入今天高开 5 个点以上,但未涨停的股票,每只 10%仓位。隔日开盘卖出。


    总结写好一个正确符合自己策略思想的分钟线策略要比写一个日线策略麻烦不少,但也正因为麻烦,做的人也少,或许这里面能挖出一些好矿呢。
    大家对分钟线策略有什么好的想法和实现方式,一同交流学习哈。

    感兴趣的矿友可以在社区克隆后运行,看看收益如何。 欢迎到社区讨论交流
    4 条回复    2016-08-29 09:52:27 +08:00
    est
        1
    est  
       2016-08-26 17:54:15 +08:00   ❤️ 1
    广告链接略早。这里一般都是放到最后的。
    vitovan
        2
    vitovan  
       2016-08-26 18:18:15 +08:00
    r#1 @est 还有就是写的太晦涩,没有前置知识基本没法看。
    BOYPT
        3
    BOYPT  
       2016-08-29 09:51:54 +08:00
    09 : 25 才叫开盘价吧……
    GordianZ
        4
    GordianZ  
    MOD
       2016-08-29 09:52:27 +08:00
    detailView.js:75 Uncaught TypeError: Cannot read property 'user_id' of undefined

    lol, 没登陆点开链接直接一个白板,这广告太失败了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5391 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:09 · PVG 17:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.