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

金字塔策略写好,但是无法回测,在历史数据回测时候,报告中没有任何一笔交易 [金字塔]

  • 咨询内容: 我的策略是这样的。
    〔逐K线模式〕下一开始有部分代码,变量、序列变量赋值等等。然后进入后面的运算时候,因为运算过度复杂,所以设定成如下:
    IF NOT(ISLASTBAR) THEN EXIT;……后面接余下的代码。包含这段,买卖模版if holding=0 then begin 
    6     //多头开仓 
    7     if tradingtime and enlongcond then begin 
    8         buy(1,1,limitr,close); 
    9         maxprofit:=0; 
    10     end 
    11      
    12     //空头开仓 
    13     if tradingtime and enshortcond then begin 
    14         buyshort(1,1,limitr,close); 
    15         maxprofit:=0; 
    16     end 
    17 end 
    18 
    19 if holding>0 then begin 
    20     //多头平仓 
    21     if exlongcond then 
    22         sell(1,holding,limitr,close); 
    23 
    24     //多头收盘平仓 
    25     if not(tradingtime) then 
    26         sell(1,holding,limitr,close); 
    27 
    28     //盈亏计算 
    29     if enterbars>0 then begin 
    30         win:=(c-enterprice)/enterprice*100; 
    31         if win>maxprofit then 
    32             maxprofit:=win; 
    33         win2:=(maxproift-win)/maxprofit*100; 
    34     end 
    35 
    36     //多头初始止损 
    37     if win<-2 then 
    38         sell(1,holding,limitr,close); 
    39 
    40     //多头利润止盈 
    41     if win>4 then 
    42         sell(1,holding,limitr,close); 
    43      
    44     //多头回撤止盈 
    45     if win2>60 and openprofit>0 then 
    46         sell(1,holding,limitr,close); 
    47 end 
    48 
    49 if holding<0 then begin 
    50     //空头平仓 
    51     if exshortcond then 
    52         sellshort(1,holding,limitr,close); 
    53 
    54     //空头收盘平仓 
    55     if not(tradingtime) then 
    56         sellshort(1,holding,limitr,close); 
    57      
    58     //盈亏计算 
    59     if enterbars>0 then begin 
    60         win:=(enterprice-c)/enterprice*100; 
    61         if win>maxprofit then 
    62             maxprofit:=win; 
    63         win2:=(maxprofit-win)/maxprofit*100; 
    64     end 
    65 
    66     //空头初始止盈 
    67     if win<-2 then 
    68         sellshort(1,holding,limitr,close); 
    69 
    70     //空头利润止盈 
    71     if win>4 then 
    72         sellshort(1,holding,limitr,close); 
    73      
    74     //空头回撤止盈 
    75     if win2>60 and openprofit>0 then 
    76         sellshort(1,holding,limitr,close); 
    77 end 
    78 

    现在用〔训练模式〕回溯到过去的历史里看,满足条件的情况下,买卖信号确实发出了。但是遇到如下问题:1、当某时刻,第一次满足我的买入条件,于是策略确实提示买入了,但是到了下一根K棒,因为仍然满足我的买入条件,策略继续在提示买入。似乎完全不记得我已经在前一根K棒已经买入了?    这是不是和我使用了IF NOT(ISLASTBAR) THEN EXIT;有关系呢?    为什么前面的已经持仓未被记住呢?2、可能因为1的缘故,在历史数据回测时候,报告中没有任何一笔交易……因此无法回测了……
    请高手稍微指导一下这个菜鸟级的问题。 [此贴子已经被作者于2013-2-25 23:29:43编辑过]

     

  • 金字塔客服:

    图表的程序化交易的运行逻辑是会不断刷新K线信号的,当然不会记住你之前的状态。

    因此你是不能用IF NOT(ISLASTBAR) THEN EXIT;这样的语法在图表程序化中使用的

     

  • 用户回复: 谢谢admin。
    (如果不用IF NOT(ISLASTBAR) THEN EXIT,该策略的运算量太大了)那么这种策略要在历史K线数据中回测,有啥其他办法吗?

     

  • 网友回复: 没有办法的,只能是慢慢等他测试了

     

  • 网友回复: 继续请教admin,IF NOT(ISLASTBAR) THEN EXIT 这样的语句,即使在实时行情下运行(即白天行情在进行的时候),也是不允许用在程序化交易中的,包括后台程序化执行,是吧?

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容