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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助] 加不了仓,怎么回事

   

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


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

主题:[求助] 加不了仓,怎么回事

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


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2014/12/24 22:05:20
  发帖心情 Post By:2014/12/31 14:30:27    Post IP:183.62.32.194[只看该作者]

对对对!还有帮把ATR固定成开仓前一天的ATR值,因为ATR是会变化的

 回到顶部
美女呀,离线,留言给我吧!
pyd
  52楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:8439 积分:0 威望:0 精华:0 注册:2014/7/14 13:43:36
  发帖心情 Post By:2014/12/31 14:46:59    Post IP:58.246.57.26[只看该作者]

VARIABLE:a=0,b=0;
INPUT: N(20,1,100,1),M(10,1,100,1),X(2,1,100,0.1),Y(0.5,0.1,100,0.1);
//中间变量;
20h :ref (HHV(H,N),1);
20l :ref (LLV(L,n),1);
10h:ref(hhv(h,M),1);
10l:ref(llv(l,m),1);
ATR:=stkindi(STKLABEL,'atr.atr',0,6,-1);//调用昨天的atr
 
//仓位
A:=ceiling(atr*x)*10;
p: =if(FLOOR (ASSET*0.02/A)=0,1,FLOOR (ASSET*0.02/A));
//开多条件;
KD:=h>20h and holding=0;
//加多条件;
JD:=h>=ENTERPRICE+ATR*y and HOLDING>0;
//止多条件;
if jd<4 then
begin
ZD1:=l<=ENTERPRICE-atr*x and holding>0;
end;
if jd>=4 then
begin
ZD2:=l<10l and 10l>ENTERPRICE-atr*x and HOLDING>0;
end;
//开空条件;
KK:=l<20l and HOLDING=0;   
//加空条件;
jk:=l<=ENTERPRICE-atr*y AND HOLDING<0;
//止空条件;
if jk<4 then
begin
 zk1:=h>=enterprice+atr*x and holding<0;
end;
if jk>=4 then
begin
 zk2:=h>10h and 10h<enterprice+atr*x and holding<0;
end;


//交易
if barpos>21 then begin

if kd  then begin
buy(1,p,limitr, 20h+MINDIFF);//开多
a:=0;// 正常开多时加仓次数重置为0
end

 if ZD1<4 and a<3 then //a<3限制最多加多仓3次
 begin
  buy(jd,p,LIMITR,ENTERPRICE+atr*y);//加多
  a:=a+1;               //加一次a+1
 end

 if zd1 then
 BEGIN
  sell(ZD1,0,LIMITR,ENTERPRICE-atr*x);//止多
 end;
 if zd2 then
 begin
  sell(zd2,0 ,LIMITR,10l-MINDIFF);
 end;
 
 if kk then begin
 BUYSHORT(kk,p ,limitr ,20l-MINDIFF);//开空
 b:=0;     //正常开空时加仓此时重置为0
 end
 if jk<4 and b<3 then //b<3限制最多加空仓3次
 begin
  BUYSHORT(jk,p,LIMITR,ENTERPRICE-atr*y);//加空
  b:=b+1;  //加一次b+1
 end;
 if zk1 then
 begin
  sellshort(zk1,0,limitr,ENTERPRICE+atr*x);//止空
 end;
 if zk2 then
 begin
  SELLSHORT(zk2 ,0,limitr,10h+MINDIFF);
 end;
end;
 

[此贴子已经被作者于2014/12/31 15:25:43编辑过]

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


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2014/12/24 22:05:20
  发帖心情 Post By:2014/12/31 14:50:57    Post IP:183.62.32.194[只看该作者]

非常感谢!

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


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2014/12/24 22:05:20
  发帖心情 Post By:2015/1/5 9:17:15    Post IP:14.19.140.97[只看该作者]

VARIABLE:a=0,b=0;
INPUT: N(20,1,100,1),M(10,1,100,1),X(2,1,100,0.1),Y(0.5,0.1,100,0.1);
//中间变量;
20h :ref (HHV(H,N),1);
20l :ref (LLV(L,n),1);
10h:ref(hhv(h,M),1);
10l:ref(llv(l,m),1);
ATR:=stkindi(STKLABEL,'atr.atr',0,6,-1);//调用昨天的atr
 
//仓位
A:=ceiling(atr*x)*10;
p: =if(FLOOR (ASSET*0.02/A)=0,1,FLOOR (ASSET*0.02/A));
//开多条件;
KD:=h>20h and holding=0;
//加多条件;
JD:=h>=ENTERPRICE+ATR*y and HOLDING>0;
//止多条件;
if jd<4 then
begin
ZD1:=l<=ENTERPRICE-atr*x and holding>0;
end;
if jd>=4 then
begin
ZD2:=l<10l and 10l>ENTERPRICE-atr*x and HOLDING>0;
end;
//开空条件;
KK:=l<20l and HOLDING=0;    
//加空条件;
jk:=l<=ENTERPRICE-atr*y AND HOLDING<0;
//止空条件;
if jk<4 then
begin
 zk1:=h>=enterprice+atr*x and holding<0;
end;
if jk>=4 then
begin
 zk2:=h>10h and 10h<enterprice+atr*x and holding<0;
end;


//交易
if barpos>21 then begin

if kd  then begin 
buy(1,p,limitr, 20h+MINDIFF);//开多
a:=0;// 正常开多时加仓次数重置为0
end

 if ZD1<4 and a<3 then //a<3限制最多加多仓3次
 begin
  buy(jd,p,LIMITR,ENTERPRICE+atr*y);//加多
  a:=a+1;               //加一次a+1
 end

 if zd1 then
 BEGIN
  sell(ZD1,0,LIMITR,ENTERPRICE-atr*x);//止多
 end;
 if zd2 then
 begin
  sell(zd2,0 ,LIMITR,10l-MINDIFF);
 end;
 
 if kk then begin 
 BUYSHORT(kk,p ,limitr ,20l-MINDIFF);//开空
 b:=0;     //正常开空时加仓此时重置为0 
 end
 if jk<4 and b<3 then //b<3限制最多加空仓3次
 begin
  BUYSHORT(jk,p,LIMITR,ENTERPRICE-atr*y);//加空
  b:=b+1;  //加一次b+1
 end;
 if zk1 then
 begin
  sellshort(zk1,0,limitr,ENTERPRICE+atr*x);//止空
 end;
 if zk2 then
 begin
  SELLSHORT(zk2 ,0,limitr,10h+MINDIFF);
 end;
end;
 亲,有两个BUG,可能我止多止空没表达好,帮我修改一下,止多:如果加仓小于3次,以上次交易价格-X倍的ATR止损;如果加仓3次,则以M天最低价止损;

                                                                                   止空:如果加仓小于3次,以上次交易价格+X倍的ATR止损;如果加仓等于3次,以M天最高价止损


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


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2014/12/24 22:05:20
  发帖心情 Post By:2015/1/5 9:21:18    Post IP:14.19.140.97[只看该作者]

错了,不是这样表达,等我想一下

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


加好友 发短信
等级:论坛游民 帖子:117 积分:0 威望:0 精华:0 注册:2014/12/24 22:05:20
  发帖心情 Post By:2015/1/5 9:26:44    Post IP:14.19.140.97[只看该作者]

VARIABLE:a=0,b=0;
INPUT: N(20,1,100,1),M(10,1,100,1),X(2,1,100,0.1),Y(0.5,0.1,100,0.1);
//中间变量;
20h :ref (HHV(H,N),1);
20l :ref (LLV(L,n),1);
10h:ref(hhv(h,M),1);
10l:ref(llv(l,m),1);
ATR:=stkindi(STKLABEL,'atr.atr',0,6,-1);//调用昨天的atr
 
//仓位
A:=ceiling(atr*x)*10;
p: =if(FLOOR (ASSET*0.02/A)=0,1,FLOOR (ASSET*0.02/A));
//开多条件;
KD:=h>20h and holding=0;
//加多条件;
JD:=h>=ENTERPRICE+ATR*y and HOLDING>0;
//止多条件;
if jd<4 then
begin
ZD1:=l<=ENTERPRICE-atr*x and holding>0;
end;
if jd>=4 then
begin
ZD2:=l<10l and 10l>ENTERPRICE-atr*x and HOLDING>0;
end;
//开空条件;
KK:=l<20l and HOLDING=0;    
//加空条件;
jk:=l<=ENTERPRICE-atr*y AND HOLDING<0;
//止空条件;
if jk<4 then
begin
 zk1:=h>=enterprice+atr*x and holding<0;
end;
if jk>=4 then
begin
 zk2:=h>10h and 10h<enterprice+atr*x and holding<0;
end;


//交易
if barpos>21 then begin

if kd  then begin 
buy(1,p,limitr, 20h+MINDIFF);//开多
a:=0;// 正常开多时加仓次数重置为0
end

 if ZD1<4 and a<3 then //a<3限制最多加多仓3次
 begin
  buy(jd,p,LIMITR,ENTERPRICE+atr*y);//加多
  a:=a+1;               //加一次a+1
 end

 if zd1 then
 BEGIN
  sell(ZD1,0,LIMITR,ENTERPRICE-atr*x);//止多
 end;
 if zd2 then
 begin
  sell(zd2,0 ,LIMITR,10l-MINDIFF);
 end;
 
 if kk then begin 
 BUYSHORT(kk,p ,limitr ,20l-MINDIFF);//开空
 b:=0;     //正常开空时加仓此时重置为0 
 end
 if jk<4 and b<3 then //b<3限制最多加空仓3次
 begin
  BUYSHORT(jk,p,LIMITR,ENTERPRICE-atr*y);//加空
  b:=b+1;  //加一次b+1
 end;
 if zk1 then
 begin
  sellshort(zk1,0,limitr,ENTERPRICE+atr*x);//止空
 end;
 if zk2 then
 begin
  SELLSHORT(zk2 ,0,limitr,10h+MINDIFF);
 end;
end;
 亲,有两个BUG,可能我止多止空没表达好,帮我修改一下,

止多:如果加仓小于3次,以上次交易价格-X倍的ATR平仓;如果加仓3次,M天最低价>上次交易价格-X倍的ATR平仓,则以M天最低价平仓,否则以上次交易价格-X倍的ATR平仓;

止空:如果加仓小于3次,以上次交易价格+X倍的ATR平仓;如果加仓3次,M天最高价<上次交易价格+X倍的ATR平仓,则以M天最高价平仓,否则以上次交易价格+X倍的ATR平仓


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


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

技术已经给出对应的答案,如果有需要微调的地方请自行参考上面的答案修改


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

客户服务部

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

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

 回到顶部
总数 57 上一页 1 2 3 4 5 6