设为首页收藏本站

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

请问版主:如何对多日日内数据的测试日内交易系统 [复制链接]

Rank: 3Rank: 3

精华
1
UID
2048
积分
218
帖子
29
主题
8
阅读权限
40
注册时间
2008-8-1
最后登录
2016-8-2
跳转到指定楼层
1#
发表于 2008-10-9 19:19:52 |只看该作者 |倒序浏览
从贴子中看到某日内系统案例:

版主说测试此系统必须打开图表,选择Tick,10秒或1分钟的周期,在商品设置里面,将数据范围设置为1天以来。

那么请问版主,"将数据范围设置为1天以来"是不是意味着TB不能对多日日内数据测试日内交易系统呢?
贴子地址:
http://www.tradeblazer.net/forum/thread-111-1-15.html
系统策略如下
1、开盘10分钟才开始交易
2、在均价线(当日结算价)方向之上(下),只考虑开多(空),
3、突破当日早盘的最高价(或最低价)开多(空)仓,破均价线止损,否则持有,直到尾盘5分钟平仓,
4、盘中交易止损后,空仓,直到再次突破今日高(低)点,开多(空)仓。
以下是代码:
Vars
Numeric AmountCum;    // 当日以来成交总额的合计值
Numeric VolCum;    // 当日以来成交量的合计值
NumericSeries AvgSettlePrice; // 当日均价,因为均价是交易所公布的,只有分时图
         // 里面才有均价数据,在K线图只能近似计算出均价
NumericSeries HighestClose(0);// 当日以来的收盘价的最大值
NumericSeries LowestClose(0); // 当日以来的收盘价的最小值
        
Begin
AmountCum = Cum(Close*Vol);
VolCum = Cum(Vol);
AvgSettlePrice = AmountCum/VolCum;

If(CurrentBar == 0)
{
  HighestClose = Close;
  LowestClose = Close;
}Else
{
  HighestClose = Max(Close,HighestClose[1]);
  LowestClose = Min(Close,LowestClose[1]);
}

If(Time > 0.091000 && Time < 0.145500) // 时间在9:10分之后,14:50之前
{
  If(MarketPosition == 0)
  {
   If(Close > AvgSettlePrice And  Close > HighestClose[1]) // 开多仓
   {
    Buy(1,High);
    Return;
   }
   
   If(Close < AvgSettlePrice And Close < LowestClose[1]) // 开空仓
   {
    SellShort(1,Low);
    Return;
   }
  }
  
  If(MarketPosition == 1 And Close < AvgSettlePrice) // 多仓的止损
  {
   Sell(0,Low);
  }
  
  If(MarketPosition == -1 And Close > AvgSettlePrice) // 空仓的止损
  {
   BuyToCover(0,High);
  }
}

If(Time > 0.145500) // 时间在14:55之后
{
  If(MarketPosition == 1)
  {
   Sell(0,Low);
  }Else If(MarketPosition == -1)
  {
   BuyToCover(0,high);
  }
}
End


//------------------------------------------------------------------------
// 编译版本 GS2004.06.12
// 用户版本 2007/08/06 11:37
// 版权所有 nopain
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
//   每一版本的TrabeBlazer公式修改和重写的权利


谢谢版主!!!!

[ 本帖最后由 samwjwj 于 2008-10-9 23:20 编辑 ]

Rank: 4

精华
0
UID
2276
积分
317
帖子
66
主题
20
阅读权限
50
注册时间
2008-9-4
最后登录
2008-10-20
2#
发表于 2008-10-9 19:43:43 |只看该作者
哥哥,姐姐们,现在越来越不勤快了哦。。。
交易开拓者交流
QQ-1群:38529330(已满)
QQ-2群:24771838

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
3#
发表于 2008-10-9 20:45:07 |只看该作者
哥来了 ,这个只需要在商品设置中设置样本数为20000就可以了,很明显,这个例子是用于10S图的。
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
4#
发表于 2008-10-9 20:47:20 |只看该作者
而且使用了较差的成交讯号,所以测试出来的效果与现实最接近。
TradeBlazer交流群33647992。

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
2048
积分
218
帖子
29
主题
8
阅读权限
40
注册时间
2008-8-1
最后登录
2016-8-2
5#
发表于 2008-10-9 23:35:46 |只看该作者

孤兄可能没理解我的意思

我是问"将数据范围设置为1天以来"是不是意味着TB不能对多日日内数据测试日内交易系统呢?
我试过了,样本数超过一天后,这个日内系统就出错了.即没有任何操作!!!
请版主指点!!

[ 本帖最后由 samwjwj 于 2008-10-10 08:24 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
6#
发表于 2008-10-10 08:34:02 |只看该作者
把CurrentBar == 0
修改为
Date<>Date[1]

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
2387
积分
151
帖子
15
主题
5
阅读权限
40
注册时间
2008-9-18
最后登录
2021-10-16
7#
发表于 2008-10-10 10:30:42 |只看该作者
If(MarketPosition == 0)
  {
   If(Close > AvgSettlePrice And  Close > HighestClose[1]) // 开多仓
   {
    Buy(1,High);
    Return;
   }
   
   If(Close < AvgSettlePrice And Close < LowestClose[1]) // 开空仓
   {
    SellShort(1,Low);
    Return;
   }
  }


这段里面,为什么 Buy(1,High)要用high而不是突破时候的现价close呢?

另外,return 语句在这儿起什么作用呢?

谢谢斑竹

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
8#
发表于 2008-10-10 11:05:06 |只看该作者
这个系统最好使用在Tick上,在Tick上High就是当时的叫卖价。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
2413
积分
165
帖子
13
主题
3
阅读权限
40
注册时间
2008-9-21
最后登录
2008-12-4
9#
发表于 2008-10-30 12:31:53 |只看该作者
如果做测试,这个程序是会出错的~~ 时间限制上的问题..

使用道具 举报

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

bottom

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

GMT+8, 2024-5-4 18:07

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部