- 精华
- 0
- 在线时间
- 57 小时
- UID
- 114160
- 积分
- 74
- 帖子
- 46
- 阅读权限
- 30
- 注册时间
- 2012-12-16
- 最后登录
- 2021-8-3
- 精华
- 0
- UID
- 114160
- 积分
- 74
- 帖子
- 46
- 主题
- 28
- 阅读权限
- 30
- 注册时间
- 2012-12-16
- 最后登录
- 2021-8-3
|
xiaoxiao8 发表于 2015-8-21 16:49
Params
Numeric FastLength(5);
Numeric SlowLength(10);
谢谢您的回复,不过没有通过。说什么pricesale没有宣告
您看一下下面的这个源码,也是TB自带的双均线平仓延迟的,如何委托偏移两个单位。谢谢您
Params
Numeric FastLength(5);
Numeric SlowLength(10);
Numeric DelayTicks(30);
Vars
Numeric aa;
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric LastBarTime;
Numeric TickCounter;
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
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);
}
}
}
If(MarketPosition <> -1 && AvgValue1[1] < AvgValue2[1])
{
If(MarketPosition == 0 || BarStatus != 2)
{
SellShort(1,Open);
}Else // 持多仓且 Bar 为实时行情,平多,延迟反手
{
Sell(1,Open);
If(TickCounter == 0)
{
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
SellShort(1,Open);
}
}
}
SetGlobalVar(0,LastBarTime);
SetGlobalVar(1,TickCounter);
End |
|