- 精华
- 0
- 在线时间
- 33 小时
- UID
- 241219
- 积分
- 18
- 帖子
- 11
- 阅读权限
- 10
- 注册时间
- 2016-10-2
- 最后登录
- 2017-6-6
- 精华
- 0
- UID
- 241219
- 积分
- 18
- 帖子
- 11
- 主题
- 4
- 阅读权限
- 10
- 注册时间
- 2016-10-2
- 最后登录
- 2017-6-6
|
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
|
|