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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [原创]多策略多账户下单阿火版_续集(可扩展成无人值守)

   

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


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

主题:[原创]多策略多账户下单阿火版_续集(可扩展成无人值守)

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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
[原创]多策略多账户下单阿火版_续集(可扩展成无人值守)  发帖心情 Post By:2011/8/5 10:13:01    Post IP:120.42.45.130[只看该作者]

上次发表了一个 多策略多账户的下单方法

大家知道,一根K线图一个方向只允许下单一次,如果一个K线图内,不同策略前后分别产生信号呢?

举个例子:

//策略1:连续2阳,下一根开盘买入 2阴下一根开盘卖出
//策略2:价格突破前1根高点即买入,前1根低点立即卖出

假如以上2个策略组合,连续2个阳线条件成立,新的K线产生时开盘买入1手,之后又突破前一根K线高点,需再买1手。

 

这个时候,如何组合起来?用allowrepeat,允许重复下单。

 

主要问题:

1,下单后,委托单产生前,有一个小时间差的控制。tolding=0则下单。下单后,tholding依然为0,还会再下单

     因为我们采用的是加减仓的组合手法,信号并非前后分别对应,无法用ttype

     举个例子解释一下加减仓手法的特点:一开始A模型多单3手,B模型出现信号“空2手”。表现在操作上就是:平仓2手。
                                                    之后B模型出现信号“空单平仓2手”,操作上表现就是 买入开仓2手。

 

2,下单瞬间,网络刚好中断。后面网络恢复,也要自动补回正确的持仓。

3,不管什么原因造成的重复下单(比如堵单,以为没成交再次发单成交,之后发现这个堵单也成交了),希望补回正确持仓

 

解决方法如下:

variable:cc1=0,cc2=0,cc3=0;
entertime:=time<150000;
exittime:=time>=150000;
buycond1:=ref(c,1)>ref(o,1) and ref(c,2)>ref(o,2);
sellcond1:=ref(c,1)<ref(o,1) and ref(c,2)<ref(o,2);

buycond2:=h>ref(hhv(h,1),1);
sellcond2:=l<ref(llv(l,1),1);

buycond3:=ref(c>o,1);
sellcond3:=ref(c<o,1);

if cc1>0 and (sellcond1 or exittime) then cc1:=0;
if cc1<0 and (buycond1 or exittime) then cc1:=0;
if cc1=0 and buycond1 and entertime then cc1:=1;
if cc1=0 and sellcond1 and entertime then cc1:=-1;

if cc2>0 and (sellcond2 or exittime) then cc2:=0;
if cc2<0 and (buycond2 or exittime) then cc2:=0;
if cc2=0 and buycond2 and entertime then cc2:=1;
if cc2=0 and sellcond2 and entertime then cc2:=-1;

if cc3>0 and (sellcond3 or exittime) then cc3:=0;
if cc3<0 and (buycond3 or exittime) then cc3:=0;
if cc3=0 and buycond3 and entertime then cc3:=1;
if cc3=0 and sellcond3 and entertime then cc3:=-1;

cc800043:=2*cc1 + 1*cc2 + 2*cc3;//账户的下单系数
cc800167:=3*cc1 + 2*cc2 + 4*cc3;

if not(islastbar) or dynainfo(207)<91500 then exit;

///////////////////////////////////////////////////以下是账户800043的下单语句,其他账户下单,修改800043为相应账户,接在程序后面即可
lcc800043:=tbuyholdingex('800043','',1)-tsellholdingex('800043','',1);
xiadan800043:=cc800043-lcc800043;
if lcc800043<>extgbdata('lcc800043') then begin//有单子成交,则下单开关设为0,允许下单 extgbdataset('abb800043',0);
 extgbdataset('lcc800043',lcc800043);
end

if tremainqty(0,'800043',stklabel)>=1 or (cc800043<>lcc800043 and timetot0(currenttime)-extgbdata('abb800043')>10) then begin

//下单后10秒内仍发现委托单,则允许下单。可能是堵单,可能是交易账户网络暂时中断
 extgbdataset('abb800043',0);
end

if xiadan800043>0 then begin
 if lcc800043<0 and extgbdata('abb800043')=0 and tremainqty(0,'800043',stklabel)=0 then begin
  tsellshort(1,min(xiadan800043,abs(lcc800043)),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',timetot0(currenttime));
 end
 
 if tsellholdingex('800043','',1)=0 and tremainqty(4,'800043',stklabel)=0 and tremainqty(1,'800043',stklabel)=0 and extgbdata('abb800043')=0 then begin
  tbuy(xiadan800043+min(lcc800043,0)>0,xiadan800043+min(lcc800043,0),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',timetot0(currenttime));
 end
end

if xiadan800043<0 then begin
 if lcc800043>0 and extgbdata('abb800043')=0 and tremainqty(0,'800043',stklabel)=0 then begin
  tsell(1,min(abs(xiadan800043),abs(lcc800043)),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',timetot0(currenttime));
 end
 
 if tbuyholdingex('800043','',1)=0 and tremainqty(2,'800043',stklabel)=0 and tremainqty(3,'800043',stklabel)=0 and extgbdata('abb800043')=0 then begin
  tbuyshort(abs(xiadan800043)-max(lcc800043,0)>0,abs(xiadan800043)-max(lcc800043,0),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',timetot0(currenttime));
 end
end

[此贴子已经被作者于2011-9-16 14:35:22编辑过]

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2011/8/5 10:32:26    Post IP:58.246.57.26[只看该作者]

阿火老师太给力了图片点击可在新窗口打开查看



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信 大哥
等级:超级版主 帖子:2837 积分:13237 威望:0 精华:2 注册:2010/7/14 17:31:54
  发帖心情 Post By:2011/8/5 16:19:06    Post IP:58.246.57.26[只看该作者]

阿火老师直比仓老师啊 哈哈



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:论坛游侠 帖子:252 积分:1001 威望:0 精华:0 注册:2010/2/15 16:47:58
[公告]上海中期北京营业部与金字塔合作  发帖心情 Post By:2011/8/16 23:29:52    Post IP:121.195.55.179[只看该作者]

[原创]多策略多账户下单阿火版_续集(可扩展成无人值守)  图片点击可在新窗口打开查看 Post By:2011-8-5 10:13:01

上次发表了一个 多策略多账户的下单方法

大家知道,一根K线图一个方向只允许下单一次,如果一个K线图内,不同策略前后分别产生信号呢?

举个例子:

//策略1:连续2阳,下一根开盘买入 2阴下一根开盘卖出
//策略2:价格突破前1根高点即买入,前1根低点立即卖出

假如以上2个策略组合,连续2个阳线条件成立,新的K线产生时开盘买入1手,之后又突破前一根K线高点,需再买1手。

 

这个时候,如何组合起来?用allowrepeat,允许重复下单。

 

主要问题:

1,下单后,委托单产生前,有一个小时间差的控制。tolding=0则下单。下单后,tholding依然为0,还会再下单

     因为我们采用的是加减仓的组合手法,信号并非前后分别对应,无法用ttype

     举个例子解释一下加减仓手法的特点:一开始A模型多单3手,B模型出现信号“空2手”。表现在操作上就是:平仓2手。
                                                    之后B模型出现信号“空单平仓2手”,操作上表现就是 买入开仓2手。

 

2,下单瞬间,网络刚好中断。后面网络恢复,也要自动补回正确的持仓。

3,不管什么原因造成的重复下单(比如堵单,以为没成交再次发单成交,之后发现这个堵单也成交了),希望补回正确持仓

 

解决方法如下:

variable:cc1=0,cc2=0,cc3=0;
entertime:=time<150000;
exittime:=time>=150000;
buycond1:=ref(c,1)>ref(o,1) and ref(c,2)>ref(o,2);
sellcond1:=ref(c,1)<ref(o,1) and ref(c,2)<ref(o,2);

buycond2:=h>ref(hhv(h,1),1);
sellcond2:=l<ref(llv(l,1),1);

buycond3:=ref(c>o,1);
sellcond3:=ref(c<o,1);

if cc1>0 and (sellcond1 or exittime) then cc1:=0;
if cc1<0 and (buycond1 or exittime) then cc1:=0;
if cc1=0 and buycond1 and entertime then cc1:=1;
if cc1=0 and sellcond1 and entertime then cc1:=-1;

if cc2>0 and (sellcond2 or exittime) then cc2:=0;
if cc2<0 and (buycond2 or exittime) then cc2:=0;
if cc2=0 and buycond2 and entertime then cc2:=1;
if cc2=0 and sellcond2 and entertime then cc2:=-1;

if cc3>0 and (sellcond3 or exittime) then cc3:=0;
if cc3<0 and (buycond3 or exittime) then cc3:=0;
if cc3=0 and buycond3 and entertime then cc3:=1;
if cc3=0 and sellcond3 and entertime then cc3:=-1;

cc800043:=2*cc1 + 1*cc2 + 2*cc3;//账户的下单系数
cc800167:=3*cc1 + 2*cc2 + 4*cc3;

if not(islastbar) or dynainfo(207)<91500 then exit;

///////////////////////////////////////////////////以下是账户800043的下单语句,其他账户下单,修改800043为相应账户,接在程序后面即可
lcc800043:=tbuyholdingex('800043','',1)-tsellholdingex('800043','',1);
xiadan800043:=cc800043-lcc800043;
if lcc800043<>extgbdata('lcc800043') then begin//有单子成交,则下单开关设为0,允许下单 extgbdataset('abb800043',0);
 extgbdataset('lcc800043',lcc800043);
end

if tremainqty(0,'800043',stklabel)>=1 or (cc800043<>lcc800043 and time0-extgbdata('abb800043')>10) then begin

//下单后10秒内仍发现委托单,则允许下单。可能是堵单,可能是交易账户网络暂时中断
 extgbdataset('abb800043',0);
end

if xiadan800043>0 then begin
 if lcc800043<0 and extgbdata('abb800043')=0 and tremainqty(0,'800043',stklabel)=0 then begin
  tsellshort(1,min(xiadan800043,abs(lcc800043)),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',time0);
 end
 
 if tsellholdingex('800043','',1)=0 and tremainqty(4,'800043',stklabel)=0 and tremainqty(1,'800043',stklabel)=0 and extgbdata('abb800043')=0 then begin
  tbuy(xiadan800043+min(lcc800043,0)>0,xiadan800043+min(lcc800043,0),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',time0);
 end
end

if xiadan800043<0 then begin
 if lcc800043>0 and extgbdata('abb800043')=0 and tremainqty(0,'800043',stklabel)=0 then begin
  tsell(1,min(abs(xiadan800043),abs(lcc800043)),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',time0);
 end
 
 if tbuyholdingex('800043','',1)=0 and tremainqty(2,'800043',stklabel)=0 and tremainqty(3,'800043',stklabel)=0 and extgbdata('abb800043')=0 then begin
  tbuyshort(abs(xiadan800043)-max(lcc800043,0)>0,abs(xiadan800043)-max(lcc800043,0),mkt,0,0,'800043'),allowrepeat;
  extgbdataset('abb800043',time0);
 end
end


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


加好友 发短信
等级:新手上路 帖子:54 积分:286 威望:0 精华:0 注册:2010/10/28 22:30:08
  发帖心情 Post By:2011/8/31 15:09:59    Post IP:118.254.19.99[只看该作者]

我不是太懂,提个问题,阿火老师别笑话。

您这个版本是不是只能用于单品种的多策略多帐号,而监控多品种的话,则持仓会发生紊乱?


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


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

不会啊。多品种、多策略、多账户 也是可以的


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


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

以下是引用董小球在2011-8-5 16:19:06的发言:

阿火老师直比仓老师啊 哈哈

终于明白什么是“仓老师”了


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2011/9/16 15:02:42    Post IP:58.246.57.26[只看该作者]

仓老师是那个德艺双馨的人民艺术家?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


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

心理知道就好了,别说得太明白,就不艺术了

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


加好友 发短信
等级:新手上路 帖子:18 积分:78 威望:0 精华:0 注册:2011/9/17 10:24:17
  发帖心情 Post By:2011/9/17 10:35:43    Post IP:221.200.42.122[只看该作者]

顶楼上, 但是更顶仓老师. 我的兄弟向她致敬

 回到顶部
总数 12 1 2 下一页