设为首页收藏本站

 找回密码
 注册
查看: 7755|回复: 19
打印 上一主题 下一主题

初学,试着写个均线系统又修改了下,附测试结果 [复制链接]

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
跳转到指定楼层
1#
发表于 2009-4-24 14:06:20 |只看该作者 |倒序浏览
我刚接触TB想自己练练手,所以写个系统,希望能得到老师指导

随便定了个交易系统,纯粹练习用
开仓条件
1.当前无持仓
a.10日均线上穿20日均线,现价开多仓,
b.20日均线上穿10日均线,现价开空仓。
2.当前持多仓
a.20日均线上穿10日均线,平仓并反转
3.当前持空仓
a.10日均线上穿20日均线,平仓并反转
4.持仓数量
a.为总资金的10%
5.没有止损

先收集点函数
Average求平均函数
上穿用crossover
buy 多头建仓
sellshort空头建仓
MarketPosition获得当前持仓状态
CurrentCapital()获得当前可用资金
IntPart取整数
ContractUnit每张合约的基本单位数

[ 本帖最后由 louhai3 于 2009-4-27 13:21 编辑 ]

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
2#
发表于 2009-4-24 15:03:38 |只看该作者
先写个中文的,看看通不通逻辑

参数
      数值型 均线a(10);
      数值型 均线b(20);
变量
      等下再补
Begin
        If(无仓)
        {
                If(10日均线上穿20日均线)
                {
                        Buy();
                }Else If(20日均线上穿10日均线)
                {
                        SellShort();
                }

        }Else IF(已有多仓)
        {
                If(20日均线上穿10日均线)
                {
                        SellShort();           
                }
        }else IF(已有空仓)
        {
                If(10日均线上穿20日均线)
                {
                        Buy();         
                }
        }
End

[ 本帖最后由 louhai3 于 2009-4-24 15:25 编辑 ]

使用道具 举报

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
3#
发表于 2009-4-24 16:10:55 |只看该作者
Params
         Numeric TenLength(10);
         Numeric TtyLength(20);
Vars
         Numeric TenAverage;
         Numeric TtyAverage;
         Numeric TradeUnits;
         Numeric Trademoney;
         Numeric Contractprice;
Begin
         TenAverage = Average(Close,TenLength);
         TtyAverage = Average(Close,TtyLength);
         Trademoney = 0.1*CurrentCapital();
         Contractprice = ContractUnit*Close;
         TradeUnits = IntPart(Trademoney/Contractprice);

[ 本帖最后由 louhai3 于 2009-4-24 16:45 编辑 ]

使用道具 举报

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
4#
发表于 2009-4-24 17:07:53 |只看该作者
10日均线上穿20均线
crossover(TenAverage,TtyAverage)
20日均线上穿10均线
crossover(TtyAverage,TenAverage)

使用道具 举报

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
5#
发表于 2009-4-24 17:16:57 |只看该作者
把所有代入后结果如下:

Params
         Numeric TenLength(10);  //短期均线参数
         Numeric TtyLength(20);  //长期均线参数
Vars
         Numeric TenAverage;  //短期均线
         Numeric TtyAverage;  //长期均线
         Numeric TradeUnits;  //可交易的合约数量
         Numeric Trademoney;  //允许交易的金额
         Numeric Contractprice;  //单张合约金额
Begin
         TenAverage = Average(Close,TenLength);  
         TtyAverage = Average(Close,TtyLength);
         
      
        If(MarketPosition == 0)  //无仓位
        {      
                Trademoney = 0.1*CurrentCapital();
                Contractprice = ContractUnit*Close;
                TradeUnits = IntPart(Trademoney/Contractprice);
               
                If(crossover(TenAverage,TtyAverage))  //10日均线上穿20日均线
                {
                        Buy(TradeUnits,Close);  //开多仓
                }Else If(crossover(TtyAverage,TenAverage))  //20日均线上穿10日均线
                {
                        SellShort(TradeUnits,Close); //开空仓
                }

        }Else IF(MarketPosition == 1)   //有多仓
        {
                If(crossover(TtyAverage,TenAverage))  //20日均线上穿10日均线
                {
                        SellShort(TradeUnits,Close);   //平多仓,并反转         
                }
        }else IF(MarketPosition == -1)   //有空仓
        {
                If(crossover(TenAverage,TtyAverage))   //平空仓,并反转
                {
                        Buy(TradeUnits,Close);    //平空仓,并反转         
                }
        }
End

[ 本帖最后由 louhai3 于 2009-4-24 18:01 编辑 ]

使用道具 举报

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
6#
发表于 2009-4-24 18:00:16 |只看该作者
好像写完了,也看不出毛病,等老师看看吧
还有要不要加 return;

先谢了

使用道具 举报

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
7#
发表于 2009-4-24 22:13:25 |只看该作者
试了一下,不能通过
要改成如下才能通过

Params
         Numeric TenLength(10);  //短期均线参数
         Numeric TtyLength(20);  //长期均线参数
Vars
         Numeric TenAverage;  //短期均线
         Numeric TtyAverage;  //长期均线
         Numeric TradeUnits;  //可交易的合约数量
         Numeric Trademoney;  //允许交易的金额
         Numeric Contractprice;  //单张合约金额
Begin
        
        If(MarketPosition == 0)  //无仓位
        {      
                Trademoney = 0.1*CurrentCapital();
                Contractprice = ContractUnit*Close;
                TradeUnits = IntPart(Trademoney/Contractprice);
               
                If(crossover(Average(Close,TenLength),Average(Close,TtyLength)))  //10日均线上穿20日均线
                {
                        Buy(TradeUnits,Close);  //开多仓
                }Else If(crossover(Average(Close,TtyLength),Average(Close,TenLength)))  //20日均线上穿10日均线
                {
                        SellShort(TradeUnits,Close); //开空仓
                }

        }Else IF(MarketPosition == 1)   //有多仓
        {
                If(crossover(Average(Close,TtyLength),Average(Close,TenLength)))  //20日均线上穿10日均线
                {
                        SellShort(TradeUnits,Close);   //平多仓,并反转         
                }
        }else IF(MarketPosition == -1)   //有空仓
        {
                If(crossover(Average(Close,TenLength),Average(Close,TtyLength)))   //10日均线上穿20日均线
                {
                        Buy(TradeUnits,Close);    //平空仓,并反转         
                }
        }
End

知道了
可能Numeric TenAverage;  //短期均线
          Numeric TtyAverage;  //长期均线
要设成序列型的

[ 本帖最后由 louhai3 于 2009-4-24 22:15 编辑 ]

使用道具 举报

Rank: 4

精华
0
UID
3798
积分
257
帖子
49
主题
3
阅读权限
50
注册时间
2009-3-12
最后登录
2009-5-22
8#
发表于 2009-4-25 14:19:02 |只看该作者
挺有条理...............
专业系统交易论坛 http://bbs.qushi.net 俺最爱

使用道具 举报

Rank: 4

精华
0
UID
3059
积分
269
帖子
72
主题
8
阅读权限
50
注册时间
2008-12-17
最后登录
2009-5-31
9#
发表于 2009-4-25 20:45:33 |只看该作者
contractunit那句是不是错了?虽然通过了,但是在合约上测试有开仓么?
李晓东

使用道具 举报

Rank: 4

精华
0
UID
3995
积分
328
帖子
15
主题
3
阅读权限
50
注册时间
2009-4-1
最后登录
2019-10-10
10#
发表于 2009-4-27 13:22:02 |只看该作者
Params
         Numeric TenLength(10);  //短期均线参数
         Numeric TtyLength(20);  //长期均线参数
Vars
         NumericSeries TenAverage;  //短期均线
         NumericSeries TtyAverage;  //长期均线
         Numeric TradeUnits;  //可交易的合约数量
         Numeric Trademoney;  //允许交易的金额
         Numeric Contractprice;  //单张合约金额
         Numeric preBuyprice;
         Numeric preSellprice;
         Numeric Winmoney;
         
Begin
         TenAverage = Average(Close,TenLength);  
         TtyAverage = Average(Close,TtyLength);
         
      
        If(MarketPosition == 0)  //无仓位
        {      
                Trademoney = 0.1*CurrentCapital();
                Contractprice = ContractUnit*Close;
                TradeUnits = IntPart(Trademoney/Contractprice);
               
                If(crossover(TenAverage,TtyAverage))  //10日均线上穿20日均线
                {
                        Buy(TradeUnits,Close);  //开多仓
                        SetGlobalVar(0,Close);
                }Else If(crossover(TtyAverage,TenAverage))  //20日均线上穿10日均线
                {
                        SellShort(TradeUnits,Close); //开空仓
                        SetGlobalVar(1,Close);
                }

        }Else IF(MarketPosition == 1)   //有多仓
        {
                If(crossover(TtyAverage,TenAverage))  //20日均线上穿10日均线
                {
                        preBuyprice=GetGlobalVar(0);

                        IF(close==preBuyprice)
                        {
                             SellShort(TradeUnits,Close);   //平多仓,并反转

                        }else
                        {
                             sell(TradeUnits,Close);//单平多仓
                             Winmoney=TradeUnits*close*ContractUnit;
                             Trademoney = 0.1*(CurrentCapital()+Winmoney);
                             Contractprice = ContractUnit*Close;
                             TradeUnits = IntPart(Trademoney/Contractprice);
                             SellShort(TradeUnits,Close);
                        }         
                }
        }else IF(MarketPosition == -1)   //有空仓
        {
                If(crossover(TenAverage,TtyAverage))   
                {
                        preSellprice=GetGlobalVar(1);

                        IF(close==preSellprice)
                        {
                             Buy(TradeUnits,Close);   //平空仓,并反转

                        }else
                        {
                             BuyToCover(TradeUnits,Close);//单平空仓
                             Winmoney=TradeUnits*close*ContractUnit;
                             Trademoney = 0.1*(CurrentCapital()+Winmoney);
                             Contractprice = ContractUnit*Close;
                             TradeUnits = IntPart(Trademoney/Contractprice);
                             Buy(TradeUnits,Close);
                        }         
                }
        }
End

[ 本帖最后由 louhai3 于 2009-4-27 13:24 编辑 ]

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-9 21:44

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部