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


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

   

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


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

主题:重复开仓问题

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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
重复开仓问题  发帖心情 Post By:2011/4/6 15:24:12    Post IP:27.38.147.45[显示全部帖子]

entertime:=currenttime>091000 and currenttime<145000;
exittime:=currenttime>145500;

buycond:=entertime and high >= highest;

buyshortcond:=entertime and low <= lowest; 

 
if tbuyholdingex('84408','ZN06',1)=0 and tsellholdingex('84408','ZN06',1)=0 and buycond then begin
 
   TBUY(1,sv,MKT,0,0,'84408','ZN06');
end

 

今天利用tbuyholdingex,tsellholdingex判断是否持仓,交易的两个品种橡胶与锌,都在上午11:22:10出现了重复开仓的问题。

 

好像在这个时间点,tbuyholdingex读出的仓位是“0”,因此出现了重复开仓。

 

请问有没有其他的方法来稳定的控制不要重复出现开仓的问题?

 

 


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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/6 21:40:33    Post IP:119.137.18.55[显示全部帖子]

谢了,明天试下。

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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/6 21:58:10    Post IP:119.137.18.55[显示全部帖子]

ttype(1)是日内的吗? 如果不是日内的,引用的上日的话,那么表达的意义是不对的。 是默认账户吗?到底是那个账户,那个品种呢?这些有没有区分?

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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/7 8:06:00    Post IP:119.137.18.55[显示全部帖子]

正版用户以及正式实盘都超过半年了,交易额相当大了,不能称为新手了。

 

关键是解决多账户下,突破系统如何避免重复开仓的问题:

 

1、突破系统,一旦满足突破的条件后,突破的条件总是满足,因此必须用另外的条件来判断避免重复开仓。

2、一般突破系统开仓后,都是利用仓位信息来判断是否重复开仓了。因此仓位的读取函数holding,tholding,tbuyholdingex,ttype等非常重要。

3、holding只能用在模拟中,tholding只能用在单账户、单品种中。

4、tbuyholdingex在绝大多数时间情况下是正确的,但是每天总有1-2次读出的仓位信息是错误的,造成每天1-2次的重复开仓。

5、dynainfo(4)\dynainfo(5)\dynainfo(6)好像也存在每天1-2次不正确的情况。

6、当然这种不正确很可能是网络断线引起的,断线的情况下读出的仓位是“零”,因此一旦账户接通,可能立即就对某些账户开仓了。

7、有时这种断线的情况可能造成只对某些账户开仓。因为只有这些账户是接通的。而后面的账户接通后,由于程序判断已经有仓位,反而不再开仓了,因此有些账户就没有仓位。

 

这都是实盘遇到的问题,在模拟的情况下是没有的,请尽快分析解决。


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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/7 14:33:04    Post IP:27.38.147.45[显示全部帖子]

正在做实验。使用debugfile.

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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/11 20:38:31    Post IP:119.136.76.115[显示全部帖子]

myaccount:=''+'84408';
myholding:=extgbdata(myaccount+'_'+formulaname+'_'+datatype+'_'+stklabel+'_holding');
myprice:=extgbdata(myaccount+'_'+formulaname+'_'+datatype+'_'+stklabel+'_price');

debugfile('D:\test.txt','myholding:=%.1f',myholding);
debugfile('D:\test.txt','myprice:=%.1f',myprice);

 

//dist:=barslast(date<>ref(date,1));
//openprice:=ref(open,dist);
openprice:=dynainfo(4);
rangebreak:=openprice*N/100;

highest:=openprice+rangebreak;
lowest:=openprice-rangebreak;

entertime:=currenttime>090010 and currenttime<145000;
exittime:=currenttime>145500;

buycond:=entertime and high >= highest;
buyshortcond:=entertime and low <= lowest;

 

 
if myholding=0 and buycond then begin
 extgbdataset(myaccount+'_'+formulaname+'_'+datatype+'_'+stklabel+'_price',close);
   TBUY(1 and ttype(1)<>1 ,sv,MKT,0,0,'84408','ZN06');
 extgbdataset(myaccount+'_'+formulaname+'_'+datatype+'_'+stklabel+'_holding',sv);

end
 
if myholding=0 and buyshortcond  then begin
 extgbdataset(myaccount+'_'+formulaname+'_'+datatype+'_'+stklabel+'_price',close);
    TBUYSHORT(1 and ttype(1)<>3,sv,MKT,0,0,'84408','ZN06'); 
 
 extgbdataset(myaccount+'_'+formulaname+'_'+datatype+'_'+stklabel+'_holding',-sv);
end

 

 

错误开仓问题:

1、利用上面的代码,每天都会遇到一些错误开仓以及重复开仓的问题。虽然前面很多人提了很多的建议,但是还是没有完全解决。

2、前面利用dynainfo(4)作为开盘价,每天都会突然提前开仓,开仓的调价只跟开盘价,当前K线最高最低价(high,low)以及仓位有关系,很难查处到底是哪里出了问题。、

3、今天利用全局变量做实验,发现当关闭软件后,这些全局变量也会全部变为零,而且机会每根K线开始后都会出现重复的开仓,好像这些现象跟K线周期有关系。

 

经过几天努力,好像又倒退了,有些郁闷了。

 

 


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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/14 21:25:44    Post IP:119.136.77.254[显示全部帖子]

找到问题了,今天用debugfile终于跟踪到了问题:

 

2011-04-14 13:56:31.437    highest=3396.95
2011-04-14 13:56:31.437    lowest=3327.74
2011-04-14 13:56:31.437    high= 3357.60
2011-04-14 13:56:31.437    low= 3324.00
2011-04-14 13:56:31.437    buyholdings= 0.00
2011-04-14 13:56:31.437    sellholdings= 0.00
2011-04-14 13:56:31.437    daytrades= 1.00

 

当low<lowest时,系统将会开空仓。 可以看出,在今天下午13:56:31时,系统给出了一个错误的low值,品种是IF04,在5分钟的K线图上,这个low最小为3354.00,怎么突然就成了3324.00,这可能是系统的一个虫子。

 

这根K线的特点是open=close,即这个K线开盘后就网上,不知道为什么突然小了30个点。 而且发生在K线第31秒中,而不是K线开始的时候(13:56:00),因此是一个非常隐蔽的虫子。 我至少在4天里遇到了3次这样的问题,另外两次都是开多,应该是high突然高了30点(比正常的high),请技术人员尽快检查。

 

这个问题发生在均线里,将会很不明显,因为有很多点的平均就平滑掉了这个偶然的错误,但是在以单点绝对值的判断中却极其致命,几乎每天都会出现一次(从秒的角度看错误率极小,但从天的角度就太大了)。

 

 


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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/15 9:51:39    Post IP:119.136.76.54[显示全部帖子]

leevolvo兄讲的对,是datatype的问题,导致不能正常赋值,应该转换成字符串后就没有问题了。

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


加好友 发短信
等级:论坛游民 帖子:219 积分:1350 威望:0 精华:0 注册:2011/2/27 21:22:43
  发帖心情 Post By:2011/4/15 9:59:17    Post IP:119.136.76.54[显示全部帖子]

因为是多策略、多账户交易,因此tholding不够。单账户、单策略则没有问题。

 回到顶部