DEBUGFILE----使用日志方式完善您的策略 [金字塔]
- 咨询内容:
经常会有使用金字塔的客户咨询客服,有关交易方面,我们总结一下,其实主要有2个交易问题:
1. 为什么明明图表上有信号,但是账户上确没有下单或者持仓不对?
2. 为什么图表上至于一次开仓信号,而金字塔给我下单2次,也就是重复下单?
出现这类的原因很多,也比较复杂, 金字塔常见问题 问题13中有关这个情况做了解释,既有网络断线原因也有用户自己公式信号闪烁或者未来函数的原因,不过大多数用户在出现问题后往往不知道具体的情况,问题13中总结了很多条,那么具体我的策略是哪一条原因导致的呢?
下面我们将逐一为大家进行解读,告知大家遇到类似问题时问题排查的方法.
第一步,通过金字塔自带的日志记录.
金字塔自带的日志在默认情况是关闭的,这个主要考虑到运行效率的问题,因为频繁的记录日志会影响到系统的运行速度. 打开的方法请参考 金字塔常见问题 问题24.
通过记录后的日志,我们打开后会看到下面记录的数据
2013-02-27 15:00:14.875 【后台】 启动后台程式化交易
2013-02-27 15:00:14.875 【后台】IF03 运行结束
2013-02-27 15:00:15.234 【后台】IF03 运行结束
2013-02-27 15:00:16.203 【后台】IF03 运行结束
2013-02-27 15:00:17.156 【后台】IF03 运行结束
2013-02-27 15:00:18.187 【后台】IF03 运行结束
2013-02-27 15:00:19.171 【后台】IF03 运行结束
2013-02-27 15:00:20.234 【后台】IF03 运行结束
2013-02-27 15:00:21.203 【后台】IF03 运行结束
2013-02-27 15:00:21.203 【后台】IF03 TBuy 已成功触发下单操作 价格:2591.800049 数量:1 类型:0 账户: 品种:IF03
2013-02-27 15:00:21.203 【后台】下单已发送
2013-02-27 15:00:21.234 【下单】IF03 价2591.800049 量1 买卖0 类型0 开平0 账户804982 Formula 1
2013-02-27 15:00:22.187 【后台】IF03 运行结束
2013-02-27 15:00:23.125 【后台】IF03 运行结束
2013-02-27 15:00:24.218 【后台】IF03 运行结束
2013-02-27 15:00:25.171 【后台】IF03 运行结束
2013-02-27 15:00:26.000 【回报】804982 : IF03 - 正在申报 1 价格:2580.80 开仓 买入
2013-02-27 15:00:26.281 【后台】IF03 运行结束
2013-02-27 15:00:27.250 【后台】IF03 运行结束
2013-02-27 15:00:28.125 【后台】IF03 运行结束通过上述的日志记录,我们可以通过日志上大致能分析出几个方面的信息:
1.模型在出现问题的时刻是否还在工作着.如果已经停止工作,可能此时的网络已经断线.
2.模型在出现问题的时刻是否已经出发下单,如果已经触发下单,但是下单失败,日志上就会记录为什么会报单失败.
3.模型报单时提交的委托手数是否符合我们的设计需要的数量.
金字塔的调试基本分3种方法 1、基于图表的公式调试;2、金字塔的公式调试器;3、通过记录日志方式调试.
详情请参考该帖http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1
这里详细介绍第3种方式
金字塔一个非常重要的函数DEBUGFILE,可以将调试日志记录文件中,方便用户在编写复杂策略的过程中,逐步的完善策略的各个方面.
DEBUGFILE,该函数输出时会自动的加入时间,格式为:年月日时分秒.图表OR后台均可以使用该函数,来记录最后一根K线各个变量的值.
用法:DEBUGFILE(PATH,STR,NUM),PATH为用户的本地计算机路径,STR为用户指定输出的一个行文字,NUM为用户指定的一个监控数字.
例如:DEBUGFILE('D:\TEST.TXT','当前资产为%.2f',1234),将在程式化交易的监控部分输出到D:\TEST.TXT文件, "当前资产为1234.00","%.2f"为一个打印的控制符号,系统会将他替换为指定的一个数字输出,%.2f为显示两位小数,%.0f则表示不显示小数。
ma5:ma(close,2);
ma15:ma(close,5);//5日均线上穿10日均线,开多
buycond:=CROSS(ma5,ma15);
if buycond then
begin
if islastbar then
begin
DEBUGFILE('D:\TEST.TXT',' buycond:%.0f',buycond);//输出开仓条件
DEBUGFILE('D:\TEST.TXT','holding:%.0f',holding);//输出HOLDING
end
buy(holding=0,1,market);
end//5日均线下破10日均线,平多
sellcond:=CROSS(ma15,ma5);
if sellcond then
begin
if islastbar then
begin
DEBUGFILE('D:\TEST.TXT',' sellcond:%.0f',sellcond);//输出平仓条件
DEBUGFILE('D:\TEST.TXT','holding:%.0f',holding);
end
sell(holding>0,1,market);
end//收盘前5分钟平仓
if time >= 145500 then
begin
sell(holding > 0, 1, market);
sellshort(holding < 0, 1, market);
end红色标识,用于输出并记录您的开多条件OR平多条件,如果您发现开平仓信号与经验预期不一致,可结合下单日志和D:\TEST.TXT文件中的记录,看看是不是由于漏写了条件造成的.
- 金字塔客服:
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容