- 精华
- 0
- 在线时间
- 55 小时
- UID
- 205594
- 积分
- 158
- 帖子
- 34
- 阅读权限
- 40
- 注册时间
- 2015-3-20
- 最后登录
- 2018-12-25
- 精华
- 0
- UID
- 205594
- 积分
- 158
- 帖子
- 34
- 主题
- 14
- 阅读权限
- 40
- 注册时间
- 2015-3-20
- 最后登录
- 2018-12-25
|
Params
Numeric FastLength(5);
Numeric SlowLength(20);
Numeric DelayTicks(5);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric LastBarTime;
Numeric TickCounter;
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
LastBarTime = GetGlobalVar(0);
TickCounter = GetGlobalVar(1);
If(BarStatus == 2 && LastBarTime != Time) // 最新Bar 第一次生成时,Tick 重新开始计数
{
LastBarTime = Time;
TickCounter = 0;
}
If(MarketPosition <> 1 && AvgValue1[1] > AvgValue2[1])
{
If(MarketPosition == 0 || BarStatus != 2)
// 无持仓,直接买多仓
// 持空仓且Bar 不是实时行情,平空仓,买多仓
{
Buy(1,Open);
}Else // 持空仓,Bar 实时行情,平空仓,通过TickCounter 计数,延迟反手
{
BuyToCover(1,Open);
If(TickCounter == 0)
{
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
Buy(1,Open);
}
}
}
SetGlobalVar(0,LastBarTime);
SetGlobalVar(1,TickCounter);
End
教程里面的例子:If(BarStatus == 2 && LastBarTime != Time) // 最新Bar 第一次生成时,Tick 重新开始计数,LastBarTime有什么作用?If(TickCounter == 0)
{
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
Buy(1,Open);
} tickCounter是在上一个ELSE语句里面循环,即该公式是基于K线序列循环还是在单根K线内TICK循环? |
|