美文网首页
量化思路1——震荡量化法

量化思路1——震荡量化法

作者: 比特韭菜罗 | 来源:发表于2017-10-13 00:31 被阅读0次

    本方法以数字货币为落地标的,股市、基金以此类推。

    任何资本市场都伴随着震荡和波动,类似于潮起潮落,潮起潮落后会留下能,而震荡前后可以留下利润,困难的地方在于什么时候是潮起,什么时候是潮落,真实的潮水分辨较为简单,能够看到低点和高点,但是低点和高点是相对与潮整体来说的,或者说整个潮水波浪面的中界面,如果高于这个中界面为潮起,低于这个中界面为潮落。对于数字货币来说,关键是在找到中界面。

    潮向上动时会升,潮向下动时会降,我们需要在潮向上的时候买,在潮向下的时候卖。具体的思路为:每个时间整点收集比特币的价格,当当前价格超过前五个时间点的价格时,我们认为现在处于潮水向上涌阶段,进入上升通道,买;当当前价格低于前五个时间点的价格时,我们认为现在处于潮水向下泄阶段,进入下降通道,卖。

    接下来开始代码学习阶段,是的,很枯燥,很无聊,我也是,但是要坚持,不然就只能拿着方法吹牛,而不能拿着方法赚钱。

    PARAMS = {

                           "start_time": "2017-06-01 00:00:00",          # 回测起始时间

                           "end_time": "2017-07-01 00:00:00",          # 回测结束时间

                           "commission": 0.002,                                   # 此处设置交易佣金

                          "slippage": 0.001,                                          # 此处设置交易滑点

                          "account_initial": {"xxx_cny_cash": 10000,"xxx_cny_btc": 0},    #xxx平台的账户初始情况,初始人民币为10000,初始比特币为0。

    }

    以上为定义部分,基本上就是进行回测的起始时间、结束时间、交易佣金、滑点和账户初始情况,接下来我们需要对市场数据进行读取,具体程序如下所示:

    def initialize(context):                                                   #定义初始函数

                        context.frequency = "30m"                      # 以30分频率进行回测

                        context.benchmark = "xxx_cny_btc"      # 用于计算xxx平台上的收益

                        context.security = "xxx_cny_btc"            # 策略指定xxx平台上的的交易品种

    接下来为策略的执行函数,最关键、最难也是最枯燥的部分。

    def handle_data(context):

                  hist = context.data.get_price(context.security, count=5, frequency=context.frequency)       # context.data.get_price()为获取最近历史价格的函数,context.security为获取的对象,count为获取的数量,frequency为数据调用的频率。本句意思为获取最近5个频率周期的历史数据

    ma = hist["close"].rolling(window=5).mean()[-1]               # 计算最近5个收盘价的均价,这个函数可能比较难以理解,查阅半天也没有得到一个比较好的答案,hist["close"]我猜是hist得到一个数字序列,close的意思是从头读到尾,rooling_mean是计算窗口的平均值,5代表五个窗口,也就是五个数字。[-1]不知道啥意思。

    current_price = context.data.get_current_price(context.security)  # 获取当前价格

    if current_price > ma and context.account.xxx_cny_cash >= XXX_CNY_BTC_MIN_ORDER_CASH_AMOUNT: # 当前价格大于均价时,全仓买入

    context.order.buy(context.security, cash_amount=str(context.account.huobi_cny_cash))

    elif current_price < ma and context.account.huobi_cny_btc >= XXX_CNY_BTC_MIN_ORDER_QUANTITY: # 当前价格小于均价时,全仓卖出

    context.order.sell(context.security, quantity=str(context.account.xxx_cny_btc))

    而买卖的效果如何呢,具体如下图所示:

    由此可见,量化很难学,量化的效果也并不如我们想象中的那么显著,但是好在较为稳健,量化是一种较好的投资方法。

    相关文章

      网友评论

          本文标题:量化思路1——震荡量化法

          本文链接:https://www.haomeiwen.com/subject/tlagyxtx.html