以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]这个函数上次平仓量EXITVOL,如何用  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=136751)

--  作者:a450171
--  发布时间:2016/7/23 21:34:24
--  [求助]这个函数上次平仓量EXITVOL,如何用
  我只会这样写, EXITVOL<n,可是图表不显示,原来的信号全消息失,只剩K线了.什么原因
我想表达上次平仓量小于n=10次时不再开仓.要如何写.希望能得到帮助.谢谢


  多开: BUY(cc and c>ref(hhv(h,1),1) and c>o and 开盘时间
and NETPROFIT<=0 and  HOLDING=0 and EXITVOL<n,
if(NUMPROFIT(1)<0,n,
if(NUMPROFIT(1)=0,n,1)),market),colorYELLOW;

--  作者:a450171
--  发布时间:2016/7/24 8:16:47
--  
 也可以这样问:加仓后平了仓不再开仓如何写?
--  作者:a450171
--  发布时间:2016/7/24 21:45:45
--  
用法:EXITVOL
得到当前位置的上次平仓量


 EXITVOL.这个函数是不是有问题?缺少了这句:若之前没有开仓记录返回-1

EXITBARS这个函数用法
返回上次平仓到当前的周期数,若之前没有开仓记录返回-1



--  作者:jinzhe
--  发布时间:2016/7/25 9:21:27
--  
开仓语句就这一个吗?
--  作者:a450171
--  发布时间:2016/7/25 11:00:17
--  
 加了这个条件后(and EXITVOL<3),所有开平信号全不见了,我想要结果是上次平仓量如果大于3手不再开仓如何写才能实现 .


INPUT:N(6,1,100,1);

cc:=(abs(c-o)>(h-max(c,o))) and (abs(c-o)>(min(c,o)-l));
开盘时间:=(time>210000 or (time>000000 and time<145900));
空损条件:=c>o and c>ref(h,1) and l>ref(l,1) and 开盘时间;
多损条件:=c<o and c<ref(l,1) and h<ref(h,1) and 开盘时间;
空推条件:=c>o and c>ref(h,1) and 开盘时间;
多推条件:=c<o and c<ref(l,1) and 开盘时间;
平空条件:=c>o and h<ref(l,enterbars) and 开盘时间;
平多条件:=c<o and l>ref(h,enterbars) and 开盘时间;
多开条件:=c>o and c>ref(h,1) and cc and l>ref(l,1) and 开盘时间;
空开条件:=c<o and h<ref(h,1) and cc and c<ref(l,1) and 开盘时间;


if 开盘时间  then begin
 SELLSHORT(平空条件 and holding<0,0,MARKET),COLORWHITE;
 SELLSHORT(空推条件 and holding<-1,0,MARKET),COLORWHITE;
 SELLSHORT(空损条件 and holding=-1,0,MARKET),COLORWHITE;
 BUY(多开条件 and EXITVOL<3  and holding=0,n,MARKET),colorYELLOW;
end

if 开盘时间  then begin
 SELL(平多条件 and holding>0,0,MARKET),COLORWHITE;
 SELL(多损条件 and holding=1,0,MARKET),COLORWHITE;
 SELL(多推条件 and holding>1,0,MARKET),COLORWHITE;
 BUYSHORT(空开条件  and EXITVOL<3 and holding=0,n,market),COLORCYAN;
end
     
加多:BUY(HOLDING>0 and c>o and cc and l>ref(h,enterbars) and 开盘时间,n,MARKET),COLORMAGENTA;
加空:BUYSHORT(HOLDING<0 and c<o and cc and h<ref(l,enterbars) and 开盘时间,n,MARKET),COLORGREEN;
 
收盘平空:SELLSHORT(time>=145900 and time<210000,0,market),COLORWHITE;
收盘平多:SELL(time>=145900 and time<210000,0,market),COLORWHITE;  

 

--  作者:a450171
--  发布时间:2016/7/25 11:06:04
--  
 上次平仓量 EXITVOL>n手不再开仓,即加过仓后平仓,则不再开仓

--  作者:jinzhe
--  发布时间:2016/7/25 11:09:32
--  

INPUT:N(6,1,100,1);
variable:bj=0;
cc:=(abs(c-o)>(h-max(c,o))) and (abs(c-o)>(min(c,o)-l));
开盘时间:=(time>210000 or (time>000000 and time<145900));
空损条件:=c>o and c>ref(h,1) and l>ref(l,1) and 开盘时间;
多损条件:=c<o and c<ref(l,1) and h<ref(h,1) and 开盘时间;
空推条件:=c>o and c>ref(h,1) and 开盘时间;
多推条件:=c<o and c<ref(l,1) and 开盘时间;
平空条件:=c>o and h<ref(l,enterbars) and 开盘时间;
平多条件:=c<o and l>ref(h,enterbars) and 开盘时间;
多开条件:=c>o and c>ref(h,1) and cc and l>ref(l,1) and 开盘时间;
空开条件:=c<o and h<ref(h,1) and cc and c<ref(l,1) and 开盘时间;


if 开盘时间  then begin
 SELLSHORT(平空条件 and holding<0,0,MARKET),COLORWHITE;
 SELLSHORT(空推条件 and holding<-1,0,MARKET),COLORWHITE;
 SELLSHORT(空损条件 and holding=-1,0,MARKET),COLORWHITE;
 if bj=0 and 多开条件 and holding=0 then begin
  BUY(多开条件   and holding=0,n,MARKET),colorYELLOW;
  bj:=1;
 end
 BUY(多开条件 and EXITVOL<3  and holding=0,n,MARKET),colorYELLOW;

end

if 开盘时间  then begin
 SELL(平多条件 and holding>0,0,MARKET),COLORWHITE;
 SELL(多损条件 and holding=1,0,MARKET),COLORWHITE;
 SELL(多推条件 and holding>1,0,MARKET),COLORWHITE;
 if 空开条件 and holding=0 and bj=0 then BEGIN
   BUYSHORT(空开条件   and holding=0,n,market),COLORCYAN;
   bj:=1;
 end
 BUYSHORT(空开条件  and EXITVOL<3 and holding=0,n,market),COLORCYAN;
end

加多:BUY(HOLDING>0 and c>o and cc and l>ref(h,enterbars) and 开盘时间,n,MARKET),COLORMAGENTA;
加空:BUYSHORT(HOLDING<0 and c<o and cc and h<ref(l,enterbars) and 开盘时间,n,MARKET),COLORGREEN;
 
收盘平空:SELLSHORT(time>=145900 and time<210000,0,market),COLORWHITE;
收盘平多:SELL(time>=145900 and time<210000,0,market),COLORWHITE;  

 


--  作者:jinzhe
--  发布时间:2016/7/25 11:09:51
--  
当上次开仓手数是3手以下的话,你的代码是不是就不运行了?
--  作者:a450171
--  发布时间:2016/7/25 11:14:40
--  
你看没用这个函数EXITVOL前是运行的.用了这个函数开平仓信号就不见了

下面这个就是没用EXITVOL函数的.


INPUT:N(1,1,100,1);

cc:=(abs(c-o)>(h-max(c,o))) and (abs(c-o)>(min(c,o)-l));
开盘时间:=(time>210000 or (time>000000 and time<145900));
空损条件:=c>o and c>ref(h,1) and l>ref(l,1) and 开盘时间;
多损条件:=c<o and c<ref(l,1) and h<ref(h,1) and 开盘时间;
空推条件:=c>o and c>ref(h,1) and 开盘时间;
多推条件:=c<o and c<ref(l,1) and 开盘时间;
平空条件:=c>o and h<ref(l,enterbars) and 开盘时间;
平多条件:=c<o and l>ref(h,enterbars) and 开盘时间;
多开条件:=c>o and c>ref(h,1) and cc and l>ref(l,1) and 开盘时间;
空开条件:=c<o and h<ref(h,1) and cc and c<ref(l,1) and 开盘时间;


if 开盘时间  then begin
 SELLSHORT(平空条件 and holding<0,0,MARKET),COLORWHITE;
 SELLSHORT(空推条件 and holding<-1,0,MARKET),COLORWHITE;
 SELLSHORT(空损条件 and holding=-1,0,MARKET),COLORWHITE;
 BUY(多开条件  and holding=0,n,MARKET),colorYELLOW;
end

if 开盘时间  then begin
 SELL(平多条件 and holding>0,0,MARKET),COLORWHITE;
 SELL(多损条件 and holding=1,0,MARKET),COLORWHITE;
 SELL(多推条件 and holding>1,0,MARKET),COLORWHITE;
 BUYSHORT(空开条件  and holding=0,n,market),COLORCYAN;
end
     
加多:BUY(HOLDING>0 and c>o and cc and l>ref(h,enterbars) and 开盘时间,n,MARKET),COLORMAGENTA;
加空:BUYSHORT(HOLDING<0 and c<o and cc and h<ref(l,enterbars) and 开盘时间,n,MARKET),COLORGREEN;
 
收盘平空:SELLSHORT(time>=145900 and time<210000,0,market),COLORWHITE;
收盘平多:SELL(time>=145900 and time<210000,0,market),COLORWHITE;  

净利润:NETPROFIT,noaxis,colorffffff,linethick1,LINEDOT;
次数:TOTALTRADE,colorYELLOW,linethick0;
回撤:MaxDrawDown,colorFF,linethick0;

--  作者:a450171
--  发布时间:2016/7/25 11:17:02
--  

下面这个是用了
and EXITVOL<3 这个函数就没信号了.是什么原因?


INPUT:N(1,1,100,1);
variable:bj=0;
cc:=(abs(c-o)>(h-max(c,o))) and (abs(c-o)>(min(c,o)-l));
开盘时间:=(time>210000 or (time>000000 and time<145900));
空损条件:=c>o and c>ref(h,1) and l>ref(l,1) and 开盘时间;
多损条件:=c<o and c<ref(l,1) and h<ref(h,1) and 开盘时间;
空推条件:=c>o and c>ref(h,1) and 开盘时间;
多推条件:=c<o and c<ref(l,1) and 开盘时间;
平空条件:=c>o and h<ref(l,enterbars) and 开盘时间;
平多条件:=c<o and l>ref(h,enterbars) and 开盘时间;
多开条件:=c>o and c>ref(h,1) and cc and l>ref(l,1) and 开盘时间;
空开条件:=c<o and h<ref(h,1) and cc and c<ref(l,1) and 开盘时间;


if 开盘时间  then begin
 SELLSHORT(平空条件 and holding<0,0,MARKET),COLORWHITE;
 SELLSHORT(空推条件 and holding<-1,0,MARKET),COLORWHITE;
 SELLSHORT(空损条件 and holding=-1,0,MARKET),COLORWHITE;
 if bj=0 and 多开条件 and holding=0 then begin
  BUY(多开条件   and holding=0,n,MARKET),colorYELLOW;
  bj:=1;
 end
 BUY(多开条件 and EXITVOL<3  and holding=0,n,MARKET),colorYELLOW;

end

if 开盘时间  then begin
 SELL(平多条件 and holding>0,0,MARKET),COLORWHITE;
 SELL(多损条件 and holding=1,0,MARKET),COLORWHITE;
 SELL(多推条件 and holding>1,0,MARKET),COLORWHITE;
 if 空开条件 and holding=0 and bj=0 then BEGIN
   BUYSHORT(空开条件   and holding=0,n,market),COLORCYAN;
   bj:=1;
 end
 BUYSHORT(空开条件  and EXITVOL<3 and holding=0,n,market),COLORCYAN;
end

加多:BUY(HOLDING>0 and c>o and cc and l>ref(h,enterbars) and 开盘时间,n,MARKET),COLORMAGENTA;
加空:BUYSHORT(HOLDING<0 and c<o and cc and h<ref(l,enterbars) and 开盘时间,n,MARKET),COLORGREEN;
 
收盘平空:SELLSHORT(time>=145900 and time<210000,0,market),COLORWHITE;
收盘平多:SELL(time>=145900 and time<210000,0,market),COLORWHITE;