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


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

   

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


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

主题:tenterprice函数问题

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/9 13:26:52    Post IP:180.169.30.6[显示全部帖子]

 会的。

while not(ABS(b1-b2)>2 ) do
begin
b1:=tenterprice;
if b1=b2 then
GOTO CHONG;
end

会一直跳转的。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/3/10 9:21:54    Post IP:180.169.30.6[显示全部帖子]

 你用TENTERPRICE时候遇到什么问题了?没取到值吗?你这里的方式是不可取的,建议回到你最初的问题上来讨论。

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

这个函数取值和这里的记录直接关联。此外就是成交和未成交取值时候会有差异。未成交就是委托价,成交就是成交价。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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[显示全部帖子]

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


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]


命数如织,当如磐石。
 回到顶部