Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共5 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:仓位计算

1楼
tonybig 发表于:2011/11/3 22:12:07

小弟求一个组合仓位资金管理计算方式,

 

固定资产为50万, 按照40%仓位平均划分给不同品种(例如:1手铜需要5万,那么对应的必须开两手胶,5手pta),

 

当总资产盈利达到足够再次平均加仓的时候的仓位计算公式(总体仓位仍然保持40%);

 

下面我想了个思路,但不知道可行否,希望老师能够指点修正一,或者还有什么其它好的算法。

 

 

总资产*40% /  (A品种价格*合约手数*保证金+b品种价格*合约手数*保证金)=平均开仓手数(取整数);

 

当上面平均开仓手数大于1小于二的时候,再使用下列具体公式计算不同品种的开仓数,小于3大于2,再进行下一次的仓位计算

总资产*40% / 品种数量 / A品种价格*合约手数*保证金 =实际品种开仓数量();

2楼
tonybig 发表于:2011/11/4 8:52:44

我自己编了出来,但是那位大哥能把它做个循环,  当资金足够分配=1时,开始进行lots计算,  当资金足够分配=2,再进行lots分配, 以此循环到资金等于10,lots也跟着计算10次;

 

资金足够分配:intpart(asset*0.4/(dynainfo2(7,'cu00')*multiplier*0.18+dynainfo2(7,'ru00')*multiplier*0.18+dynainfo2(7,'ta00')*multiplier*0.18));

 

lots:intpart(asset*0.4/3/dynainfo2(7,'ru00')*multiplier*0.18);

 

问题2:另外我想加入对目前加载的品种做出判断,红字部分显示为当前合约价格?

 intpart(asset*0.4/3/dynainfo2(7,'ru00')*multiplier*0.18);

3楼
fly 发表于:2011/11/4 10:32:22

资金足够分配:intpart(asset*0.4/(dynainfo2(7,'cu00')*multiplier*0.18+dynainfo2(7,'ru00')*multiplier*0.18+dynainfo2(7,'ta00')*multiplier*0.18));

 

lots:intpart(asset*0.4/3/dynainfo2(7,'ru00')*multiplier*0.18);

 

在资金同等的情况下,这两个值没啥可比性----不同合约的最新价是不一样的,除个3求平均,没啥意思.

 

 

楼主这等于是按照资金情况,决定是否加仓,及加仓多少.

先判断当前有多少持仓,图表上,HOLDING就直接是持仓,再

判断你的资金的40%够开多少手,

如果大于持仓,就加仓1手好了.

 

弄个循环,不是增加运算量吗?

4楼
tonybig 发表于:2011/11/4 13:26:06

谢谢fly大哥回答,我的意思是当账户资金盈利足够平均再开一手的情况下才加仓, 但我写不出这么复杂的意思, 还请 fly大哥把你说的这个做成 代码 吧 , 我用来参考学习一下 谢谢

[此贴子已经被作者于2011-11-4 13:30:20编辑过]
5楼
fly 发表于:2011/11/4 15:31:20

//图表程序化.

 

num:=intpart(tasset*0.4/(dynainfo2(7,'cu00')*multiplier*0.18+dynainfo2(7,'ru00')*multiplier*0.18+dynainfo2(7,'ta00')*multiplier*0.18));

//判断是否加仓

if holding>0 and num>holding then buy(1,1,mkt);

if holding<0 and num>ABS(holding) then buyshort(1,1,mkt);

共5 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.00000 s, 2 queries.