- 精华
- 0
- 在线时间
- 12 小时
- UID
- 201963
- 积分
- 28
- 帖子
- 19
- 阅读权限
- 10
- 注册时间
- 2015-1-19
- 最后登录
- 2021-4-18
- 精华
- 0
- UID
- 201963
- 积分
- 28
- 帖子
- 19
- 主题
- 6
- 阅读权限
- 10
- 注册时间
- 2015-1-19
- 最后登录
- 2021-4-18
|
发表于 2017-1-25 19:51:15
|显示全部楼层
小米 发表于 2017-1-25 13:28
整个代码是啥样的?发来看一下
如果仅是用上一个bar的值做判断,是不会有信号闪烁的问题哟。 ...
自我感觉问题可能在全局变量上,但我回测的时候的确每一个Bar的BkTime,SkTime的变化都是正确的。
但在实盘里就出现了信号闪烁不成交,直到下一个Bar出现,才以下一个Bar的open成交。
难道是MarketPosition的问题,请版主解惑下。
-------------------------------------------------------------------------------
Params
Numeric TrendLength(120);//大趋势
Numeric PanZheng(10);
Vars
NumericSeries TREND(0);//大周期
Numeric BkTime;
Numeric SkTime;
Numeric HasBk;
Numeric HasSk;
Begin
// 集合竞价和小节休息过滤
If(!CallAuctionFilter())
Return;
BkTime=GetGlobalVar(0);
SkTime=GetGlobalVar(1);
HasBk=GetGlobalVar(2);
HasSk=GetGlobalVar(3);
If(HasSk==1)
{
SkTime=SkTime+1;
SetGlobalVar(1,SkTime);
}
If(HasBk==1)
{
BkTime=BkTime+1;
SetGlobalVar(0,BkTime);
}
If(SkTime>PanZheng)
{
HasSk=0;
SetGlobalVar(3,HasSk);
}
If(BkTime>PanZheng)
{
HasBk=0;
SetGlobalVar(2,HasBk);
}
//初始设置
TREND=Average(Close,TrendLength);
//多头开仓
If (MarketPosition<>1 And Vol > 0 AND Close[1]>TREND And HasBk==0)
{
Buy(0,Open);
BkTime=0;
SetGlobalVar(0,BkTime);
HasBk=1;
SetGlobalVar(2,HasBk);
}
//多头平仓
If (MarketPosition==1 And BarsSinceEntry>0 And Close[1]<TREND And Vol > 0)
{
Sell(0,Open);
HasBk=0;
SetGlobalVar(2,HasBk);
}
//空头开仓
If(MarketPosition<>-1 And Vol > 0 AND Close[1]<TREND And HasSk==0)
{
SellShort(0,Open);
SkTime=0;
SetGlobalVar(1,SkTime);
HasSk=1;
SetGlobalVar(3,HasSk);
}
//空头平仓
If (MarketPosition==-1 And BarsSinceEntry>0 and Close[1]>TREND And Vol > 0)
{
BuyToCover(0,Open);
HasSk=0;
SetGlobalVar(3,HasSk);
}
End
|
|