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

标题: 求助,参数优化时只执行一次交易 [打印本页]

作者: rayraul    时间: 2016-10-20 23:25:12     标题: 求助,参数优化时只执行一次交易

rt,试运行一个Dual——thrust,原始程序正常运行的,一参数优化就只有一次交易,而且贯穿整个回测区间,有没有知道这是什么问题的,源码如下,比如我优化K1,K2就不行
//------------------------------------------------------------------------
// 简称: Dual_Thrust
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Numeric K1(0.5);    //买价占比
Numeric K2(0.5);    //卖价占比
Numeric Mday(1);    //卖价幅度天数
Numeric Nday(1);    //买价幅度天数
Numeric lots(1);    //固定手数
Numeric offset(0);  //滑点
Numeric outTime1(0.1454);
Numeric outTime2(0.15);
Numeric inTime(0.0930);

Vars
Numeric BuyRange(0); //买价幅度
Numeric SellRange(0);//卖价幅度
Numeric HH;          //N天的High值最大值
Numeric LL;          //N天的Low值最小值
Numeric HC;          //N天的Close值最大值
Numeric LC;          //N天的Close值最小值
Numeric i_offset;    //滑点价格
Numeric BuyPosition; //买价
Numeric SellPosition;//卖价
Numeric HighD1;//卖价
Begin

        i_offset = offset*MinMove*PriceScale;  //滑点
        HH = Highest(HighD(1),Mday);
        HC = Highest(CloseD(1),Mday);
        LL = Lowest(LowD(1),Mday);
        LC = Lowest(CloseD(1),Mday);

        SellRange = Max((HH - LC), (HC - LL));

        HH = Highest(HighD(1),Nday);
        HC = Highest(CloseD(1),Nday);
        LL = Lowest(LowD(1),Nday);
        LC = Lowest(CloseD(1),Nday);

        BuyRange = Max((HH - LC), (HC - LL));

                BuyPosition = OpenD(0)+K1*BuyRange;
                SellPosition = OpenD(0)-K2*SellRange;

        PlotNumeric("BuyPosition",BuyPosition);
                PlotNumeric("SellPosition",SellPosition);

If(CurrentBar > 44*Max(Mday,Nday))//使用的是5分钟周期,其它的周期自己做相应修改
{
        //入场
        If(MarketPosition == 0 and Time >= inTime and Time < outTime1)   
        {
                If(High>=BuyPosition)
                {
                        Buy(lots,Max(Open,BuyPosition)+i_offset);
                }
               
                If(Low<=SellPosition)
                {
                        SellShort(lots,Min(Open,SellPosition)-i_offset);
                }
        }
                //止损出场

                //收盘出场
        If(Time >= outTime1 and Time < outTime2)
        {
                if(marketposition==-1)  BuyToCover(1,Open);
                Else if(marketposition==1)  Sell(1,Open);

        }
}
End







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