- 精华
- 0
- 在线时间
- 42 小时
- UID
- 208306
- 积分
- 37
- 帖子
- 7
- 阅读权限
- 10
- 注册时间
- 2015-5-4
- 最后登录
- 2018-8-21
- 精华
- 0
- UID
- 208306
- 积分
- 37
- 帖子
- 7
- 主题
- 5
- 阅读权限
- 10
- 注册时间
- 2015-5-4
- 最后登录
- 2018-8-21
|
学习TB多月,真正意义上写出的第一个策略;跟大家分享下
Params
numeric profit(30);
numeric stop(15);
Vars
NumericSeries BST;
numericseries dayavg;
NumericSeries SumV1;
Numericseries SumV2;
Numericseries SUM;
NumericSeries Minus1;
NumericSeries minus2;
NumericSeries profitprice;
NumericSeries stopprice;
Numericseries myentryprice;
NumericSeries HighestAfterEntry;
NumericSeries LowestAfterEntry;
NumericSeries myexitprice;
numericseries minpoint;
NumericSeries ll;
NumericSeries hh;
NumericSeries aa;
//numeric qjbl(0);
Bool t1;
bool t2;
Begin
//当日平均价格
minpoint=minmove*PriceScale;
Commentary("minpoint="+Text(minpoint));
BST=BarsSinceToday;
if(BST==0)
{
sumv1=0;
sumv2=0;
dayavg=close[1];
//mp=0;
SetGlobalVar(0,0);
}
else{
dayavg=(dayavg*BST+close[1])/(BST+1);
//mp=GetGlobalVar(0);
}
Commentary("dayavg="+Text(dayavg));
Commentary("BST="+Text(BST));
//Commentary("close[1]="+Text(close[1]));
Plotnumeric("dayavg",dayavg);
//成交量计算
t1=time>=0.091500 and time<=0.095900;
t2=time>=0.130000 and time<=0.134400;
if(t1)
{
if(close[1]>dayavg[1])
{
SumV1=SumV1+Vol[1];
}
else
{
SumV2=SumV2+Vol[1];
}
}
if(t2 and MarketPosition==0)
{
if(time==0.130000)
{
aa=BST;
sumv1=0;
sumv2=0;
dayavg=close[1];
//qjbl=0;
//SetGlobalVar(0,0);
}
else{
dayavg=(dayavg*(bst-aa)+close[1])/(bst-aa+1);
}
/*bb=BST-aa+1;
dayavg=Summation(close,bb)/bb;*/
if(close[1]>dayavg[1])
{
SumV1=SumV1+Vol[1];
}
else
{
SumV2=SumV2+Vol[1];
}
}
Commentary("sumv1="+Text(sumv1));
Commentary("sumv2="+Text(sumv2));
////
//入场
Sum=SumV1+SumV2;
Minus1=SumV1-SumV2;
minus2=sumv2-sumv1;
if(time==0.100000 or time==0.134500)
{
if(Minus1>0.5*Sum and MarketPosition==0) //入场(价格??????????)
{
myentryprice=open;
if(BarStatus==2) Buy(0,myentryprice+minpoint*20);
if(BarStatus!=2) Buy(0,myentryprice+minpoint*3);
}
else if(Minus2>0.5*Sum and MarketPosition==0)
{
myentryprice=open;
if(BarStatus==2) SellShort(0,myentryprice-minpoint*20);
if(BarStatus!=2) SellShort(0,myentryprice-minpoint*3);
}
}
//离场
if(BarsSinceEntry==0)
{
HighestAfterEntry=High;
lowestafterentry=Low;
/*if(MarketPosition<>0)
{
HighestAfterEntry=Max(HighestAfterEntry,AvgEntryPrice);
LowestAfterEntry=Min(LowestAfterEntry,AvgEntryPrice);
}*/
}
else{
HighestAfterEntry=Max(HighestAfterEntry,HIGH);
LowestAfterEntry=Min(LowestAfterEntry,low);
}
Commentary("BarsSinceEntry="+Text(BarsSinceEntry));
Commentary("myentryprice="+Text(myentryprice));
Commentary("HighestAfterEntry="+Text(HighestAfterEntry));
Commentary("LowestAfterEntry="+Text(LowestAfterEntry));
if(marketposition==1/*and BarsSinceEntry>0*/) //多单 && BarsSinceEntry>0 防止单根K线开平仓
{
profitprice=HighestAfterEntry-profit;
stopprice=myentryprice-stop;
ll=Max(profitprice,stopprice);
if(low<ll)
{
myexitprice=Min(open,ll);
if(BarStatus==2) Sell(0,myentryprice-minpoint*20);
if(BarStatus!=2) Sell(0,myentryprice-minpoint*3);
}
//qjbl=1;
//SetGlobalVar(0,1);
}
if(MarketPosition==-1 /*And BarsSinceEntry>0*/) //空单 && BarsSinceEntry>0 防止单根K线开平仓
{
profitprice=LowestAfterEntry+profit;
stopprice=myentryprice+stop;
hh=Min(profitprice,stopprice);
if(high>hh )
{
myexitprice=Max(open,hh);
if(BarStatus==2) BuyToCover(0,myentryprice+minpoint*20);
if(BarStatus!=2) BuyToCover(0,myentryprice+minpoint*3);
}
//qjbl=1;
//SetGlobalVar(0,qjbl);
}
//当日平仓
if(MarketPosition!=0 and time>=0.1510)
{
Sell(0,open);
BuyToCover(0,open);
//qjbl=1;
//SetGlobalVar(0,qjbl);
}
//PlotNumeric("profitprice",profitprice);
//PlotNumeric("stopprice",stopprice);
End
|
|