- 金币:
-
- 奖励:
-
- 热心:
-
- 注册时间:
- 2007-6-2
|
|

楼主 |
发表于 2013-6-3 23:27
|
显示全部楼层
本帖最后由 ctmd110 于 2013-6-3 23:29 编辑
附上TB代码,写的比较混乱,有兴趣的可以看看
//------------------------------------------------------------------------
// 简称: test
// 名称: test
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
Numeric l(20); //均线周期
Vars
NumericSeries atr;
Numeric N;
Numeric ma1;
Numeric price; //开仓价
Bool flag(False);
Numeric point; //价格最小变动点数
Begin
if(CurrentBar<l+2) Return;
atr=AvgTrueRange(14);
ma1=Average(close,l);
point=MinMove*PriceScale;
If(MarketPosition==0) //无持仓
{
N=atr[1];
if(High>ma1+0.3*N) //开多仓
{flag=True;price=ma1+0.3*N+point;Buy(0,price); }
if(low<ma1-0.3*N) //开空仓
{flag=True;price=ma1-0.3*N-point;SellShort(0,price);}
if (flag) //记录N,开仓价
{
SetTBProfileString("MY_TRADER_PARMS","N",text(N)); //记录开仓时的波动幅度N
SetTBProfileString("MY_TRADER_PARMS","PRICE",text(price)); //记录开仓价
}
}
else if( marketposition==1) //持有多头仓位
{
N=Value(GetTBProfileString("MY_TRADER_PARMS","N"));
price=Value(GetTBProfileString("MY_TRADER_PARMS","PRICE"));
If(Low<=price-N) //止损平仓,反手
{
price=price-N-point;
Sell(0,price);
N=atr[1];
if(low<ma1-0.3*N) //反手开空仓
{
If(price>ma1-0.3*N) price=ma1-0.3*N;
flag=True;SellShort(0,price);
}
if (flag) //记录N,开仓价
{
SetTBProfileString("MY_TRADER_PARMS","N",text(N)); //记录开仓时的波动幅度N
SetTBProfileString("MY_TRADER_PARMS","PRICE",text(price)); //记录开仓价
}
Return;
}
N=atr[1]; //计算最新波动幅度值
If(low<=ma1-0.5*N&&low>price) //止赢并反手
{
Sell(0,ma1-0.5*N-point); //止赢
flag=True;
price=ma1-0.5*N-point;
SellShort(0,price); //反手开空仓
if (flag) //记录N,开仓价
{
SetTBProfileString("MY_TRADER_PARMS","N",text(N)); //记录开仓时的波动幅度N
SetTBProfileString("MY_TRADER_PARMS","PRICE",text(price)); //记录开仓价
}
}
}
else //持有空头仓位
{
N=Value(GetTBProfileString("MY_TRADER_PARMS","N"));
price=Value(GetTBProfileString("MY_TRADER_PARMS","PRICE"));
If(High>=price+N) //止损平仓,反手
{
price=price+N+point;
BuyToCover(0,price); //止损平仓
N=atr[1];
if(High>ma1+0.3*N) //反手开多仓
{
If(price<ma1+0.3*N) price=ma1+0.3*N+point;
flag=True;
Buy(0,price);
}
if (flag) //记录N,开仓价
{
SetTBProfileString("MY_TRADER_PARMS","N",text(N)); //记录开仓时的波动幅度N
SetTBProfileString("MY_TRADER_PARMS","PRICE",text(price)); //记录开仓价
}
Return;
}
N=atr[1]; //计算最新波动幅度值
If(High>=ma1+0.5*N&&High<price) //止赢并反手
{
BuyToCover(0,ma1+0.5*N+point);
flag=True;
price=ma1+0.5*N+point;
Buy(0,price); //反手开多仓
if (flag) //记录N,开仓价
{
SetTBProfileString("MY_TRADER_PARMS","N",text(N)); //记录开仓时的波动幅度N
SetTBProfileString("MY_TRADER_PARMS","PRICE",text(price)); //记录开仓价
}
}
}
end
//------------------------------------------------------------------------
// 编译版本 GS2010.12.08
// 用户版本 2013/06/01 21:41
// 版权所有 gtcar120
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------ |
|
|