vnpy/prod/linux/index_publisher/run_idx_publisher.py
2022-03-19 23:16:36 +08:00

127 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# flake8: noqa
import os
import sys
import multiprocessing
from time import sleep
from datetime import datetime, time
from logging import INFO,DEBUG
# 将repostory的目录i作为根目录添加到系统环境中。
ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..'))
sys.path.append(ROOT_PATH)
print(f'append {ROOT_PATH} into sys.path')
from vnpy.event import EventEngine
from vnpy.trader.setting import SETTINGS
from vnpy.trader.engine import MainEngine
from vnpy.gateway.ctp import CtpGateway
from vnpy.app.index_tick_publisher import IndexTickPublisherApp
from vnpy.app.cta_strategy.base import EVENT_CTA_LOG
from vnpy.trader.util_pid import update_pid
SETTINGS["log.active"] = True
SETTINGS["log.level"] = DEBUG
SETTINGS["log.console"] = True
rabbit_setting = {
"host": "192.168.1.211;192.168.1.212"
}
ctp_setting = {
"用户名": "xxxx",
"密码": "xxxx",
"经纪商代码": "0187",
"交易服务器": "tcp://114.80.225.2:41205",
"行情服务器": "tcp://114.80.225.2:41213",
"交易服务器2": "tcp://114.80.225.10:41205",
"行情服务器2": "tcp://114.80.225.10:41213",
"交易服务器_old": "tcp://124.74.247.179:41201",
"行情服务器_old": "tcp://124.74.247.179:41212",
"产品名称": "client_huafu_2.0.0",
"授权编码": "xxxxx",
"产品信息": ""
}
update_pid()
def run_child():
"""
Running in the child process.
"""
SETTINGS["log.file"] = True
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
#main_engine.add_gateway(CtpGateway)
publisher_engine = main_engine.add_app(IndexTickPublisherApp)
main_engine.write_log("主引擎创建成功")
log_engine = main_engine.get_engine("log")
event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event)
main_engine.write_log("注册日志事件监听")
sleep(10)
main_engine.write_log("启动连接行情 & rabbit")
publisher_engine.connect(md_address=ctp_setting.get("行情服务器"),
userid=ctp_setting.get("用户名"),
password=ctp_setting.get("密码"),
brokerid=ctp_setting.get("经纪商代码"),
rabbit_config=rabbit_setting)
# publisher_engine.connect(
# rabbit_config=rabbit_setting)
while True:
sleep(1)
def run_parent():
"""
Running in the parent process.
"""
print("启动CTA策略守护父进程")
# Chinese futures market trading period (day/night)
DAY_START = time(8, 45)
DAY_END = time(15, 30)
NIGHT_START = time(20, 45)
NIGHT_END = time(2, 45)
child_process = None
while True:
current_time = datetime.now().time()
trading = False
# Check whether in trading period
if (
(current_time >= DAY_START and current_time <= DAY_END)
or (current_time >= NIGHT_START)
or (current_time <= NIGHT_END)
):
trading = True
# Start child process in trading period
if trading and child_process is None:
print("启动子进程")
child_process = multiprocessing.Process(target=run_child)
child_process.start()
print("子进程启动成功")
# 非记录时间则退出子进程
if not trading and child_process is not None:
print("关闭子进程")
child_process.terminate()
child_process.join()
child_process = None
print("子进程关闭成功")
sleep(5)
if __name__ == "__main__":
run_parent()
#run_child()