Skip to content
taurusai edited this page Dec 8, 2017 · 5 revisions

Q:如何开始自己的第一个策略?

A:建议首先通过结合帮助和py_demo目录下demo策略,熟悉策略框架,然后在basic_usage.py的回调函数中打印收到的数据,了解收到的数据内容。然后调用功能函数,实现订阅,查持仓,下单,添加回调函数等。在此基础上,实现自己的交易算法。

Q:为什么py_demo里面的策略运行了但是什么输出也没有,感觉像是卡住了。

A:py_demo里面的代码,除了band_demo_strategy.py是一个完整的策略之外,其他策略都是单项或者简单功能展示,而kungfu交易系统是多账户多策略系统,策略如果首次运行,需要set策略的持仓。demo中initial_pos_test正是演示的这个过程。所以按照如下顺序执行就没有问题了。

wingchun strategy -n test -p initial_pos_test.py
wingchun strategy -n test -p order_cancel_test.py
...

Q:为什么策略运行会报"RuntimeError: cannot register client: strategy_name "错误

A:这是因为已经有一个同名策略在运行了。可以参考下面的如何关闭策略,先关闭同名策略,然后继续启动,或者换一个名字。

Q:为什么策略demo运行起来什么返回都没有?

A:可能是系统的内存数据库服务并没有启动起来,可以使用systemctl status kungfu查看交易系统是否启动,或者使用kungfuctl查看其中yjj状态是否正常,如果状态不正常可以重启kungfu,重启kungfu以后要记得启动md和td连接,然后再启动交易。

Q:如果只需要订阅应该如何实现?

A:可以写一个只包含订阅功能的策略实现订阅功能,可以将订阅列表直接添加在代码中,也可以从外部数据导入。数据订阅后,只要wingchunctl中的md不关闭,系统每天会自动订阅之前订阅过的数据。比如:

#file sub.py
#run: wingchun strategy -n SUB -p sub.py

def initialize(context):
    context.add_md(source=SOURCE.CTP)
    context.subscribe(["rb1801","rb1803","IC1801"], source=SOURCE.CTP)

Q:如何判断策略状态正常?

A:一般的策略启动以后应收到如下两行数据表明策略启动正常,并成功从td获得自己的历史持仓。

17-12-08 18:25:04.941 INFO  test %% - [start] data started
17-12-08 18:25:04.946 DEBUG test %% - [td_login] (source)13 (ready)1 (pos){"Pos":{},"Source":1,"name":"test","nano":1512727168357218261,"ok":true}

如果需要看到自己的策略持续运行的状态,可以将部分过程信息使用log工具输出出来。 如果策略是后台运行的,可以在/shared/kungfu/log/strategy/中查看对应的log信息,通过log判断策略执行情况。 还可以通过yjj status命令查看策略是否注册成功,是否成功连接到td和md。

Q:如果有多个账户,如何设置保证策略是在某账户下交易的?

A:在多个账户的情况下,如果不做任何设置,策略默认执行在默认账户下(在kungfu.json中可以看到账户中的default项目),如果要将策略添加在某个账户下,需要将策略名(-n参数后的名字)添加到client中。

Q:如何关闭策略?

A:如果在shell中前台运行策略,可以使用Ctrl+c关闭。如果策略是后台运行,或者shell连接中断了,可以使用yjj status,查看pid中策略对应的pid号,使用kill 杀掉对应的进程(可能出现权限不足的情况,杀掉以后需要再次检查)。

Q:为什么运行了策略,但是导出数据为空?

A:首先需要看这个策略是否成功运行了,策略前台运行是有相应的日志输出的。

Q:功夫交易系统可以做回测吗?

A:目前不包括回测

Q:为什么我测试得到的系统延时较大?

A:要达到较好的性能,需要在性能较好的物理服务器上,采用核隔离和绑核操作,保证交易系统资源不被占用的情况下达到的。

Q:使用CTP连接延时抖动很大,功夫交易系统达到高速是否有意义?

A:首先功夫提供的是一个开源的框架,使用这个系统你可以准确的得到系统内部的延时,这对标准化评估策略是有意义的。其次功夫交易系统标准版也提供了更多其他更为稳定和极速的接口。再次,不考虑速度优势,功夫交易系统也是一个稳定好用的交易系统。

Q:感觉没有文档无从下手?

A:我们提供了策略文档来说明策略逻辑,提供了系统文档说明系统逻辑和运维方法,demo中也添加了功能注释,详细的函数和类型介绍可以使用"wingchun help"具体查阅,如果有不理解的地方可以在github上或讨论群中提出。

Q:我可以在哪些地方获得系统维护信息?

A:使用systemctl status kungfu你可以查看交易系统是否启动 使用kungfuctl可以查看各个服务项是否启动 在/shared/kungfu/log目录下有page_engine.log md_engine.log trade_engine.log分别为内存服务日志,行情服务日志,交易服务日志,可以帮助你判断系统状态和错误原因。 在/shared/kungfu/log/wingchun中还有更详细的日志信息 使用yjj status可以帮助你查看当前运行的服务项和策略信息,从其中的pid部分可以看到各进程的pid号,便于进行管理操作。

Q:为什么系统晚上就自动关闭了

A:系统默认的交易时间是09:15-16:30,如果你需要交易夜盘,需要在195行以后添加如下代码,重启kungfu,即可将夜盘交易时间添加到交易时段中。

        task_control.add_engine_start_time('08:45:00')
        task_control.add_engine_end_time('23:30:00')

Q:如何升级交易系统

A:首先使用"yum erase kungfu"删除旧版本软件,然后在源代码目录使用"git pull"命令更新代码,然后重新编译并安装即可实现更新