寻得一个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:
= "sell"
else :
= ""
.()
.Sell(.Close - 2, 1)
()
else :