以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 关于固定资金交易手数的问题 加急 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=96870) |
-- 作者:outlawjk -- 发布时间:2016/4/29 10:02:11 -- 关于固定资金交易手数的问题 加急 m:=50000; //lots:=5; myclose:=ref(close,1); myopen:=ref(open,1); buycond:=myopen>myclose; sellcond:=myopen<myclose; if buycond and tholding=0 then begin
lots:=intpart(m*10/open*MULTIPLIER);
tbuy(1,lots,mkt); end if sellcond and tholding>0 then begin
tsell(1,lots,mkt); end DEBUGFILE(\'D:\\stockprice\\交易日志.txt\',STKLABEL+\' \'+\'交易手数:\'+numtostr(lots,0)+\' \'+\'开仓价:\'+numtostr(open,2)+\'交易单位:\'+numtostr(MULTIPLIER,2)+\'交易手数:\',lots); 请大神帮忙看下 这个后台程序有何问题,为何交易手数始终是0,debugfile输出里面lots的值也不能输出。但是吧lots改成固定5手 整个程序都没有问题了。
|
-- 作者:yukizzc -- 发布时间:2016/4/29 10:09:59 -- lots:=intpart(m*10/open*MULTIPLIER); 这个放到if条件外面,不要放条件里面 |
-- 作者:outlawjk -- 发布时间:2016/4/29 10:12:32 -- 放在外面的话,每个tick都会计算lots,可能会导致我开仓的lots和平仓的lots不匹配,这个怎么解决 |
-- 作者:wenarm -- 发布时间:2016/4/29 10:14:09 -- lots:=intpart(m*10/(open*MULTIPLIER)); 你确定是要乘以10,而不是资金的10%。绿色部分需要用括号,不然就是除价格乘以单位乘数 [此贴子已经被作者于2016/4/29 10:14:31编辑过]
|
-- 作者:outlawjk -- 发布时间:2016/4/29 10:33:25 -- 我默认算10%保证金比例,括号漏掉了,我加上去了。但是还是解决不了我的开平仓手数不一致的问题,比如开仓是计算lots=10,平仓k线计算的lots=8;这种怎么解决?难道一定要使用tholding吗?,有没有其他办法的 |
-- 作者:yukizzc -- 发布时间:2016/4/29 10:40:32 -- 这个没有办法,你的这个赋值本身就是开仓和平仓可能不在同一个k 你直接用tholding,或者在开仓时候用ex这类写全局变量方式存入那个lots |
-- 作者:outlawjk -- 发布时间:2016/4/29 10:48:08 -- 能不能麻烦再详细说下lots放在if里面和放在外面的区别,因为在图表交易上lots放在if里面是没有问题的,后台为什么不行? |
-- 作者:yukizzc -- 发布时间:2016/4/29 10:51:33 -- 如果你开仓条件没满足,那么lots就没有赋值,这样后面就取不到这个数值 你如果想要记录开仓时候的lots那么用用法: 写全局变量去记录 |
-- 作者:wenarm -- 发布时间:2016/4/29 10:52:52 -- if buycond and tholding=0 then begin
lots:=intpart(m*10/open*MULTIPLIER);
tbuy(1,lots,mkt);
end
在里面,你红色部分条件成立,才会进来计算你的lots。那么有可能会造成你平仓条件成立时,tsell(1,lots,mkt);获取不到lots的值。所以必须放外头。
|
-- 作者:outlawjk -- 发布时间:2016/4/29 10:56:38 -- 好的 ,明白了,谢谢两位! |