以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  收盘平仓  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=164330)

--  作者:yuanman
--  发布时间:2018/7/9 10:41:53
--  收盘平仓
请老师帮助编写,在每天14.59分平所有持仓。谢谢
--  作者:FireScript
--  发布时间:2018/7/9 10:43:56
--  
 if time>=185900 then
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);
end

在日线上time函数失效。这个范例代码也就失效了。
[此贴子已经被作者于2018/7/9 10:46:10编辑过]

--  作者:wenarm
--  发布时间:2018/7/9 11:11:31
--  

参考这个处理方式

收盘前x分钟平仓(分钟级别)
M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟
M15:T0TOTIME(TIMETOT0(CLOSETIME(0))-60*15); //收盘前15分钟
 
 if T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) or (time=190000 and not(ISLASTBAR)) then begin
  sell(1,holding,MARKET);
  sellshort(1,holding,MARKET);
 end
说明:提前的时间必须在最后一根k的范围内。否则采用(time < xxxx  and time > xxxx)的方式进行控制  
 
收盘前x分钟平仓(日线级别)

 if T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) or (not(ISLASTBAR)) then begin
  sell(1,holding,MARKET);
  sellshort(1,holding,MARKET);
 end


--  作者:yuanman
--  发布时间:2018/7/9 11:29:53
--  
谢谢两位老师的解答,我是在5分钟周期上使用,要在收盘前一分钟平仓用这个可以吗?谢谢
 if time>=185900 then
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);
end

--  作者:FireScript
--  发布时间:2018/7/9 11:33:24
--  
那不行的,time的返回值和K线周期直接挂钩。这种情况下建议采用3楼的方法比较好。或者是软件自带的提前下单(走完K模式才允许启用这个功能)
--  作者:wenarm
--  发布时间:2018/7/9 15:44:55
--  
你可以直接分析理解我给你的代码范例。
--  作者:yuanman
--  发布时间:2018/7/9 16:25:20
--  
我直接把老师给的语句复制到模型的交易指令后面。却出现了只要开仓就在开仓的当根K线上平仓的情况,不知什么原因?(游览器原因发不了截图)请老师帮忙。谢谢!
M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟
//M15:T0TOTIME(TIMETOT0(CLOSETIME(0))-60*15); //收盘前15分钟
 
 IF T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) OR (TIME=145900 AND NOT(ISLASTBAR)) THEN BEGIN
  SELL(1,HOLDING,MARKET);
  SELLSHORT(1,HOLDING,MARKET);
 END

--  作者:FireScript
--  发布时间:2018/7/9 16:34:10
--  
 这个你要先判断是不是上面代码触发了。这段代码本身是没有问题的。上面代码在历史K上也是只在下午2点59分才触发。你给出的信息不足以做出判断。
--  作者:yuanman
--  发布时间:2018/7/10 15:37:50
--  

平仓语句不能按时平仓,而且模型不能显示信号,M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟
 IF T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) OR (TIME=145900 AND NOT(ISLASTBAR)) THEN BEGIN
  SELL(1,HOLDING,MARKET);
  SELLSHORT(1,HOLDING,MARKET);
 END
加载后如图;


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


--  作者:yuanman
--  发布时间:2018/7/10 15:53:16
--  
9点加载模型后显示还是正常的,下午3点后再看时就像上图这样了,和昨天不同的是今天虽然每根K线上都有平仓信号显示但却没有平仓指令发出,不过14.59分钟也没有执行平仓。