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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → tenterprice函数问题

   

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


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

主题:tenterprice函数问题

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/3/10 13:06:25    Post IP:180.169.30.6[只看该作者]

劳烦给给出你当时取不到值的测试代码,我们调试看下。你上面的while方式肯定不行,它不符合后台策略的执行机制。直接都卡在了某根k上。



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


加好友 发短信
等级:论坛游侠 帖子:194 积分:0 威望:0 精华:0 注册:2020/2/11 13:06:09
  发帖心情 Post By:2020/3/11 9:46:22    Post IP:144.123.5.122[只看该作者]

我下面这样写不行是吧,会因为不能及时获取开仓价导致判断出错
jia:=20;
sun:=20;
ying:=200;

if TBUYHOLDINGEX('','',1)=0 THEN
   tbuy(1,1,mkt);
   
if TBUYHOLDINGEX('','',1)>0 then begin
   if C>tenterprice+jia*mindiff then
       tbuy(1,1,mkt);
       
   if C<tenterprice-sun*mindiff then
       tsell(1,0,mkt);
       
   if C>tenterprice+ying*mindiff then
       tsell(1,0,mkt);        
end
  

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/11 10:13:51    Post IP:180.169.30.6[只看该作者]

 这个代码本身没问题的。从这个代码无法看出你说的取不到价格的情况的。
你既然怀疑这个函数返回有问题。我建议你直接在里面加DEBUGFILE输出。
if TBUYHOLDINGEX('','',1)>0 then begin
    DEBUGFILE('D:\test.txt','上次开仓价为:%.3f',tenterprice);
   if C>tenterprice+jia*mindiff then
       tbuy(1,1,mkt);
      
   if C<tenterprice-sun*mindiff then
       tsell(1,0,mkt);
      
   if C>tenterprice+ying*mindiff then
       tsell(1,0,mkt);       
end

然后对照  监控记录 和这个函数返回值的记录。  


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
marks
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:194 积分:0 威望:0 精华:0 注册:2020/2/11 13:06:09
  发帖心情 Post By:2020/3/11 14:45:50    Post IP:144.123.5.122[只看该作者]

这段代码实际运行中是有问题的,加载以后,开了第一单,然后当满足C>tenterprice+jia*mindiff加开了一单,同一时间又执行了C<tenterprice-sun*mindiff平仓一单,同一时间又执行了
C>tenterprice+ying*mindifF又平了一单,除了第一单以外,后面的三个条件在同一时间触发了,做过各种控制都不行,DEBUGFILE的结果是获取的TENTERPRICE为0,有时候可以获取到TENTERPRICE但这个TENTERPRICE是上一单的开仓价。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/11 15:02:31    Post IP:180.169.30.6[只看该作者]

 你这个问题我大概知道怎么回事了。 明天盘中测试下再回复你。另外你下单用的是市价还是限价。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
marks
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:194 积分:0 威望:0 精华:0 注册:2020/2/11 13:06:09
  发帖心情 Post By:2020/3/11 15:10:04    Post IP:144.123.5.122[只看该作者]

用的市价。
就是遇到这个问题才用各种控制,不然也不用这么麻烦。
麻烦了。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/12 11:03:04    Post IP:180.169.30.6[只看该作者]

 目前测试了下。函数取值也是需要时间,并且你这里还是市价所以一个很短暂的没有成交的时间内返回值会是0.
所以
1.初始开仓使用限价。这样tenterprice能确保不会是0
2.还用限价。但是在使用tenterprice之前 让程序短暂的sleep下。

jia:=20;
sun:=20;
ying:=200;


if TBUYHOLDINGEX('','',1)=0 THEN
   tbuy(1,1,mkt);
//延缓1秒或2秒或者更少的时间也行。这个你可以自行测试出一个合适的时间值。
   SLEEP(2000);
if TBUYHOLDINGEX('','',1)>0 then begin
   if C>tenterprice+jia*mindiff then
       tbuy(1,1,mkt);
    SLEEP(2000);
   if C<tenterprice-sun*mindiff then
       tsell(1,0,mkt);
       
   if C>tenterprice+ying*mindiff then
       tsell(1,0,mkt);        
end


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
marks
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:194 积分:0 威望:0 精华:0 注册:2020/2/11 13:06:09
  发帖心情 Post By:2020/3/12 13:22:28    Post IP:144.123.5.122[只看该作者]

SLEEP的方法试过了,有时候可以,有时候不行,监控TENTERPRICE和DEBUGFILE最迟的一次十多秒才获取到TENTERPRICE,所以这个SLEEP时间长了不行短了不行,我才想用WHILE等获取到TENTERPRICE才继续向下执行的方法,实际 过程中WHILE也不行,按逻辑来讲当可以获取到TENTERPRICE的时候这个循环应该就跳出来了,为什么跳不出来

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/12 13:55:21    Post IP:180.169.30.6[只看该作者]

 1.我本地目前测试,只要稍微sleep下。tenterprice就不会返回0,而是更新出一个有效的价格。

2.如果非要while。 在每个使用tenterprice的地方 加一句,这样可以规避使用市价时候造成的短暂的tenterprice为0的情况:
   WHILE tenterprice=0 do ;
[此贴子已经被作者于2020/3/12 13:55:37编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
marks
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:194 积分:0 威望:0 精华:0 注册:2020/2/11 13:06:09
  发帖心情 Post By:2020/3/12 15:28:01    Post IP:144.123.5.122[只看该作者]

好的,我试试

 回到顶部
总数 21 上一页 1 2 3 下一页