2019-07-03 03:28:08 +00:00
|
|
|
|
from time import sleep
|
|
|
|
|
from vnpy.app.script_trader import ScriptEngine
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def run(engine: ScriptEngine):
|
2019-07-03 05:19:17 +00:00
|
|
|
|
"""
|
|
|
|
|
脚本策略的主函数说明:
|
|
|
|
|
1. 唯一入参是脚本引擎ScriptEngine对象,通用它来完成查询和请求操作
|
|
|
|
|
2. 该函数会通过一个独立的线程来启动运行,区别于其他策略模块的事件驱动
|
|
|
|
|
3. while循环的维护,请通过engine.strategy_active状态来判断,实现可控退出
|
|
|
|
|
|
|
|
|
|
脚本策略的应用举例:
|
|
|
|
|
1. 自定义篮子委托执行执行算法
|
|
|
|
|
2. 股指期货和一篮子股票之间的对冲策略
|
|
|
|
|
3. 国内外商品、数字货币跨交易所的套利
|
|
|
|
|
4. 自定义组合指数行情监控以及消息通知
|
|
|
|
|
5. 股票市场扫描选股类交易策略(龙一、龙二)
|
|
|
|
|
6. 等等~~~
|
|
|
|
|
"""
|
2019-07-03 03:28:08 +00:00
|
|
|
|
vt_symbols = ["IF1912.CFFEX", "rb2001.SHFE"]
|
|
|
|
|
|
|
|
|
|
# 订阅行情
|
|
|
|
|
engine.subscribe(vt_symbols)
|
|
|
|
|
|
|
|
|
|
# 获取合约信息
|
|
|
|
|
for vt_symbol in vt_symbols:
|
|
|
|
|
contract = engine.get_contract(vt_symbol)
|
|
|
|
|
msg = f"合约信息,{contract}"
|
|
|
|
|
engine.write_log(msg)
|
|
|
|
|
|
|
|
|
|
# 持续运行,使用strategy_active来判断是否要退出程序
|
|
|
|
|
while engine.strategy_active:
|
|
|
|
|
# 轮询获取行情
|
|
|
|
|
for vt_symbol in vt_symbols:
|
|
|
|
|
tick = engine.get_tick(vt_symbol)
|
|
|
|
|
msg = f"最新行情, {tick}"
|
|
|
|
|
engine.write_log(msg)
|
|
|
|
|
|
|
|
|
|
# 等待3秒进入下一轮
|
|
|
|
|
sleep(3)
|