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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 关于分笔刷新的问题,重复下单

   

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


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

主题:关于分笔刷新的问题,重复下单

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


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
关于分笔刷新的问题,重复下单  发帖心情 Post By:2016/6/3 23:29:48 [显示全部帖子]

问题一:
交易的时候碰到连续发出相同的buy指令如图,我用的是3个分笔数据为一根K线(因为怕机器太卡),我能否理解为因为用了3笔的分笔数据,所以HOLDING要3笔数据走完形成K线后holding才变成1,造成第1笔刷过后holding还是0,第二笔满足条件也下了同样的buy指令?
如果改成1笔的分笔数据会否解决这个问题,但是这个更耗CPU,又或者是用filter过滤?


问题二:
下单记录里面的“【图表】HSI06 运行完毕”,是否是代表刷新一次?如果是的话那么为什么我在分笔明细里面查看,刷新的次数远比我的分笔多?也就是刷新频率比分笔还快?不是说来一笔刷一笔吗?如果频率太高,怎么降到来一笔刷一笔呢?
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

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


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


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2016/6/3 23:31:14 [显示全部帖子]

另外补充一下,我用的是IB的TWS数据,分笔的明细应该是准确的。

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


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2016/6/4 12:43:45 [显示全部帖子]

是的3笔一根K线;
我公式里面有用全局变量做标记了,轮询一遍后全局变量已经改变,换K线后应该不满足BUY的要求。

有没有像文华里面的autofilter这样的过滤重复信号的方法?  或者:

我看filter函数后面要跟条件的(这样表述太麻烦),可否:buy(1,1,marketr),filter;   这样表述能过滤吗?

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


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2016/6/5 16:08:43 [显示全部帖子]

第一个满足buy命令的3笔k线是由54秒的2笔和55秒的第1笔组成的。第一个buy信号是54秒的第一个轮询产生的,第二个buy信号是55秒的第一个轮询产生的,所以这个重复开仓应该是1根K线内的第一笔和第三笔触发的,我用的是CROSS命令和全局变量来触发买的条件,而且cross是用H和L的,应该不会有信号闪烁吧.

全部比较长,贴出来出问题的那部分:

记录全局变量......F31=0,HD=0;//HD是我用来记录仓位的全局变量,F31是我用来记录之前有否经过设定的阻力线,F31=0为没有经过,1为经过并开仓中,2表示经过已平仓.
//策略31
C315ZS:=CROSS(H,P31+10);//冲破31+10
D31:=CROSS(P31,L);//跌破31
D315ZS:=CROSS(P31-10,L);//跌破31-10
D31ZS:=CROSS(P31-20,L);//跌破31-20

//策略3多头31 F31
IF D31=1&&F31=0 THEN BEGIN  //第一次跌破31开始循环
IF HD<0 THEN BEGIN   //如果全局变量记录的持仓小于0
SELLSHORT(1,1,MARKETR); //如果第一次空头跌破31,那么空头平仓
BUY(1,1,MARKETR); //无持仓时买入
F31:=1; //记录31多头开过仓
HD:=1; //全局变量持仓变为1
END;
IF HD=0&&F31=0 THEN BEGIN//加上F31=0是为了预防91条成交但是92条还没有成交时HD=0,到本条的时候重复提交市价买入
BUY(1,1,MARKETR);        《《《出现重复开仓命令的82行命令
F31:=1; //记录31多头开过仓
HD:=1; //全局变量持仓变为1
END;
IF HD>0 THEN BEGIN
F31:=1; //全局变量持仓变为1
END;
END;
IF F31=1&&((C32=1&&F32=0) OR D31ZS=1)&&HD>0 THEN BEGIN   //策略3多头持仓时冲破32或者跌破31的止损位置
SELL(1,1,MARKETR);  // 如果破策略3空头或者破止损,则平仓
F31:=2; 
HD:=0;  //全局变量持仓变为0
END;





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


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2016/6/6 9:49:11 [显示全部帖子]

我考虑过了,是否是这个原因?请帮我分析下:

因为我采用的是全局变量,而这个普通全局变量是会与前一根全局变量比较的,所以当前分笔为3笔的lastbar在刷新的时候,第一笔信号出现下单,而再有信号出现的时候,全局变量是和前一个BAR的全局变量做比较而不是和前一笔的全局变量做比较,而前一格BAR的全局变量还没有变过来,所以还是会发出买入的信号。
如果是这个原因的话,我就选K线走完再下单,就可以解决了吧?


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


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2016/6/7 14:08:36 [显示全部帖子]

我现在就是用全局变量来记录,不过由于分笔数据太多,容易卡,效率低。
如果限制K线数的话,会出现因为之前的开仓K线隐去了,而造成后面的平仓信号不起作用,这就是图表的局限,如果开分笔再开框架,卡死了,除非放弃图表而用后台。

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


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2016/6/7 14:29:07 [显示全部帖子]

就是锁定显示时段吧,就是时间刻度上的那把小锁吧,你的意思就是显示时段从开仓的那根K开始吧。

这个锁定的话能解决没有开仓信号而无法平仓的问题,但是全局变量轮询的时候还是会因为锁定显示的时间不同而不同的。

我现在就是上午策略的时候锁定只显示上午的时段,下午就锁定下午的,晚上就锁定晚上的时段,因为我的策略里面的全局变量也是每个小节开盘时清零的,不过碰上连续的全局变量再用分笔的话就没有办法了。

 回到顶部