1、下单、函数、API

量化交易

能够看到,order可接受的参数有5个,别离是security,amount,style,side,pindex,这五个参数的姓名与意义是函数作者设计的。意思是你运用order供给参数的时分,被供给参数将按供给的次序顺次对应这5个参数。

细说下order的各个参数

  • security 标的代码,数据类型要求是字符串,想知道 基金、期货、指数的代码都是什么,能够在这里看聚宽数据,比方聚宽数据-向下翻滚页面-点击指数数据,能够看到各指数的代码。特别的是股票代码目前没有页面,但只需在平时运用的股票代码后面加后缀就好了,深交所(深交所股票0开头)股票代码后缀为.XSHE,如000001.XSHE,上交所股票代码(上交所股票6开头)后缀为.XSHG 如600000.XSHG。
    • amount 买卖数量, 正数表示买入, 负数表示卖出,没什么可说的。
    • style参数决定下的订单是市价单仍是限价单,默许是None代表市价单。目前就用默许吧,限价单今后讲。
    • side参数决定是开空单仍是多单,默许为多单,股票只能多单,股指期货等其他品类能够开空单。
    • pindex参数是在多资金仓位时选择资金仓位的,股票一般用不到。
  • 依据阐明文档,order函数是有返回值的,假如创立订单成功, 则返回Order目标, 失败则返回None。有返回值不必定要用,比方前文的比方都没用到这个返回值,实际上策略做的适当齐备的时分才或许用到。一般用法是,依据返回值是否是None,判断是否下单成功,成功时,依据返回值能够查询订单或撤销订单等。不过详细完成办法、以及Order目标是什么,还需求学习许多的知识,后续或许会讲到。

常用的下单函数

  • 常用的下单函数有四个,运用办法和order()差不多,或许有人自己看API文档就能学会了。接下来咱们别离介绍下基本用法,同样的不讲style,side,pindex这三个参数。

  • order(security,amount),刚刚细讲过,意义是买卖必定数量的(单位:股)股票。security是股票代码,amount是数量,amount为负数时便是代表卖出了,需求知道的是,国内股票买入最小单位是1手即100股。比方如下:

      # 买入100股安全银行
      order("000001.XSHE",100)
      # 卖出100股安全银行
      order("000001.XSHE",-100)
    
  • order_target(security,amount),意义是经过买卖,将股票仓位调整至必定数量(单位:股)。security是股票代码,amount是数量。比方如下:

      # 调整安全银行的持股数量至1000股
      # 即,假如目前安全银行的持股数量低于1000股就买入,高于便是卖出,不高不低就不动。
      order_target("000001.XSHE",1000)
    
  • order_value(security,value),意义是买卖必定价值量(单位:元)股票。security是股票代码,value是价值量。value为负数时便是代表卖出了。比方如下:

      # 买入10000元的安全银行
      # 假如当时股票市价是10元,则代表买入1000股
      # 假如除不开体系会自动调整成相近的合理数量。卖出时也会。
      order_value("000001.XSHE",10000)
      # 卖出10000元的安全银行
      # 假如当时股票市价是100元,则代表卖出100股
      order_value("000001.XSHE",-10000)
    
  • order_target_value(security,value),经过买卖,将股票仓位调整至必定价值量(单位:元)。security是股票代码,value是价值量。比方如下:

      # 调整安全银行的持股价值量至10000元
      # 即,假如目前安全银行的持股价值量(按股票市价算)低于10000元就买入,高于便是卖出,不高不低就不动。
      order_target_value("000001.XSHE",10000)
    

课后题:

1、查找了解下移动平均线(MA,均线)的计算办法。

概念:移动平均线(MA)计算办法便是求连续若干天的收盘价的算术平均。天数便是MA的参数。10日的移动平均线常简称为10日线(MA(10)),同理咱们有5日线、15日线等概念。

概念链接:移动平均线(MA)计算办法

2、查找了解下市价单、限价单的意义。

在合约买卖中,限价单即用户依照自己指定的价格在商场进行买入或卖出的合约单,而市价单则是用户依照当时商场的买盘或者卖盘挂单价格进行成交的合约单。

概念链接:什么是限价单和市价单

2、读取context中的数据与条件判断

  • context的意义
  • context的结构
  • context的读取办法
  • 条件判断语句
  • 止损的意义及其完成办法
  • 自测与自学

context的结构

  • context是一个回测体系建立的Context类型的目标,其间存储了如当时策略运转的时刻点、所持有的股票、数量、持仓本钱等数据。

  • 目标能够理解为特殊类型的变量,目标的结构往往比咱们之前见过的list与dict更杂乱,被界说好的目标是有姓名的,比方context是一个变量,它的变量类型是一个Context类型的目标,就像dict包括key与value,Context类型的目标也包括许多属性,而且能够嵌套另一个种类型的目标,结构见下图。图中只包括了主要与常用的内容,详细介绍能够看API文档:Context目标

量化交易

context中的数据取用办法

  • 获取目标类型变量内包括的数据办法是用英文句号离隔,而当包括的是另一个目标时,只需在使用英文句号离隔即可,比方如下:

      # 打印可用资金
      print(context.portfolio.available_cash)
      # 打印运转频率
      print(context.run_params.frequency)
      # 打印当时单位时刻的开始时刻
      print(context.current_dt)
      # 执行后日志内容如下
      # 1000000.0
      # day
      # 2016-06-01 09:30:00
    
  • 当要获取的目标内的数据是另一种有结构的变量类型时,比方dict或list,正常依照该变量类型进一步取用数据即可。例如context.portfolio.positions是一个dict,咱们就能够使用之前讲过的dict 的用法来运用它,比方如下,这次给出了完整代码。

      # context.portfolio.positions的意义是仓位信息,所以为了让它有数据,需求在取之前买入并持有股票。
      def initialize(context):
          run_daily(period,time='every_bar')
          g.security = '000001.XSHE'
      def period(context):
          order(g.security, 100)
          # 打印所有键
          print(context.portfolio.positions.keys())
          # 打印所有值
          print(context.portfolio.positions.values())
          # 打印g.security的开仓均价
          print(context.portfolio.positions[g.security].avg_cost)
      # 执行后日志内容如下
      # ['000001.XSHE']
      # [UserPosition({'avg_cost': 8.539999999999997, 'security': '000001.XSHE', 'closeable_amount': 0, 'price': 8.53, 'total_amount': 100})]
      # 8.54
    
  • 常用的context数据写法如下,推荐自己动手试下。

    • 当时时刻 context.current_dt
    • 当时时刻的“年-月-日”的字符串格局 context.current_dt.strftime(“%Y-%m-%d”)
    • 前一个买卖日 context.previous_date
    • 当时可用资金 context.portfolio.available_cash
    • 持仓价值 context.portfolio.positions_value
    • 累计收益 context.portfolio.returns
    • 当时持有股票 context.portfolio.positions.keys()
    • 当时持有的某股票的开仓均价 context.portfolio.positions[‘xxxxxx.xxxx’].avg_cost
    • 当时持有的某股票的可卖持仓量 context.portfolio.positions[‘xxxxxx.xxxx’].closeable_amount