Python:商品期货布林指标突破策略
2026/8/25 14:49:23 网站建设 项目流程

寻得一个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 :

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询