- 精华
- 0
- 在线时间
- 108 小时
- UID
- 192816
- 积分
- 107
- 帖子
- 61
- 阅读权限
- 30
- 注册时间
- 2014-8-24
- 最后登录
- 2017-7-11
- 精华
- 0
- UID
- 192816
- 积分
- 107
- 帖子
- 61
- 主题
- 8
- 阅读权限
- 30
- 注册时间
- 2014-8-24
- 最后登录
- 2017-7-11
|
本帖最后由 luochaoju 于 2016-10-5 20:23 编辑
帮我看个问题。
有个报警的问题,我觉得逻辑没有问题了,就是不能报警,请求您有空时帮我 看看
这个是测试用的,每个bar 都会开平仓。 我选择在每个bar 的第二个tick 报警。 因为tb报警 会在这个bar 不停报警,我想这个bar 只报警一次。所以用了全局变量,记录新生成的bar 的tick ,计数到tickcounter==2时 ,报警。
Params
Numeric FastLength(5);
Numeric SlowLength(200);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric LastBarTime;
Numeric TickCounter;
Begin
LastBarTime=GetGlobalVar(0); //图表最新时间 由 0号全局变量 赋值
TickCounter=GetGlobalVar(1); //tick计数器, 由1号全局变量赋值
If (BarStatus==2 and LastBarTime!=Time) //当最新bar生成,图表记录的最新时间 和 真实时间不一致
{LastBarTime=Time; //将真实时间赋值给 图表记录的最新时间
TickCounter=0;} //tick计数器 初始化为0
if (LastBarTime==Time and TickCounter==0 ) {TickCounter=TickCounter+1;} //
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
If( MarketPosition==0 and Open[1] > open[2])
{
buy(1,Open);
If(TickCounter==2) //当为这个bar 第二个tick 时 报警
{Alert("开多 "+"价格为:"+Text(open));}
}
if (MarketPosition==1)
{sell(1,open);}
If( MarketPosition==0 and Open[2] > open[1])
{
SellShort(1,Open);
If(TickCounter==2) //当为这个bar 第二个tick 时 报警
{ Alert("开空 "+"价格为:"+Text(open));}
}
if (MarketPosition==-1)
{BuyToCover(1,open);}
End
|
|