中文
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;"