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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → tbuyholdingex、tremainqty的变化原理是什么

   

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


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

主题:tbuyholdingex、tremainqty的变化原理是什么

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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
tbuyholdingex、tremainqty的变化原理是什么  发帖心情 Post By:2011/10/20 13:49:53    Post IP:120.42.45.130[只看该作者]

经过测试发现,

买入开仓后,1手

OrderStatusEx2的Status为"Submitted"和"PreSubmitted" 时,tremainqty(1,'888888',stklabel)的值有时候依然为0,按理应该为“1”

OrderStatusEx2的Status为Filled时,tbuyholdingex的值有时候依然为0 ,按理应该为“1”

当然,大部分是同步的

[此贴子已经被作者于2011-10-20 13:50:30编辑过]

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2011/10/20 13:57:35    Post IP:58.246.57.26[只看该作者]

给出日志

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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/10/20 14:41:32    Post IP:120.42.45.130[只看该作者]

后台程序,模拟账户800043

程序的动作:涨停价开多1手,16秒后 跌停价卖出平仓,再16秒后 开多,如此循环

检查方法:检查tbuyholdingex('800043',stklabel,1)和 extgbdata('kaiping') 是否一致

 

kaiping的取值来源于OrderStatusEx2

代码如下:

Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType)
 if filled=1 then
  if kaiping=0 then document.SetExtData "kaiping",1   '开多,且成交,kaiping置为1
  if kaiping=1 then document.SetExtData "kaiping",0   ’平多,且成交,kaiping置为0

 end if
End Sub

 

后台程序:

if not(islastbar) then exit;
abb:=extgbdata('abb');
buyhold:=tbuyholdingex('800043',stklabel,1);
if buyhold<>extgbdata('kaiping') then debugfile('c:\luntan.txt','no=%.0f',1);//如果不一致,输出 no=1
if buyhold=0 and abb=16 then begin
 tbuy(1,1,lmt,dynainfo(54),0,'800043'),allowrepeat;
 extgbdataset('abb',0);
end

if buyhold>0 and abb=10 then begin
 tsell(1,1,lmt,dynainfo(55),0,'800043'),allowrepeat;
 extgbdataset('abb',0); 
end

if abb>16 then extgbdataset('abb',abb-1);
if abb<16 then extgbdataset('abb',abb+1);

 

输出的日志:

2011-10-20 13:38:07.114    no=1
2011-10-20 13:39:57.114    no=1
2011-10-20 13:42:10.114    no=1
2011-10-20 13:42:32.114    no=1
2011-10-20 13:44:44.161    no=1
2011-10-20 13:46:56.161    no=1


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2011/10/20 14:43:51    Post IP:58.246.57.26[只看该作者]

同步时间下单的金字塔日志也提供一下


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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2011/10/20 15:03:07    Post IP:120.42.45.130[只看该作者]

或者这样检测 ,后台每10秒钟开多、平多一直循环

只交易1个品种,只开多,这样 order.Holding2("800043") 为1 就是 持有1手多单,为0就是没有任何持仓

开多成交时,检查order.Holding2是否为1 ,平多成交时,检查order.Holding2是否为0

如果不对,就输出消息。

不知道这样检测是否科学?

 

dim Acc
Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType)
 if filled=1 then
  if kaiping=0 then acc=1
  if kaiping=1 then acc=0
  if acc<>order.Holding2("800043") then
   application.MsgOut "1"
  end if
 end if
End Sub


 回到顶部