ctmd110 发表于 2013-6-3 23:16

用TB写了个均线交易系统 附玻璃上的测试结果

本帖最后由 ctmd110 于 2013-6-3 23:44 编辑

初始资金3万, 2小时K线,突破35日均线0.3倍ATR则建仓,止损幅度一个ATR,止赢:反突破35MA 0.5倍ATR(最新K线前一个K线的ATR值)平仓,每次使用总权益的70%资金建仓。
下面是玻璃1309的测试结果:





下面是 09年3月以来螺纹钢指数的测试:



在Y1309的测试上,自2012年10月到2013年2月的这段震荡期间净亏七千

貌似只要不做哪些经常跳空的品种,重仓加严格止损的操作也不会被爆仓

ctmd110 发表于 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;
                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;
                        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;   //计算最新波动幅度值
                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;
                        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;//计算最新波动幅度值
                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公式修改和重写的权利
//------------------------------------------------------------------------

sdsxtt 发表于 2013-6-4 00:11

:lol

我要生存 发表于 2013-6-4 06:09

测玻璃没什么意义

趋势化程序交易 发表于 2013-6-4 14:19

好帖,学习,本人正这方面研究中,

tsctnet 发表于 2013-6-4 14:50

曲线一般般

tsctnet 发表于 2013-6-4 14:51

玻璃数据量太少 测试也没什么用

heaven_911 发表于 2013-6-4 21:07

楼主强大 学习啊

lyrwrh 发表于 2017-5-7 10:30

楼主,用在TB上自动化交易,信号会频闪,现在该系统有改进吗?

dongyan 发表于 2017-5-16 10:36

:ZANTONG
页: [1]
查看完整版本: 用TB写了个均线交易系统 附玻璃上的测试结果