- 精华
- 0
- 在线时间
- 42 小时
- UID
- 246605
- 积分
- 16
- 帖子
- 12
- 阅读权限
- 10
- 注册时间
- 2017-1-30
- 最后登录
- 2020-6-28
- 精华
- 0
- UID
- 246605
- 积分
- 16
- 帖子
- 12
- 主题
- 4
- 阅读权限
- 10
- 注册时间
- 2017-1-30
- 最后登录
- 2020-6-28
|
一个问题是参数N4-6不能实现。二是当根k线达到浮赢回撤平仓条件,没能在当根k实时平仓。
Params
Numeric Length(20);
Numeric Offset(2);
Numeric lots(1);//手数
Numeric qj(150);//缺口区间
Numeric tpds(1);//突破点数
Numeric gdzs(10);//固定止损
Numeric ylqd(20);//盈利启动
Numeric bbpcd(5);//保本平仓点
Numeric zgpc(0);//中轨平仓点
Numeric xzcs(10);//限制开仓K线数
Numeric N(6);//收口后4-6参数
Vars
NumericSeries UpLine; //上轨
NumericSeries DownLine; //下轨
NumericSeries MidLine; //中间线
Numeric Band;
Numeric MinPoint; //最小变动价位
NumericSeries myprice;
Numeric extprice;
BoolSeries dcon;
BoolSeries kcon;
NumericSeries qk;
numericseries myflag;
NumericSeries HighestAfterEntry; // 开仓后出现的最高价
NumericSeries LowestAfterEntry; // 开仓后出现的最低价
Begin
// 集合竞价和小节休息过滤
If(!CallAuctionFilter()) Return;
//指标计算
MinPoint = MinMove*PriceScale; //最小变动价位
MidLine = AverageFC(Close,Length);
Band = StandardDev(Close,Length,2);
UpLine = MidLine + Offset * Band;
DownLine = MidLine - Offset * Band;
PlotNumeric("UpLine",UpLine);
PlotNumeric("DownLine",DownLine);
PlotNumeric("MidLine",MidLine);
qk=UpLine-DownLine;
dcon=CrossOver(h,UpLine[1]+tpds*MinPoint);
kcon=CrossUnder(l,DownLine[1]-tpds*MinPoint);
If(BarsSinceentry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}else
{
HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
}
Commentary("HighestAfterEntry="+Text(HighestAfterEntry));
Commentary("LowestAfterEntry="+Text(LowestAfterEntry));
If(CurrentBar<=length)myflag=0;
If(MarketPosition==0 && myflag==0)
{
If(qk[n]<qj and dcon)
{
myprice=Max(Open,UpLine[1]+tpds*MinPoint);
Buy(lots,myprice);
myflag =1;
}
If(qk[n]<qj and kcon)
{
myprice=Min(Open,DownLine[1]-tpds*MinPoint);
SellShort(lots,myprice);
myflag =1;
}
}
Commentary("myflagg:="+Text(myflag));
If(MarketPosition==0 && myflag ==1 && BarsSinceExit>=xzcs)
{
If(qk[1]<qj and dcon)
{
myprice=Max(Open,UpLine[1]+tpds*MinPoint);
Buy(lots,myprice);
}
If(qk[1]<qj and kcon)
{
myprice=Min(Open,DownLine[1]-tpds*MinPoint);
SellShort(lots,myprice);
}
}
If(MarketPosition==1 and BarsSinceEntry>1)
{
If(HighestAfterEntry>=myprice+ylqd*MinPoint)
{
If(l<=myprice+bbpcd*MinPoint)
{
extprice=Min(Open,myprice+bbpcd*MinPoint);
Sell(0,extprice);
Commentary("保本平");
}
}
If(Low<=myprice-gdzs*MinPoint)
{
extprice=Min(Open,myprice-gdzs*MinPoint);
Sell(0,extprice);
Commentary("固定止损");
}
If(L<=MidLine[1]-zgpc*MinPoint)
{
extprice=Min(Open,MidLine[1]-zgpc*MinPoint);
Sell(0,extprice);
Commentary("中轨平仓");
}
}
If(MarketPosition==-1 and BarsSinceEntry>1)
{
If(LowestAfterEntry<=myprice-ylqd*MinPoint)
{
If(h>=myprice-bbpcd*MinPoint)
{
extprice=Max(Open,myprice-bbpcd*MinPoint);
BuyToCover(0,extprice);
Commentary("保本平");
}
}
If(high>=myprice+gdzs*MinPoint)
{
extprice=Max(Open,myprice+gdzs*MinPoint);
BuyToCover(0,extprice);
Commentary("固定止损");
}
If(h>=MidLine[1]+zgpc*MinPoint)
{
extprice=Max(Open,MidLine[1]+zgpc*MinPoint);
BuyToCover(0,extprice);
Commentary("中轨平仓");
}
}
End |
|