Python:商品期货布林指标突破策略
寻得一个pyton写的策略值得研究一下。IDLE 0 # 定义一个 标记量表示空闲状态LONG 1 # 定义一个 标记量表示持多仓状态SHORT 2 # 定义一个 标记量表示持空仓状态def (): # 实现一个取消所有挂单的功能函数while True: # 循环执行 _C(.) # 读取当前所有挂单 是一个数组要是通过某种方式去判定, 这个数组的长度, 等于0的话, 那就呈现出, 此数组正处于, 没有挂单之后的这种状态。结束# 从while那个循环里面退出来, 不存在挂着的单子表明不用去取消了。至于for循环中的order, 在经过上边if检测而能够执行到此处时, 这意味着数组的长度并非为零, 存在挂单情况, 进而对数组进行遍历。根据遍历的时候, 订单信息里的Id, 取消那个Id的订单, (order.Id) #。让Sleep(1000)来控制一下取消的频率, 在每次进行取消操作的时候, 使其暂停1秒钟。以def main()来定义, 此为策略主函数, 在策略启动之后, 会从这里开启执行进程。state被设定为IDLE, 此为给策略去定义出一个状态变量, 并且将其初始化为处于空闲的那种状态。下达一个指令, 为策略去定义一个下单的方向变量, 将其初始状态设定为空的字符串。while True: # 执行策略逻辑循环倘若.IO空字符串这个操作成立, 那就意味着要检查是不是与期货公司服务器建立了连接, 而且登录已经获取成功。(_D(), 已经连接)通过()来设置要做操作的合约, 在此处将其设置为, 也能够做成参数, 于策略参数上面予以设置。等于_C(点), 用于获取K线数据的状况, 该状况是在策略参数界面以上做出K线周期为1小时的设置之后, 所获取的即为1小时时长的K线数据。如果数据数量范围小于二十一, 使用BOLL指标的预设参数, 为此K线数据的柱状数量必须足以达到二十一, 才可核算算出有效的BOLL指标。# 不满足条件的情况下跳过后面的代码重复循环布尔值等于技术分析库中的布林带函数计算所得结果, 当列表长度大于或等于二十一时, 执行到此处, 运用该函数计算布林指标数据, 布尔相关的这个值是一个二维列表, 此二维列表中的一项是上轨数据, 此二维列表中的一项是中线数据, 此二维列表中的一项是下轨数据。利用, 那个, 画线类库的接口, 去绘制, K线, 而关于, 画线类库的代码, 能够, 在策略广场之中, 寻觅到。调用外部的, 名为“up”的, 与布林线相关的, 涉及时间的, 类库接口, 来绘制上轨。提取, “中间的”, 布林线, 时间, #进行描绘中线的操作。于外部执行, 针对“向下”的情况绘制布林线下轨, 关联此时的时间。pos _C(.) # 读取当前账户持仓信息要是当前账户存在持仓, 而在无持仓的状况下, 此时len(pos)等于0, 那么当len(pos) 1的时候 , 情况又不一样了。要是持仓数据里 持仓的数据方向 呈现出一种情况 或者是呈现出另一种规定的情况 那么 就要依据此 针对运行的策略 去调整状态变量state所具有的值。state LONG # 设置为持有多仓状态那如果位置种类等于, 或者位置种类等于, 这种情况呢。state SHORT # 设置为持有空仓状态elif len(pos) 0 : # 无持仓时state IDLE # 持仓状态设置为空闲else :引发 “错误 长度位置大于1”, #当检测到存在多个仓位时, 进行报错, 而单独运行这个策略, 是不会产生多个仓位的, 要是出现这种情况那就表明存在异常。要是当前处于空闲状态, 或者处于持有空仓状态, 且K线BAR结束时判定价格突破上轨那就开展未来进一步评判, 前提是.Close大于boll这个条件满足 , # 同时只要.State等同于 IDLE 或.State形同于 SHORT发生#。处于持有空仓状态时, 将其平为仓, 如有空闲状态就实施开启多仓的操作, 对交易方向设置用来表示它的变量。if state IDLE: buy # 设置交易方向变量为开多仓else : # 设置交易方向变量为平空仓.() # 调用交易方向设置函数设置方向根据对于rb这个品种而言的当前价格, 加两跳, 执行.Buy函数, 下单量为1手 , 此函数第一参数是价格, 第二参数即该1手下单量, 于.Close 2价位吃单。() # 下单后尝试取消所有挂单未成交elif, 当前收盘价, 小于, 布林线下轨, 并且, 状态, 等于, 闲置, 或者, 状态, 等于, 做多, 这时, 判断, 形成了, 价格, 对下方轨道线, 产生的突出穿过行为。假如是持有多仓的状况, 请进行平多仓操作, 要是处于空闲状态, 那就开空仓, 进而设置交易方向变量。if state IDLE: sellelse : .().Sell(.Close - 2, 1)()else :