开拓者期货期权程序化系统交易论坛

标题: 波动突破系统,遇到问题,请教大侠们 [打印本页]

作者: skykisser    时间: 2012-7-25 23:08:58     标题: 波动突破系统,遇到问题,请教大侠们

本帖最后由 skykisser 于 2012-7-25 23:10 编辑

自己写了一个跨周期调用ATR的波动突破系统,遇到两个问题。1,信号消失,不知道哪里写的不对了。2,我的入市信号是,无论市场上涨还是下跌相对于前一天收盘价0.7倍的最近5天的ATR,入市。但是信号出来仔细看了看并不是这样,我用的 highline=CloseD[1]+ATREntryset*ATREntryValue;  Lowline=CloseD[1]-ATREntryset*ATREntryvalue;不知道这样写对不对。

代码如下:
//------------------------------------------------------------------------
// 简称: ATR突破
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------

Params

                             Numeric length1(5);
                Numeric Length2(20);
                Numeric Length3(50);
                             Numeric ATREntrySet(0.7);
                Numeric ATRExitSet(3);
                Numeric offset(3);
                Numeric TimeFrame(1440);
                Numeric BarsBack(1);


Vars

                Numeric Myentryprice;
                Numeric ATRFilterValue;
                            Numeric ATREntryValue;
                Numeric ATRExitValue;
                NumericSeries MtATR;
                Numeric oATRFilter;
                Numeric oATREntry;
                Numeric oATRExit;
                             NumericSeries highline;
                             NumericSeries Lowline;
                Numeric i_offset;

Begin
                i_offset = offset*MinMove*PriceScale;
               
                MtATR(TimeFrame,BarsBack,Length3,oATRFilter);
               
                MtATR(TimeFrame,BarsBack,Length1,oATREntry);
               
                MtATR(TimeFrame,BarsBack,Length2,oATRExit);
               
                ATRFilterValue=oATRFilter;
               
                ATREntryValue=oATREntry;
               
                ATRExitValue=oATRExit;
        
        highline=CloseD[1]+ATREntryset*ATREntryValue;
               
        Lowline=CloseD[1]-ATREntryset*ATREntryvalue;
        
        PlotNumeric("Highline",Highline);
                PlotNumeric("Lowline",Lowline);

                If (MarketPosition == 0 && (ATREntryValue>0.6*ATRFilterValue))
               
                {
                        If(Open>highline)
               
                        {Buy(1, Open+i_offset);
                         Myentryprice = Open;
                        }
                       
        If(Open<Lowline)
               
                        {Sellshort(1, Open-i_offset);
                        Myentryprice = Open;
                       
                        }
                }
               
                If (MarketPosition == 1)
               
                {
                {
                        If(Open<myentryprice-0.5*ATRExitValue)
                        Sell (1, Open+i_offset);
                       
                }
               
                If (MarketPosition == -1)
               
                {
                        If(Open>myentryprice+0.5*ATRExitValue)
                        BuyToCover(1,Open-i_offset);
                }
                }
End

作者: 飞跃    时间: 2012-7-26 05:34:56

慎用 CloseD这之类的函数,还是自己编写程序取前一交易日的收盘价,写完后再试试看还有没有问题,呵呵
作者: 趋势跟踪    时间: 2012-7-26 06:37:50

CloseD应该使用圆括号,不能用方括号:例如CloseD(1)表示得到昨日收盘价。





欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2