- 精华
- 0
- 在线时间
- 63 小时
- UID
- 175564
- 积分
- 20
- 帖子
- 11
- 阅读权限
- 10
- 注册时间
- 2013-11-12
- 最后登录
- 2021-2-25
- 精华
- 0
- UID
- 175564
- 积分
- 20
- 帖子
- 11
- 主题
- 3
- 阅读权限
- 10
- 注册时间
- 2013-11-12
- 最后登录
- 2021-2-25
|
小米 发表于 2014-2-18 12:36
你所说的tick计数器是指公式指南里的平仓延迟反手那个模板吗?
那个模板里是根本没有判断 a_getopenorder ...
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 && A_GetOpenOrderCount()==0)
{
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
Buy(1,Open);
}
}
}
If(MarketPosition <> -1 && AvgValue1[1] < AvgValue2[1])
{
If(MarketPosition == 0 || BarStatus != 2)
{
SellShort(1,Open);
}Else // 持多仓且Bar为实时行情,平多,延迟反手
{
Sell(1,Open);
If(TickCounter == 0 && A_GetOpenOrderCount()==0)
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
SellShort(1,Open);
}
}
}
SetGlobalVar(0,LastBarTime);
SetGlobalVar(1,TickCounter);
End
原来是这样的 ,但是我在标红的地方加入了一个这样的条件,但是好像这个条件完全不起作用啊,没等我未成交单为0,TICK计数器就开始计数了!
麻烦小米了! |
|