Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:提前平仓问题

1楼
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线完毕就执行,查了很久不知道原因,请老师帮忙解答。


2楼
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编辑过]
3楼
zkz258 发表于:2017/10/16 16:47:24
哦,明白了,time取的时间不是我想的那样,需要用动态函数207来处理才行,谢谢老师。
[此贴子已经被作者于2017/10/16 16:48:46编辑过]
4楼
zkz258 发表于:2017/10/16 19:21:36
用老是的代码测试了一下,怎么在30分钟K线上开平仓显示不对啊
5楼
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秒就触发动作了呢
6楼
wenarm 发表于:2017/10/16 22:08:55
DYNAINFO(207)没有历史值。那就会造成历史上的信号发生变换。time=190000 and not(ISLASTBAR))这个的作用就是为了让成为历史信号的开平仓稳定下来。
not(ISLASTBAR)作用是判断不是最后一根k.
共6 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 3 queries.