2. FXDaemon基本操作
2.1 启动
2.1.1 Windows
> fxTrade.exe -s --ini=fxTrade-bktest.ini
以自动交易模式启动演示账户。
> fxTrade.exe -s --ini=fxTrade-demo.ini
以自动交易模式依次启动演示账户和虚拟账户。
> start /b fxTrade.exe -s --ini=fxTrade-demo.ini
↓↓↓ 演示账户启动结束后,再启动虚拟账户。 ↓↓↓
> start /b fxTrade.exe -s --ini=fxTrade-virtual.ini
设置计划任务于每周一的4:00启动演示账户。
> schtasks /create /tn "FXDaemon-demo" /tr "fxTrade.exe -s --ini=fxTrade-demo.ini" /sc weekly /d mon /st 04:00:00
2.1.2 Linux
- 移动到FXDaemon的安装目录,执行shell脚本以设置环境变量。
$ source setenv.sh
以历史回测模式启动。
$ fxTrade -s --ini=fxTrade-bktest.ini
以自动交易模式启动演示账户。
$ fxTrade -s --ini=fxTrade-demo.ini
以自动交易模式依次启动演示账户和虚拟账户。
$ nohup fxTrade -s --ini=fxTrade-demo.ini 2>&1 &
↓↓↓ 演示账户启动结束后,再启动虚拟账户。 ↓↓↓
$ nohup fxTrade -s --ini=fxTrade-virtual.ini 2>&1 &
编辑crontab于每周一的4:00启动演示账户。
> vi /etc/crontab
> 0 4 * * 1 [user] source [install-path]/setenv.sh && fxTrade -s --ini=fxTrade-demo.ini
编辑crontab每隔10分钟执行一次fxTrade.sh,监控演示账户和虚拟账户的运行。监控脚本提供以下功能。请根据自己的需要进行修改。
1. 每周一4:00和4:10依次启动演示账户和虚拟账户。
2. 出现异常终了时重新启动。
3. 运行挂起时强制终止进程后重新启动。
4. 重新启动时发送信息到指定的电子邮件地址。
(需要对mail_to变量设置发送目的地址,以及一些和sendmail命令相关的设置。)
> vi /etc/crontab
> */10 * * * * [user] [install-path]/fxTrade.sh
2.2 终止
2.2.1 Windows, Linux
执行以下2个操作中的任意一个。
- 按下q键 (仅限于在前台启动时)
- 通过设置ini文件在指定时间后自动退出
2.2.2 仅Linux
$ ps -ef | grep fxTrade
$ kill -3 [pid] ← 用ps得到的进程ID
2.3 命令行参数
- [--ini=FILE]
指定ini文件。如果没有指定,缺省读入fxTrade.ini。
- [--license=FILE]
指定许可证文件。如果没有指定,缺省读入fxTrade.lic。
- -s, --start [--ini=FILE] [--license=FILE]
根据ini文件的设置,以历史回测模式或自动交易模式启动系统。
许可证过期时不能启动第2个交易账户的自动交易模式。
- -r, --save-hisdata-add [--ini=FILE]
根据在ini文件中设置的起始和结束时间,从经纪商交易服务器获取历史数据并以追加模式写入数据文件。
- -R, --save-hisdata-new [--ini=FILE] --start-date=DATE --end-date=DATE
从经纪商交易服务器获取历史数据并以新建模式写入数据文件。
- -h, --print-hisdata [--ini=FILE] --symbol=SYMBOL --period=PERIOD --start-date=DATE --end-date=DATE
从经纪商交易服务器获取历史数据并输出到标准输出。
- -m, --print-mktdata [--ini=FILE] --symbol=SYMBOL
从经纪商交易服务器获取市场数据并输出到标准输出。
- -a, --print-account [--ini=FILE]
从经纪商交易服务器获取账户信息并输出到标准输出。
- -j, --run-js [--ini=FILE] [PARAM1, PARAM2, ...]
运行ini文件中设置的js文件。[param1, ...]作为输入参数传递给js文件。不能使用和交易接口有关的内置函数。
- -n, --issue-serial-no
发行序列号。
- -e, --check-expiration-date [--license=FILE]
确认许可证的有效期限。
2.4 历史回测
- 产生的数据插入到表`Order`、`Trade`和`TsContext`中。
- 再次运行历史回测时,要么修改[ticketno]以防止重复键的唯一约束错误,
或者执行SQL以删除所有以前产生的数据。
$ mysql -ufxtrade -pfxtrade scm_fxtrade -e"set @account_id:='bt001'; source sql/delete.sql;"
2.5 仓位统计
$ mysql -ufxtrade -pfxtrade scm_fxtrade -e"set @account_id:='bt001'; source sql/year.sql;"
按年>月统计
$ mysql -ufxtrade -pfxtrade scm_fxtrade -e"set @account_id:='bt001'; source sql/month.sql;"
按年>周统计
$ mysql -ufxtrade -pfxtrade scm_fxtrade -e"set @account_id:='bt001'; source sql/week.sql;"
按商品统计
$ mysql -ufxtrade -pfxtrade scm_fxtrade -e"set @account_id:='bt001'; source sql/symbol.sql;"
按商品>开仓方法统计
$ mysql -ufxtrade -pfxtrade scm_fxtrade -e"set @account_id:='bt001'; source sql/method.sql;"