设为首页收藏本站

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

请教关于海龟的修改 [复制链接]

Rank: 5Rank: 5

精华
1
UID
404
积分
1434
帖子
236
主题
74
阅读权限
60
注册时间
2007-9-23
最后登录
2014-7-25
跳转到指定楼层
1#
发表于 2008-1-6 14:40:47 |只看该作者 |倒序浏览
Params
        Numeric RiskRatio(0.1);
Vars
        Numeric TotalEquity;
Begin               
        TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());
        lots = (TotalEquity*RiskRatio) /(Close[1]*ContractUnit()*BigPointValue());
        lots = IntPart(lots);


        If(condition1 and condition5 And MarketPosition ==0 )
        {
                Buy(lots,0);
        }
End

模仿海龟写的,主要想表达 将账户总额的一个百分比用于下单

1..当账户上持有多个品种合约时是否有效?
CurrentContracts()*Close*ContractUnit()
记得楼主说TB只讲公式应用到当前的品种和账户上,所以不知道这里是否会计算所有合约?

2.红色部分为什么不用 A_CurrentEquity() ?
能否解释下

3.查询持有合约品种个数时该用哪个系统函数?

[ 本帖最后由 skyline 于 2008-1-6 14:45 编辑 ]

Rank: 5Rank: 5

精华
1
UID
404
积分
1434
帖子
236
主题
74
阅读权限
60
注册时间
2007-9-23
最后登录
2014-7-25
2#
发表于 2008-1-6 15:17:54 |只看该作者
在测试中常常出现只下单一手的状况,不知道什么原因
感觉有很大的问题

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
377
积分
1827
帖子
222
主题
29
阅读权限
70
注册时间
2007-9-19
最后登录
2021-12-9
3#
发表于 2008-1-6 18:13:56 |只看该作者
TB我还没有完全学明白
仅供参考吧

按资金固定比例下单,不一定非要写那些代码啊。
在交易设置中,在 初始资金 ,写上你的可用资金。 保证你的帐户资金和交易设置同步。
然后选择以固定资金比例。
不过,这用于历史数据的统计上。完全没问题。

如果嫌手动设置麻烦。
那你的这段代码中
lots = (TotalEquity*RiskRatio) /(Close[1]*ContractUnit()*BigPointValue());
没写上保证金比例。MarginRatio()   我好象没理解错吧。
这个问题,不太严重。不打算保证金杠杆而已。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
4#
发表于 2008-1-7 08:28:11 |只看该作者
看得明白这段代码,就可以了.onemargin指的是一手时所需保证金,onelostpercent指的是假若一次交易是亏损,可以承受的亏损百分比,stopset指的是止损点.
oneMargin = open*ContractUnit()*BigPointValue()*MarginRatio();
TotalEquity = CurrentCapital()+ Abs(CurrentContracts())*oneMargin;
lots=intpart((TotalEquity*(onelostpercent/1000))/(ContractUnit()*BigPointValue()*stopset*minmove*pricescale));
Entryratio=(lots*oneMargin)/TotalEquity;
从代码中可看出,是先求可做的手数,然后求百分比,当然也可以用百分比作参数来反求手数,上述代码指的均是回测帐户的情况,真实帐户还要另外使用行情函数和帐户函数.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
5#
发表于 2008-1-7 08:31:51 |只看该作者
lots = (TotalEquity*RiskRatio) /(Close[1]*ContractUnit()*BigPointValue());
这里的riskratio显然就是用一手可承受的百分比作为参数来反求可做的手数.onelostpercent/1000
就相当于riskratio.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
6#
发表于 2008-1-7 08:35:18 |只看该作者
CurrentContracts()*Close*ContractUnit()
这里指的是一个图表上的回测帐户中的商品合约数,品种只是一个,不能反映很多个.
不用 A_CurrentEquity() ,是因为程序要表达的是回测帐户的情况,当用到同步交易时,在最后一个bar就要使用这个函数了.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
404
积分
1434
帖子
236
主题
74
阅读权限
60
注册时间
2007-9-23
最后登录
2014-7-25
7#
发表于 2008-1-7 08:42:17 |只看该作者
原帖由 jvya 于 2008-1-6 18:13 发表
TB我还没有完全学明白
仅供参考吧

按资金固定比例下单,不一定非要写那些代码啊。
在交易设置中,在 初始资金 ,写上你的可用资金。 保证你的帐户资金和交易设置同步。
然后选择以固定资金比例。
不过,这用于历史数据的统 ...


我本来想让自己的交易程式更完整点,设置更少点。但没法实现,就只好在手工计算了。

我在想这个totalequity计算是否正确?当帐户上有多个合约时


感觉是少个 MarginRatio(),但好像不加测试时也正确

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
404
积分
1434
帖子
236
主题
74
阅读权限
60
注册时间
2007-9-23
最后登录
2014-7-25
8#
发表于 2008-1-7 08:44:55 |只看该作者
原帖由 孤舟骑浪 于 2008-1-7 08:35 发表
CurrentContracts()*Close*ContractUnit()
这里指的是一个图表上的回测帐户中的商品合约数,品种只是一个,不能反映很多个.
不用 A_CurrentEquity() ,是因为程序要表达的是回测帐户的情况,当用到同步交易时,在最后一个 ...

就是说我真是帐户应该用A_CurrentEquity()来求总资产?

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
9#
发表于 2008-1-7 10:11:53 |只看该作者
就是说我真是帐户应该用A_CurrentEquity()来求总资产?
在最后一根bar上有真实帐户时,就用这个.
TradeBlazer交流群33647992。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
377
积分
1827
帖子
222
主题
29
阅读权限
70
注册时间
2007-9-19
最后登录
2021-12-9
10#
发表于 2008-1-7 17:37:52 |只看该作者
要不
你试试,别用总资产来计算 开仓手数,
用可用资金来算
试试。
没看到你的运行情况,不好说
是不是已经持仓,可用资金不足。
你试试 把可用资金输出,看看是不是余额不足

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 09:41

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部