以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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
--  
贴图
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看