以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于如果只平当日开的仓位,而不是所有持仓,代码要怎么写  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=97581)

--  作者:vivi926
--  发布时间:2016/5/18 17:03:24
--  关于如果只平当日开的仓位,而不是所有持仓,代码要怎么写
根据系统横盘突破的代码修改了一下,想在开仓的时候记录一下一共开了几次仓,那么平仓的时候就平几次。

比如我原本有10000的底仓,我在满足开多条件的时候开多1000股,或者满足开空条件的时候开空1000股;满足平仓条件的时候,如果当天开多了5次(即一共5000股),那么平多仓的时候,就平掉这5000股,而不是一次性把我所有底仓全部平掉,这代码要怎么写呢?

--  作者:vivi926
--  发布时间:2016/5/18 17:04:42
--  
上传附件功能有点问题,把代码贴上吧


//准备需要的中间变量
INPUT:SS(10000,10000,1000000,10000),N1(0.005,0.001,1,0.001);
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
H30:REF(HHV(H,30),1);
L30:REF(LLV(L,30),1);
MID:(H30+L30)/2;//中轴
T1:=TIME>090000 AND TIME <145500;
T2:=TIME>=145500;
手数:=SS;
//进场的条件
开多条件:= H>H30 AND (H30-MID)/MID<N1 AND CYC>=30 AND T1;
开空条件:= L<L30 AND (MID-L30)/MID<N1 AND CYC>=30 AND T1;
//系统
收盘平多:SELL((T2 OR ABS(CLOSE-AVGENTERPRICE)*手数>=150)  AND HOLDING>0 ,10000,MARKET) ;
收盘平空:SELLSHORT((T2 OR ABS(CLOSE-AVGENTERPRICE)*手数>=150) AND HOLDING<0,10000,MARKET) ;
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,MARKET);
开多:BUY(开多条件 AND HOLDING=0, 手数,MARKET);

//其他
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;//输出当前资产,但不影响坐标最高最低值

--  作者:jinzhe
--  发布时间:2016/5/18 17:05:20
--  

平仓条件添加 ref(holding,todaybar)-holding>0 ,判断今天是否开过仓

平仓手数写 ref(holding,todaybar)-holding,把今天开的仓平掉