设为首页收藏本站

 找回密码
 注册
楼主: 东方
打印 上一主题 下一主题

一点一点消化“海龟” [复制链接]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
11#
发表于 2007-10-7 10:35:22 |只看该作者
原帖由 东方 于 2007-10-7 08:21 发表
"1、有没有讯号和数据多少没有直接关系,条件满足才能出讯号。"

您的意思我明白,就是无论有多少数据,只要没有满足条件,就没有信号;只有在条件满足时才能出讯号。

但是[我下载过首贴中的中英文资料,但是没有详细读],根据您 ...



回复1:
海龟定义的是20日和55日等参数,当初设计的运行环境是日线上,您把它放在30min上就相当于20根30min K线的突破。而不是20日的突破。

回复2:
1、保证金的处理是在当前Bar结束之后按照当前Bar的最低价(多仓),最高价(空仓)来计算期间最大持仓保证金是否足够。如果不够就会被强行平仓。
2、关于为什么开始连续加5次仓,隔了好一段在又加了一次呢,是因为钱不够了,开第6个仓的是钱都是前面5个仓位的盈利+部分初始资金才凑够的。所以按您的操作就是满仓运行。很容易被强行平仓。
3、从8000-9000不出信号是因为有一个过滤条件LastProfitableTradeFilter,因为前一次交易成功,所以后面的被忽略了。
4、综述。您这里的问题主要出在开仓太多。海龟的系统是环环相扣的,您只要按照基本规则,保持仓位。就会一直把仓位从底拿到顶。

回复4:
还是不一样,您可以看看CrossOver的算法。里面还有循环操作。
如果上一个Bar两条线的值是相等的呢?就需要继续往前推算。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
12#
发表于 2007-10-7 10:43:57 |只看该作者
原帖由 东方 于 2007-10-7 09:02 发表

在允许最大连续建仓次数那里设为4次,可以达到目的。

本着学习TB语言的目的,我习惯于在[一个没有增减仓的]指令里用类似于
buy (IntPart(0.8*CurrentCapital()/(close*300*0.10)),nextopen);的方式表示,当然0。8可以以 ...


这里的4并非不可更改,要根据商品的属性以及趋势是否确定进行调整。
引用一段原文:
最大头寸限制为:
级别                类型                       最大单位
1                   单一市场                   4个单位
2                   高度相关市场             6个单位
3                   低度相关市场             10个单位
4                  单向交易—多头或空头  12个单位

单一市场——每个市场最大为4个单位。
高度相关市场——对于高度相关的市场,在一个特定方向上最大可以有6个单位(即,6个多头单位或6个空头单位)。高度相关市场包括:燃油和原油;黄金和白银;瑞士法郎和德国马克;短期国库券和欧洲美元,等等。
低度相关市场——对于低度相关的市场,在一个特定方向上最大可以有10个单位。低度相关市场包括:黄金和铜;白银和铜,以及很多因头寸限制而海龟不能进行交易的谷物组合。
单一方向——在一个多头方向或一个空头方向上全部单位的最大数目为12。因此,理论上你可以同时持有12个单位的多头头寸和12个单位的空头头寸。

海龟用满仓(loaded)这个词表示在特定的风险级别下持有所允许的最大数目的单位。因此,“满仓日圆”就表示持有最大4个单位的日圆合约。完全满仓表示持有12个单位,等等。

使用道具 举报

中级操盘手

Auto Trading Learner

Rank: 9Rank: 9Rank: 9

精华
1
UID
7
积分
15417
帖子
216
主题
26
阅读权限
150
注册时间
2007-7-21
最后登录
2007-11-22
13#
发表于 2007-10-7 11:54:12 |只看该作者
用>=而不用CROSSover/under,是否会出现平仓后,接着会反复开仓。

使用道具 举报

Rank: 4

精华
0
UID
41
积分
498
帖子
67
主题
8
阅读权限
50
注册时间
2007-7-25
最后登录
2019-3-24
14#
发表于 2007-10-7 12:14:18 |只看该作者
等我消化一下您的回复,再请教。谢谢。


首先,我依次改变了  允许最大连续建仓次数  设为4、3、2、1次,问题又出了,如图:
设为4、3、2平仓位置没有变










设为1  第一次的平仓位置没有变,第二次的平仓位置变化大,



莫非和股指期货每点代表300元有关?导致100W资金也不足以开1手?看来我还得仔细读一下。

[ 本帖最后由 东方 于 2007-10-7 12:25 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 4

精华
0
UID
41
积分
498
帖子
67
主题
8
阅读权限
50
注册时间
2007-7-25
最后登录
2019-3-24
15#
发表于 2007-10-7 17:27:57 |只看该作者
已经找到问题之一:
100W资金做HS300股票指数期货大多只可以在1MIN周期以下,否则,出入市和止损条件经常和TurtleUnits 发生不正常的矛盾;
或者说针对于中国HS300来说,海龟显得保守;或者说海龟对风险控制极为严格,规劝没有1000W不要以日线做HS300,100W只可以做1MIN;
不知道该如何描述了。。。。。

TurtleUnits = IntPart((CurrentCapital()*0.01) /(N * BigPointValue()));




日线图500W和1000W资金







觉得乱糟糟的。。。。
总感觉海龟规则里好像还应该有某个深奥的东西没有体现到TB里。。。

[ 本帖最后由 东方 于 2007-10-8 07:32 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 4

精华
0
UID
41
积分
498
帖子
67
主题
8
阅读权限
50
注册时间
2007-7-25
最后登录
2019-3-24
16#
发表于 2007-10-8 07:41:24 |只看该作者
由于之前没有仔细学习整个“海龟”里的所有帖子,所以才有了以上之中的部分提问。
仔细看过后发现,象单位的问题等已经有同学大侠们提到过,不同商品测试结果、需要修改参数、同一BAR多次仓及止损还是下一个BAR止损、非剩余资金可开仓手数等等都有类似的讨论。。。

使用道具 举报

Rank: 4

精华
0
UID
41
积分
498
帖子
67
主题
8
阅读权限
50
注册时间
2007-7-25
最后登录
2019-3-24
17#
发表于 2007-10-8 20:54:14 |只看该作者
回复1:
海龟定义的是20日和55日等参数,当初设计的运行环境是日线上,您把它放在30min上就相当于20根30min K线的突破。而不是20日的突破。


本着怀疑和钻牛角尖的态度去学习的目的,我首先将TR改为H-L,因为20周期平均后差距微微,几乎影响不到单位的界定,以有望剔除上述疑问。

回复2:
1、保证金的处理是在当前Bar结束之后按照当前Bar的最低价(多仓),最高价(空仓)来计算期间最大持仓保证金是否足够。如果不够就会被强行平仓。
2、关于为什么开始连续加5次仓,隔了好一段在又加了一次呢,是因为钱不够了,开第6个仓的是钱都是前面5个仓位的盈利+部分初始资金才凑够的。所以按您的操作就是满仓运行。很容易被强行平仓。
3、从8000-9000不出信号是因为有一个过滤条件LastProfitableTradeFilter,因为前一次交易成功,所以后面的被忽略了。
4、综述。您这里的问题主要出在开仓太多。海龟的系统是环环相扣的,您只要按照基本规则,保持仓位。就会一直把仓位从底拿到顶。



我将单位稍做处理,并增加对当前周期是否可以运用海龟的大致判断后,最大头寸限制和强制平仓的问题也没有了,但似乎增加的代码好像因为语法有误影响了整体,



回复4:
还是不一样,您可以看看CrossOver的算法。里面还有循环操作。
如果上一个Bar两条线的值是相等的呢?就需要继续往前推算。


此问题想了想好像已经解决了,主要为了剔除对HIGHEST  LOWEST的疑问。

[ 本帖最后由 东方 于 2007-10-9 18:00 编辑 ]

使用道具 举报

Rank: 4

精华
0
UID
41
积分
498
帖子
67
主题
8
阅读权限
50
注册时间
2007-7-25
最后登录
2019-3-24
18#
发表于 2007-10-9 18:56:07 |只看该作者

请教老师

系列疑问求助
6、


在海龟代码中:
Numeric TurtleUnits;                    // 交易单位

TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());
TurtleUnits = IntPart(TurtleUnits); // 对小数取整

其中一个没有取整,而另一个取整了,但是没有用类似TurtleUnits1、TurtleUnits2加以区别,一个值有两个定义,而之后的代码均应用TurtleUnits ,没有影响吗?

[ 本帖最后由 东方 于 2007-10-9 19:05 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
19#
发表于 2007-10-9 20:41:21 |只看该作者
原帖由 东方 于 2007-10-9 18:56 发表
系列疑问求助
6、


在海龟代码中:
Numeric TurtleUnits;                    // 交易单位

TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());
TurtleUnits = IntPart(TurtleUnits) ...


这不是两个变量,是先执行上一行代码,把turtleunits的值算出来。但是为一个带小数点的数字。
第二行就在第一行的基础上,进行取整,然后把取整后的值赋给turtleUnits。

使用道具 举报

Rank: 4

精华
0
UID
41
积分
498
帖子
67
主题
8
阅读权限
50
注册时间
2007-7-25
最后登录
2019-3-24
20#
发表于 2007-10-9 21:07:16 |只看该作者
明白了,谢谢。

如果变

TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());
TurtleUnits = IntPart(TurtleUnits); // 对小数取整

直接为
TurtleUnits = IntPart((TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue()));

可以吗?

使用道具 举报

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

bottom

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

GMT+8, 2024-5-2 10:20

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部