以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 日内不平仓 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=98019) |
-- 作者:c100010592 -- 发布时间:2016/5/31 8:58:21 -- 日内不平仓 //声明参数 INPUT:N(1,1,100,1); INPUT:K1(0.7,0.1,1,0.1); INPUT:K2(0.7,0.1,1,0.1); INPUT:ATRLEN(20,10,30,1); INPUT:NMIN(10,1,100,1); INPUT:TTM(50,50,500,10); //声明变量 VARIABLE:POSITION=0; VARIABLE:实际开仓手数=0; VARIABLE:止损价格1=0; VARIABLE:止损价格2=0; CYC:=BARSLAST(DATE<>REF(DATE,1))+1; //准备需要计算的变量 HH:=CALLSTOCKEX(STKLABEL,VTHIGH,6,-1,N);//N日HIGH的最高价 LL:=CALLSTOCKEX(STKLABEL,VTLOW,6,-1,N);//N日LOW的最低价 昨日收盘:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1); 开盘价:=VALUEWHEN(CYC=1,OPEN); HC:=HHV(昨日收盘,N);//N日CLOSE的最高价 LC:=LLV(昨日收盘,N);//N日CLOSE的最低价 浮动区间:=MAX(HH-LC,HC-LL); 上轨:开盘价+K1*浮动区间; 下轨:开盘价-K2*浮动区间; AVGTR:=REF(MA(TR,ATRLEN),1); 手数:=FLOOR(TTM*100/(2*AVGTR*MULTIPLIER)); T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100; T2:=TIME>=CLOSETIME(0)-NMIN*100; //开始执行时,初始化数据 IF BARPOS=1 THEN BEGIN POSITION:=0; END //IF //交易条件 开多条件:=C>上轨 AND POSITION=0; 开空条件:=C<下轨 AND POSITION=0; //交易系统 IF 开多条件 AND T1 AND CYC>1 THEN BEGIN BUY(1,手数,MARKET); POSITION:=1; 实际开仓手数:=手数; 止损价格1:=c-2*AVGTR; END//IF IF 开空条件 AND T1 AND CYC>1 THEN BEGIN BUYSHORT(1,手数,MARKET); POSITION:=-1; 实际开仓手数:=手数; 止损价格2:=c+2*AVGTR; END//IF IF LOW<=止损价格1 AND POSITION=1 THEN BEGIN SELL(1,实际开仓手数,MARKET); POSITION:=0; END IF T2 AND POSITION=1 THEN BEGIN SELL(1,实际开仓手数,MARKET); POSITION:=0; END//IF IF HIGH>=止损价格2 AND POSITION=-1 THEN BEGIN SELL(1,实际开仓手数,MARKET); POSITION:=0; END IF T2 AND POSITION=-1 THEN BEGIN SELLSHORT(1,实际开仓手数,MARKET); POSITION:=0; END//IF |
-- 作者:c100010592 -- 发布时间:2016/5/31 8:59:27 -- 写的一个日内程序,但在测试看明细,发现会有日内收盘前不平仓的情况,是哪里出问题了? |
-- 作者:jinzhe -- 发布时间:2016/5/31 9:30:01 -- 日内多少分钟收盘前平仓? 上面的写法不对 要写成这样:
if time0>=(timetot0(closetime(0))-60*nmin) then begin sell(1,0,marketr); sellshort(1,0,marketr); end [此贴子已经被作者于2016-5-31 9:35:13编辑过]
|
-- 作者:c100010592 -- 发布时间:2016/5/31 9:33:55 -- 是 哪一段要替换掉? |
-- 作者:jinzhe -- 发布时间:2016/5/31 9:51:23 -- T2:=TIME>=CLOSETIME(0)-NMIN*100;
把这句改成
T2:=time0>=(timetot0(closetime(0))-60*nmin);
|
-- 作者:c100010592 -- 发布时间:2016/5/31 10:53:30 -- if time0>=(timetot0(closetime(0))-60*n) AND POSITION=1 THEN BEGIN SELL(1,实际开仓手数,MARKET); POSITION:=0; END//IF 替换成这样了,还是有不平仓的情况,交易明细的图贴不上来
|
-- 作者:jinzhe -- 发布时间:2016/5/31 11:03:08 -- http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=31614&page=3 按照这里的方法进行贴图 |
-- 作者:c100010592 -- 发布时间:2016/5/31 11:08:58 -- T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100; T2:=time0>=(timetot0(closetime(0))-60*nmin); 替换成这样,还是有不平仓的情况,交易明细的图贴不上来
|
-- 作者:jinzhe -- 发布时间:2016/5/31 11:13:13 -- 那你把截图发到qq群,让qq群里面的工作人员把图发上来 |
-- 作者:pyd -- 发布时间:2016/5/31 13:41:27 -- 贴图 ![]() ![]() ![]() ![]() |