您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

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  点击在线交流进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容