欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 关于固定资金交易手数的问题 加急

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3935人关注过本帖树形打印复制链接

主题:关于固定资金交易手数的问题 加急

帅哥哟,离线,有人找我吗?
outlawjk
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2016/4/28 8:49:26
关于固定资金交易手数的问题 加急  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/4/29 10:09:59 [只看该作者]

lots:=intpart(m*10/open*MULTIPLIER);

这个放到if条件外面,不要放条件里面


 回到顶部
帅哥哟,离线,有人找我吗?
outlawjk
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2016/4/28 8:49:26
  发帖心情 Post By:2016/4/29 10:12:32 [只看该作者]

放在外面的话,每个tick都会计算lots,可能会导致我开仓的lots和平仓的lots不匹配,这个怎么解决

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2016/4/29 10:14:09 [只看该作者]

lots:=intpart(m*10/(open*MULTIPLIER));
你确定是要乘以10,而不是资金的10%。绿色部分需要用括号,不然就是除价格乘以单位乘数
[此贴子已经被作者于2016/4/29 10:14:31编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
outlawjk
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2016/4/28 8:49:26
  发帖心情 Post By:2016/4/29 10:33:25 [只看该作者]

我默认算10%保证金比例,括号漏掉了,我加上去了。但是还是解决不了我的开平仓手数不一致的问题,比如开仓是计算lots=10,平仓k线计算的lots=8;这种怎么解决?难道一定要使用tholding吗?,有没有其他办法的


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/4/29 10:40:32 [只看该作者]

这个没有办法,你的这个赋值本身就是开仓和平仓可能不在同一个k

你直接用tholding,或者在开仓时候用ex这类写全局变量方式存入那个lots


 回到顶部
帅哥哟,离线,有人找我吗?
outlawjk
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2016/4/28 8:49:26
  发帖心情 Post By:2016/4/29 10:48:08 [只看该作者]

能不能麻烦再详细说下lots放在if里面和放在外面的区别,因为在图表交易上lots放在if里面是没有问题的,后台为什么不行?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/4/29 10:51:33 [只看该作者]

如果你开仓条件没满足,那么lots就没有赋值,这样后面就取不到这个数值

你如果想要记录开仓时候的lots那么用用法:
EXTGBDATASET(S,X)

写全局变量去记录


 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:13 积分:0 威望:0 精华:0 注册:2016/4/28 8:49:26
  发帖心情 Post By:2016/4/29 10:56:38 [只看该作者]

好的 ,明白了,谢谢两位!

 回到顶部