网站首页 > 技术文章 正文
寻得一个pyton写的策略,值得研究一下。
IDLE = 0 # 定义一个 标记量,表示空闲状态
LONG = 1 # 定义一个 标记量,表示持多仓状态
SHORT = 2 # 定义一个 标记量,表示持空仓状态
def CancelAll(): # 实现一个取消所有挂单的功能函数
while True: # 循环执行
orders = _C(exchange.GetOrders) # 读取当前所有挂单,orders 是一个数组
if len(orders) == 0 : # 判断这个数组长度是不是为0,如果为0表示这个数组中没有挂单了
break # 跳出while循环,没有挂单说明不需要取消了
for order in orders : # 通过上面的if检测,执行到这里,说明orders数组的长度不为0,有挂单,遍历orders数组
exchange.CancelOrder(order.Id) # 根据遍历时订单信息中的Id,取消该Id的订单
Sleep(1000) # 控制一下取消频率,每次取消时暂停1秒
def main(): # 策略主函数,策略启动后从这里开始执行
state = IDLE # 给策略定义一个状态变量,初始化为空闲状态
direction = "" # 给策略定义一个下单方向变量,初始化为空字符串
while True: # 执行策略逻辑循环
if exchange.IO("status"): # 检测是否与期货公司服务器连接,登录成功
LogStatus(_D(), "已经连接")
exchange.SetContractType("rb2001") # 设置要操作的合约,这里设置为rb2001,也可以做成参数,由策略参数上进行设置
records = _C(exchange.GetRecords) # 获取K线数据,策略参数界面上设置K线周期1小时,这里获取的就是1小时K线数据
if len(records) < 21: # 使用BOLL指标的默认参数,所以K线数据的Bar数量要足够21才能计算出有效的BOLL指标
continue # 不满足条件的情况下,continue跳过后面的代码,重复循环
boll = TA.BOLL(records) # 当符合 len(records) >= 21 时,执行到这里,使用TA.BOLL计算布林指标数据,boll是一个二维列表,boll[0]是上轨,boll[1]是中线,boll[2]是下轨
ext.PlotRecords(records, "K") # 使用画线类库接口,画K线,画线类库代码可以在策略广场找到
ext.PlotLine("up", boll[0][-2], records[-2].Time) # 使用画线类库接口,画上轨
ext.PlotLine("mid", boll[1][-2], records[-2].Time) # 画中线
ext.PlotLine("down", boll[2][-2], records[-2].Time) # 画下轨
pos = _C(exchange.GetPosition) # 读取当前账户持仓信息
if len(pos) == 1 : # 如果当前账户有持仓,无持仓时,len(pos) 等于0
if pos[0].Type == PD_LONG or pos[0].Type == PD_LONG_YD: # 根据持仓数据中的持仓方向,设置策略状态变量state
state = LONG # 设置为持有多仓状态
elif pos[0].Type == PD_SHORT or pos[0].Type == PD_SHORT_YD:
state = SHORT # 设置为持有空仓状态
elif len(pos) == 0 : # 无持仓时
state = IDLE # 持仓状态设置为空闲
else :
raise "error len(pos) > 1" # 如果检测到多个仓位,报错,单独跑这个策略,是不会有多个仓位的,如果出现说明异常
if records[-2].Close > boll[0][-2] and (state == IDLE or state == SHORT): # 如果当前是空闲状态或者持有空仓状态,K线BAR完成时确定价格突破上轨进行下一步判断
# 平空仓(如果是持有空仓的状态),开多仓(如果是空闲状态),设置direction交易方向变量
if state == IDLE:
direction = "buy" # 设置交易方向变量为开多仓
else :
direction = "closesell" # 设置交易方向变量为平空仓
exchange.SetDirection(direction) # 调用交易方向设置函数,设置方向
exchange.Buy(records[-1].Close + 2, 1) # 根据当前价格,加两跳(对于rb这个品种来说)吃单,下单量为1手,exchange.Buy 下单函数,第一个参数为价格,第二个参数为下单量
CancelAll() # 下单后尝试取消所有挂单(未成交)
elif records[-2].Close < boll[2][-2] and (state == IDLE or state == LONG): # 判断突破下轨
# 平多仓(如果是持有多仓的状态),开空仓(如果是空闲状态),设置direction交易方向变量
if state == IDLE:
direction = "sell"
else :
direction = "closebuy"
exchange.SetDirection(direction)
exchange.Sell(records[-1].Close - 2, 1)
CancelAll()
else :
猜你喜欢
- 2025-06-23 python3实现线程和进程的状态转换的模块及应用示例
- 2025-06-23 原来Python的协程有2种实现方式(python协程gevent)
- 2025-06-23 python线程start、run方法本质和区别
- 2025-06-23 Python模块datetime、calendar、logging、argparse、re用法
- 2025-06-23 Python常见模块机os、sys、pickle、json、time用法
- 2025-06-23 python类库configparser(python class库)
- 2025-06-23 python字典常用初始化方式、增加元素及遍历
- 2025-06-23 python运算符重载和上下文管理(python重载加号)
- 2025-06-23 《第32天》运维工程师分享:web服务器如何解析python
- 2025-06-23 Linux面试题Python(linux面试题大全)
- 06-23python3实现线程和进程的状态转换的模块及应用示例
- 06-23原来Python的协程有2种实现方式(python协程gevent)
- 06-23python线程start、run方法本质和区别
- 06-23Python模块datetime、calendar、logging、argparse、re用法
- 06-23Python常见模块机os、sys、pickle、json、time用法
- 06-23python类库configparser(python class库)
- 06-23python字典常用初始化方式、增加元素及遍历
- 06-23python运算符重载和上下文管理(python重载加号)
- 270℃Python短文,Python中的嵌套条件语句(六)
- 268℃python笔记:for循环嵌套。end=""的作用,图形打印
- 266℃PythonNet:实现Python与.Net代码相互调用!
- 262℃Python实现字符串小写转大写并写入文件
- 261℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 121℃原来2025是完美的平方年,一起探索六种平方的算吧
- 101℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 95℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- python3实现线程和进程的状态转换的模块及应用示例
- 原来Python的协程有2种实现方式(python协程gevent)
- python线程start、run方法本质和区别
- Python模块datetime、calendar、logging、argparse、re用法
- Python常见模块机os、sys、pickle、json、time用法
- python类库configparser(python class库)
- python字典常用初始化方式、增加元素及遍历
- python运算符重载和上下文管理(python重载加号)
- 《第32天》运维工程师分享:web服务器如何解析python
- Linux面试题Python(linux面试题大全)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)