- 精华
- 0
- 在线时间
- 209 小时
- UID
- 282705
- 积分
- 223
- 帖子
- 93
- 阅读权限
- 40
- 注册时间
- 2019-8-19
- 最后登录
- 2020-3-31
- 精华
- 0
- UID
- 282705
- 积分
- 223
- 帖子
- 93
- 主题
- 28
- 阅读权限
- 40
- 注册时间
- 2019-8-19
- 最后登录
- 2020-3-31
|
小米 发表于 2019-9-24 09:27
1,前面有强调在最后一个K线上,即barstatus==2的状态下。。你的代码里没有这样的限制 。。
2,前面有强 ...
Params
Numeric Lot(1); //交易手数
Numeric LossTime(15); //止损单位倍数值
Numeric GainTime(15); //止盈单位倍数值
Vars
Series<Numeric> COdiff1;
Series<Numeric> COdiff2;
Bool UpTrend(False);
Bool DownTrend(False);
Series<Numeric> gainExitPrice; //止盈价
Series<Numeric> lossExitPrice; //止损价
Series<Numeric> buyprice(0); //买入价
Series<Numeric> sellprice(0); //卖出价
Events
onBar(ArrayRef<Integer> indexs)
{
// 集合竞价过滤
If(BarStatus == 2 && Time == 0.090000 && CurrentTime < 0.090000) Return;
If(BarStatus == 2 && Time == 0.210000 && CurrentTime < 0.210000) Return;
If(BarStatus == 2 && Time == 0.103000 && CurrentTime < 0.103000) Return;
If(BarStatus == 2 && Time == 0.133000 && CurrentTime < 0.133000) Return;
//涨跌停板过滤
If((Close==Q_LowerLimit) or (Close==Q_UpperLimit)) Return;
COdiff1 = Close[1]-Open[1];
COdiff2 = Close[2]-Open[2];
If(COdiff1>0 && COdiff2>0)
{
UpTrend = True;
}
Else If(COdiff1<-0 && COdiff2<-0)
{
DownTrend = True;
}
//系统入场
If(BarStatus == 2 && A_TotalPosition(0) == 0 && UpTrend == True)
{
A_SendOrder(Enum_Buy,Enum_Entry,Lot,Q_AskPrice());
SetGlobalVar(0,Q_AskPrice());
buyprice = GetGlobalVar(0);
}
If(BarStatus == 2 && A_TotalPosition(0) == 0 && DownTrend == True)
{
A_SendOrder(Enum_Sell,Enum_Entry,Lot,Q_BidPrice());
SetGlobalVar(0,Q_BidPrice());
sellprice = GetGlobalVar(0);
}
Commentary("AT="+Text(A_TotalPosition(0)));
Commentary("buyprice="+Text(buyprice));
Commentary("sellprice="+Text(sellprice));
//计算止盈止损
If(BarStatus == 2 && A_TotalPosition(0) > 0 )
{
buyprice = GetGlobalVar(0);
sellprice = 0;
gainExitPrice = buyprice + GainTime*MinMove*PriceScale; //止盈价=开仓价+GT个最小变动价位
lossExitPrice = buyprice - LossTime*MinMove*PriceScale; //止损价=开仓价-LT个最小变动价位
Commentary("我的止盈价="+Text(gainExitPrice));
Commentary("我的止损价="+Text(lossExitPrice));
}
Else If(BarStatus == 2 && A_TotalPosition(0) < 0)
{
buyprice = 0;
sellprice = GetGlobalVar(0);
gainExitPrice = sellprice - GainTime*MinMove*PriceScale; //止盈价=开仓价-GT个最小变动价位
lossExitPrice = sellprice + LossTime*MinMove*PriceScale; //止损价=开仓价+LT个最小变动价位
Commentary("我的止盈价="+Text(gainExitPrice));
Commentary("我的止损价="+Text(lossExitPrice));
}
//多单离场
If(BarStatus == 2 && A_TotalPosition(0) > 0 && A_GetOpenOrderCount == 0)
{
//高于止盈价,全部止盈出场
If(High >= gainExitPrice)
{
A_SendOrder(Enum_Sell,Enum_Exit,Lot,Q_BidPrice());
PlotString("Text","止盈",High+1,White);
SetGlobalVar(0,0);
//count=GetGlobalVar(0);
lossExitPrice = 0;
gainExitPrice = 0;
buyprice = 0;
}
Else If(Low <= lossExitPrice)
{
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice());
SetGlobalVar(0,0);
//count=GetGlobalVar(0);
lossExitPrice = 0;
gainExitPrice = 0;
buyprice = 0;
}
}
//空单离场
If(BarStatus == 2 && A_TotalPosition(0) < 0 && A_GetOpenOrderCount == 0)
{
//低于止盈价,全部止盈出场
If(Low <= gainExitPrice)
{
A_SendOrder(Enum_Buy,Enum_Exit,Lot,Q_AskPrice());
PlotString("Text","止盈",High+1,White);
SetGlobalVar(0,0);
//count=GetGlobalVar(0);
lossExitPrice = 0;
gainExitPrice = 0;
sellprice = 0;
}
Else If(High >= lossExitPrice)
{
A_SendOrder(Enum_Buy,Enum_Exit,A_BuyPosition(),Q_AskPrice());
SetGlobalVar(0,0);
//count=GetGlobalVar(0);
lossExitPrice = 0;
gainExitPrice = 0;
sellprice = 0;
}
}
}
根据版主的要求加上了barstatus==2,但为什么在策略交易里还是没有任何交易数据?
是因为在TBQuant里用不了这些函数吗?? |
|