以文本方式查看主题

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

--  作者:zkz258
--  发布时间:2017/10/16 16:17:06
--  提前平仓问题

M10:=T0TOTIME(TIMETOT0(CLOSETIME(0))-60*TT); //收盘前TT分钟

平空:SELLSHORT(平空条件 and time>=M10,手数,MARKET);  


上述提前TT分钟平仓代码,使用图表交易,K线是30分钟周期,固定轮询2秒,设定TT=1,原想在收盘前一分钟平仓,即185900动作(使用金字塔时间),但是程序执行结果是在18:30过2秒平仓,也就是30分钟K线完毕就执行,查了很久不知道原因,请老师帮忙解答。



--  作者:wenarm
--  发布时间:2017/10/16 16:40:21
--  

你用的是time,它最候一根k的市价就是190000>M10的条件成立。你要用下面的方式处理

M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟
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

[此贴子已经被作者于2017/10/16 16:40:50编辑过]

--  作者:zkz258
--  发布时间:2017/10/16 16:47:24
--  
哦,明白了,time取的时间不是我想的那样,需要用动态函数207来处理才行,谢谢老师。
[此贴子已经被作者于2017/10/16 16:48:46编辑过]

--  作者:zkz258
--  发布时间:2017/10/16 19:21:36
--  
用老是的代码测试了一下,怎么在30分钟K线上开平仓显示不对啊
--  作者:zkz258
--  发布时间:2017/10/16 20:31:11
--  
不好意思,后面的OR (time=190000 and not(ISLASTBAR)),是我没有加上的time=190000。
但是对这段语句有个疑问:
既然30分钟K线上,time在最后这个K线上取得的是190000,那么这OR  (time=190000 and not(ISLASTBAR))不是也会在18:30过2秒就触发动作了呢

--  作者:wenarm
--  发布时间:2017/10/16 22:08:55
--  
DYNAINFO(207)没有历史值。那就会造成历史上的信号发生变换。time=190000 and not(ISLASTBAR))这个的作用就是为了让成为历史信号的开平仓稳定下来。
not(ISLASTBAR)作用是判断不是最后一根k.